📄 changelog
字号:
* tests/release.cxx: * tests/sched1.cxx: * tests/sync2.cxx: * tests/sync3.cxx: * tests/testaux.hxx: * tests/thread0.cxx: * tests/thread1.cxx: * tests/thread2.cxx: * tests/tm_basic.cxx: Make sure default priority constructors have been invoked. * include/intr.hxx (class Cyg_Interrupt): Make dsr_count volatile to prevent a potential race condition with overzealous C compilers.2000-10-13 Nick Garnett <nickg@cygnus.co.uk> * src/sched/sched.cxx (unlock_inner): Added condition to test for DSRs to only call DSRs when the scheduler lock is making a 0->1 transition. Otherwise there is the danger of calling DSRs when the scheduler lock is > 1. This violates our original assumptions about how the scheduler lock worked with respect to DSR. * src/intr/intr.cxx (call_pending_DSRs): Added assert to check that DSRs are only called when the scheduler lock is exactly 1.2000-10-13 Jesper Skov <jskov@redhat.com> * include/intr.hxx: Fixing syntax mistake; volatile keyword must appear after the type for it to affect the pointer variable. * src/intr/intr.cxx: Same. Remove volatile from local block.2000-10-05 Jesper Skov <jskov@redhat.co.uk> * src/intr/intr.cxx: Made dsr_table_tail volatile as well. * include/intr.hxx: Ditto.2000-10-05 Nick Garnett <nickg@cygnus.co.uk> * src/sched/sched.cxx: * include/sched.hxx: Converted asr_inhibit from a bool to a counter. This is necessary to permit nesting of ASR inhibiting functions.2000-10-04 Jesper Skov <jskov@redhat.co.uk> * include/intr.hxx: Made dsr_list volatile. * src/intr/intr.cxx: Same. Also fix compiler warning.2000-09-25 Nick Garnett <nickg@cygnus.co.uk> * src/sched/mlqueue.cxx: Added test for current thread not runnable in Cyg_Scheduler_Implementation::timeslice(). This is possible if a prior DSR has caused the current thread to be descheduled. Added an assert to Cyg_ThreadQueue_Implementation::rotate() for additional paranoia. (This problem was originally identified and fixed (differently) by Andrew Lunn <andrew.lunn@ascom.ch>.)2000-09-13 Jesper Skov <jskov@redhat.com> * tests/kexcept1.c (cause_exception): Use separate cause_fpe function. * tests/except1.cxx (cause_exception): Same. * tests/kexcept1.c (cause_exception): Do not use division at all. * tests/except1.cxx (cause_exception): Same. * tests/kexcept1.c (cause_exception): Do not cause div-by-zero. * tests/except1.cxx (cause_exception): Same.2000-09-11 Jonathan Larmour <jlarmour@redhat.com> * cdl/instrument.cdl (CYGVAR_KERNEL_INSTRUMENT_EXTERNAL_BUFFER): Bring this option back from the dead2000-09-08 Nick Garnett <nickg@cygnus.co.uk> * include/sched.hxx: * include/sched.inl: Added Cyg_Scheduler::unlock_reschedule() function. This decrements the scheduler lock by one but also permits the current thread to be rescheduled if it ready to sleep, or there is a higher priority thread ready to run. This is to support use of various synchronization objects while the scheduler lock is claimed. * src/sched/sched.cxx (unlock_inner): Modified precondition to allow for functionality of unlock_reschedule(). * src/sched/mlqueue.cxx: Now uses Cyg_SchedulerThreadQueue_Implementation for all runqueue pointers. It was using Cyg_ThreadQueue_Implementation in some places which meant we were trying to sort the run queues! Changed yield() so it can be called with the scheduler lock claimed. Changed Cyg_Scheduler_Implementation::timeslice() to rotate the queue itself rather than call yield(). The changes to yield() make it unsafe to call here any more. * include/mlqueue.hxx (class Cyg_SchedulerThreadQueue_Implementation): Made enqueue() member public. * include/mboxt2.inl: * src/common/thread.cxx: * src/sync/mutex.cxx: * src/sync/cnt_sem2.cxx: Removed assertions for zero scheduler lock and replaced some invocations of Cyg_Scheduler::unlock() with Cyg_Scheduler::unlock_reschedule() or Cyg_Scheduler::reschedule() where appropriate. * tests/klock.c: * cdl/kernel.cdl: Added klock.c to test functionality while scheduler lock is claimed.2000-08-17 Hugo Tyson <hmt@cygnus.co.uk> * src/sched/sched.cxx (unlock_inner): Move an assert to some place where it's true *all* the time! There was a narrow margin where a DSR could confuse unlock_inner() by reanimating the current thread before it had a chance to sleep - hence the call appears to be pointless. Putting the assert before the DSR calls makes sense. * include/mboxt.inl: * src/sync/bin_sem.cxx: * src/sync/cnt_sem.cxx: * src/sync/flag.cxx: * src/sync/mutex.cxx: All of these now use Cyg_Scheduler::reschedule() rather than an unlock/lock pair to yield in their functions which can sleep. They therefore can be called safely and atomically with the scheduler already locked. This is a Good Thing[tm]. Since the network stack synch primitives now use this feature, the asserts that the scheduler was not locked must disappear: this change.2000-08-07 Jonathan Larmour <jlarmour@redhat.co.uk> * include/mutex.hxx (class Cyg_Mutex): Add comment explaining presence of locked.2000-08-04 Jonathan Larmour <jlarmour@redhat.co.uk> * tests/stress_threads.c (STACK_SIZE_HANDLER): Increase stack sizes otherwise it crashes!2000-07-31 Jonathan Larmour <jlarmour@redhat.co.uk> * include/mempolt2.hxx: As per change of 2000-07-04, also delete - left behind accidentally2000-07-20 Nick Garnett <nickg@cygnus.co.uk> * include/mutex.hxx (class Cyg_Mutex): Added get_ceiling() accessor function. * src/sched/mlqueue.cxx: Fixed bug in sorted queue code that resulted in an infinite loop if the thread being inserted is of lower priority than all threads in the queue. This case is now detected early.2000-07-17 Gary Thomas <gthomas@redhat.com> * tests/kflag1.c (FIRST_THREAD_WAIT_TIME): Parameterize thread synchronization wait times (for understanding) and adjust for incredibly slow platforms. [Previous value allowed for the test to get out of sync because the code ran so slowly]2000-07-04 Jonathan Larmour <jlarmour@redhat.co.uk> * cdl/kernel.cdl: Remove all configury related to memory allocators, including tests. Make CYGFUN_KERNEL_API_C require CYGFUN_MEMALLOC_KAPI * include/memfixed.hxx, include/mempolt2.inl, include/mempoolt.hxx, include/mempoolt.inl, include/memvar.hxx, include/mfiximpl.hxx, include/mfiximpl.inl, include/mvarimpl.hxx, include/mvarimpl.inl, src/mem/memfixed.cxx, src/mem/memvar.cxx, tests/kmemfix1.c, tests/kmemvar1.c, tests/memfix1.cxx, tests/memfix2.cxx, tests/memvar1.cxx, tests/memvar2.cxx: Move to separate memory allocator package CYGPKG_MEMALLOC * include/kapi.h, include/kapidata.h, src/common/kapi.cxx: Remove memory allocator functionality - now implemented in CYGPKG_MEMALLOC * tests/dhrystone.c: Update configuration dependencies for new isoinfra design * tests/stress_threads.c: Likewise. Also fix early termination after DEATH_TIME_LIMIT so that allocated resources are freed, and so more appropriate statistics are reported Also update to use mallinfo() interface to memory allocator2000-06-23 Hugo Tyson <hmt@cygnus.co.uk> * include/kapi.h (cyg_scheduler_read_lock): New function, to return the value of the scheduler lock; this for implementing SPLX in the network stack. * src/common/kapi.cxx (cyg_scheduler_read_lock): New function.2000-06-20 Nick Garnett <nickg@cygnus.co.uk> * src/sched/mlqueue.cxx (Cyg_ThreadQueue_Implementation::enqueue): Rewrote code to insert threads into priority sorted queue. The original code could not cope with a queue all of whose members were lower priority than the new thread - it looped for ever. Also provided fast paths for common and easily detected cases such as adding to a single element queue and adding at the front. By taking these cases out early, we can also simplify the code to search the queue.2000-06-16 Gary Thomas <gthomas@redhat.com> * cdl/kernel.cdl: Remove exception tests for CMA230 - not supported by hardware.2000-06-16 Jesper Skov <jskov@redhat.com> * src/intr/intr.cxx (chain_isr): Only call default_isr if no isrs in the chain reacted to the interrupt.2000-06-15 Nick Garnett <nickg@cygnus.co.uk> * include/mutex.hxx (class Cyg_Condition_Variable): Added an inline function, get_queue(), to return a pointer to the underlying thread queue. To be used mainly for comparing with a thread's current queue to decide whether it is waiting for a condition variable. * include/kapi.h: * src/common/kapi.cxx: Changed return type of cyg_semaphore_wait() to match existing behaviour of Cyg_Counting_Semaphore::wait(). Changed return type of cyg_cond_wait() to match new behaviour of Cyg_Condition_Variable::wait().2000-06-09 Nick Garnett <nickg@cygnus.co.uk> * include/mutex.hxx: * src/sync/mutex.cxx: Modified non-timeout condition variable wait() API to return cyg_bool. A true result indicates that the wait() terminated normally. A false result indicates that the wait() was terminated as a result of a release() or destroy operation. For most uses this distinction is irrelevant, but in some situations it is a useful bit of information to have. Also modified timeout condition variable wait to reacquire the mutex under all circumstances. This is the correct and consistent thing to do.2000-06-08 Jesper Skov <jskov@redhat.com> * src/debug/dbg-thread-demux.c: Use generic HAL feature to allow ROM/RAM intercalling.2000-06-06 Jesper Skov <jskov@redhat.com> * tests/kcache1.c (entry0): Skip invalidate tests on TX49. Too slow.2000-05-30 Gary Thomas <gthomas@redhat.com> * tests/dhrystone.c: Increase number of test loops for faster StrongARM platforms.2000-05-22 Jonathan Larmour <jlarmour@redhat.co.uk> * cdl/scheduler.cdl (CYGIMP_KERNEL_SCHED_SORTED_QUEUES): Disable by default * src/sched/mlqueue.cxx (enqueue): Add to end of thread queue even when not priority ordered2000-05-20 Jonathan Larmour <jlarmour@redhat.co.uk> * include/mqueue.hxx, include/mqueue.inl: Add POSIX-style message queue implementation * cdl/kernel.cdl: Add mqueue1 test * cdl/scheduler.cdl: Add new CYGIMP_KERNEL_SCHED_SORTED_QUEUES option * include/sema.hxx: Need thread.inl header, not just thread.hxx Make Cyg_Counting_Semaphore::peek() const since it is * src/sync/cnt_sem.cxx, src/sync/cnt_sem2.cxx, include/sema2.hxx: Make Cyg_Counting_Semaphore{2}::peek() const since it is * include/thread.hxx: don't want Cyg_Thread_queue::empty() to be marked inline in the class def, otherwise we get warnings elsewhere * include/mlqueue.hxx (Cyg_ThreadQueue_Implementation): Add set_thread_queue private method Add derived class Cyg_SchedulerThreadQueue_Implementation, and make scheduler implementation use it instead of Cyg_ThreadQueue_Implementation * src/mlqueue.cxx: Fix typo Support CYGIMP_KERNEL_SCHED_SORTED_QUEUES, i.e. allow insertion into thread queue in order of thread priority, with oldest at the front (Cyg_ThreadQueue_Implementation::set_thread_queue): Add (Cyg_SchedulerThreadQueue_Implementation::enqueue): Add, like old one, except make it FIFO instead of LIFO by inserting at end of queue2000-05-16 Jesper Skov <jskov@redhat.com> * tests/dhrystone.c: More loops on the TX492000-05-15 Jonathan Larmour <jlarmour@redhat.co.uk> * cdl/counters.cdl (CYGVAR_KERNEL_COUNTERS_CLOCK_DSR_LATENCY): Default to CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY2000-05-04 Jonathan Larmour <jlarmour@redhat.co.uk> * include/instrmnt.h: Remove all CYG_UNUSED_PARAMs as they could cause problems when used with volatile arguments * src/intr/intr.cxx: Use CYG_UNUSED_PARAM to silence warning that appears because of the above change.2000-05-02 Gary Thomas <gthomas@redhat.com> * tests/kintr0.c: * tests/intr0.cxx: Correct test for cases when VSR_MIN or ISR_MIN are not zero (bad assumption).2000-05-02 Jonathan Larmour <jlarmour@redhat.co.uk> * cdl/thread.cdl (CYGNUM_KERNEL_THREADS_DATA_LIBC): Don't need libc slot. Replace with CYGNUM_KERNEL_THREADS_DATA_ERRNO slot instead. 2000-04-28 Nick Garnett <nickg@cygnus.co.uk> * src/sched/sched.cxx (unlock_inner): A significant change to the behaviour of this function. The new_lock argument contains the value that the scheduler lock should have after this function has completed. If it is zero then the lock is being released and some extra work (running ASRs, checking for DSRs) is done before returning. If it is non-zero then it must equal the current value of the lock, and is used to indicate that we want to reacquire the scheduler lock before returning. This latter option only makes any sense if the current thread is no longer runnable, otherwise this function will do nothing. The result of this is that where we used to "blip" the scheduler lock to force a sleep, we now call reschedule(), which calls unlock_inner() with the current sched_lock value. The important difference is that there is not now the brief window between the calls where the lock is unclaimed. It also prevents ASRs being run at inopportune moments. In future this will also allow us to force threads to sleep even when they are deeply nested in the scheduler lock. * include/mutex.hxx: Added Cyg_Mutex::get_owner() to return pointer to owning thread. * include/sched.hxx: * include/sched.inl: Added new_lock argument to unlock_inner(), added reschedule(). Made set_asr_inhibit() and clear_asr_inhibit() available even when ASRs are disabled. * include/mboxt.inl: * src/sync/bin_sem.cxx: * src/sync/cnt_sem.cxx: * src/sync/flag.cxx: * src/sync/mutex.cxx: Converted instances of "blipping" the scheduler lock into calls to Cyg_Scheduler::reschedule(), which is better behaved. Some calls to set_asr_inhibit() and clear_asr_inhibit() also added in various places.2000-04-26 Jesper Skov <jskov@redhat.com> * tests/kcache1.c: Also to flush testing with unified caches.2000-04-26 Jesper Skov <jskov@redhat.com> * tests/clockcnv.cxx: * tests/dhrystone.c: Renamed 850 HAL package. 2000-04-25 Jesper Skov <jskov@redhat.com> * tests/kcache1.c: Fixed cache check to also look for unified
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -