📄 changelog
字号:
in SMP systems. * include/intr.hxx: * src/intr/intr.cxx: Added Cyg_Interrupt::set_cpu() and Cyg_Interrupt::get_cpu() for SMP systems. * include/instrmnt.h: Added events for INTR_GET_CPU and INTR_SET_CPU. 2001-05-29 Nick Garnett <nickg@cygnus.co.uk> The following changes were all imported from the SMP branch: * tests/tm_basic.cxx: Modified to work in SMP configuration - mostly at present by ifdeffing out code I didn't want to fix. * include/sched.hxx: Moved scheduler lock operation into Cyg_Scheduler_SchedLock class. Converted current_thread, need_reschedule, and thread_switches into CPU indexed arrays. Added member functions to get and set these indirectly. Added start_cpu() to do per-CPU scheduler startup. * include/sched.inl: Converted scheduler lock/unlock functions to use new schedlock class. * src/sched/sched.cxx: Changed in line with sched.hxx. Added call to requeue() in unlock_inner() to restore current thread to run queue if necessary. Moved most of scheduler startup to Cyg_Scheduler::start_cpu(). Cyg_Scheduler::start() now also starts secondary CPUs in SMP systems. Added cyg_kernel_smp_startup() as entry point from HAL into kernel for secondary CPUs. * include/mlqueue.hxx: Added Cyg_RunQueue type and removed Cyg_SchedulerThreadQueue_Implementation type. Converted timeslice_count to CPU indexed array. Added requeue() member function to scheduler class. Added cpu member to thread implementation class, to record thread's current CPU. * src/sched/mlqueue.cxx: Changed behaviour when in SMP system to remove scheduled thread from run queue and replace it when preempted. Added some extra asserts, and removed some that are no longer true in an SMP system. * src/instrmnt/meminst.cxx: In SMP systems: added spinlock to protect instrument buffer, added CPU Id in top 4 bits of thread Id field. * src/common/thread.cxx: Converted to use accessor functions for need_reschedule and current_thread. Rearranged idle thread creation to create one for each CPU. * include/test/stackmon.h: Extended to handle stack usage for multiple idle threads. * include/thread.inl: Added some extra instrumentation. * include/smp.hxx: Added this file to contain all kernel SMP support. The main definitions exported by this file are spin lock and scheduler lock implementation classes, for both SMP and uniprocessor configurations. * src/intr/intr.cxx: * include/intr.hxx: Converted interrupt disable counter to CPU indexed array. In intr.cxx: added lock of scheduler lock in interrupt_end() rather than in default interrupt VSR. * cdl/kernel.cdl: Added option to enable SMP support. * include/instrmnt.h: * cdl/instrument.cdl: Added SMP instrumentation. 2001-05-25 Nick Garnett <nickg@cygnus.co.uk> * include/intr.hxx: * src/intr/intr.cxx: Added default definition of CYGNUM_HAL_ISR_TABLE_SIZE. This is now used to declare the chain table so that architectures which have different sizes for the interrupt table and vector count will work correctly. 2001-05-22 Nick Garnett <nickg@cygnus.co.uk> * include/sched.hxx (class Cyg_Scheduler_Base): Added annotation to sched_lock. * cdl/instrument.cdl: Rename CYGNUM_KERNEL_INSTRUMENT_BUFFER_WRAP to CYGDBG_KERNEL_INSTRUMENT_BUFFER_WRAP as it appears in the code.2001-07-27 Jesper Skov <jskov@redhat.com> * src/intr/intr.cxx (chain_isr): Return isr_ret so caller (which may be an arbiter) can tell if the interrupt was handled.2001-07-26 Gary Thomas <gthomas@redhat.com> * src/common/clock.cxx (dsr): Fix problems mixing signed and unsigned values. Normally only generated warnings, but...2001-07-09 Jonathan Larmour <jlarmour@redhat.com> * include/sched.inl (unlock_reschedule): Fix commenting. * src/sched/sched.cxx: Improve description of unlock_inner().2001-06-21 Jonathan Larmour <jlarmour@redhat.com> * src/common/thread.cxx (Cyg_Thread::Cyg_Thread): Initialize wakeup_count2001-06-06 Hugo Tyson <hmt@redhat.com> * tests/clocktruth.cxx: New file. A test to get a sanity check on whether the clock is accurate to wallclock time, only useful for humans to watch really. But important!2001-05-31 Jonathan Larmour <jlarmour@redhat.com> * include/thread.hxx (class Cyg_HardwareThread): Remove unused load_context() method. * include/thread.inl: Ditto.2001-05-29 Jonathan Larmour <jlarmour@redhat.com> * src/sched/bitmap.cxx (rem_thread): No need to set need_reschedule... rescheduling will happen automatically when the state changes. * src/sched/mlqueue.cxx (add_thread): No need to explicitly clear thread->queue.2001-04-26 Nick Garnett <nickg@cygnus.co.uk> * tests/intr0.cxx: * tests/kintr0.c: Fixed these two tests so that they work properly on architectures where CYGNUM_HAL_ISR_MIN is not zero. These include the x86 and V850.2001-04-18 Bart Veer <bartv@redhat.com> * tests/dhrystone.c: Fix the conditional for STDIO_FORMATTED_IO2001-04-17 Bart Veer <bartv@redhat.com> * tests/stress_threads.c (setup_death_alarm): Cope with synthetic target reorg * tests/except1.cxx, tests/kexcept1.c: Reenable for the synthetic target * tests/tm_basic.cxx: Reenable for the synthetic target2001-04-17 Jesper Skov <jskov@redhat.com> * cdl/kernel.cdl: Do cache tests on E7T.2001-04-05 Nick Garnett <nickg@cygnus.co.uk> * tests/flag1.cxx: Apply same changes here as were applied to kflag1 on 2000-07-17. This allows this test to run to completion in slow targets, especially simulators. * tests/stress_threads.c: Reduce run time even further in simulator runs where instrumentation is enabled.2001-04-03 Jesper Skov <jskov@redhat.com> * tests/dhrystone.c: Fix feature check.2001-03-28 Jonathan Larmour <jlarmour@redhat.com> * cdl/kernel.cdl: Only need to compile dbg_gdb.cxx with CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT * src/debug/dbg_gdb.cxx: Add new dbg_thread_id() function.2001-02-23 Jonathan Larmour <jlarmour@redhat.com> * include/thread.inl (attach_stack): Check for non-NULL stack base.2001-02-11 Jonathan Larmour <jlarmour@redhat.com> * tests/stress_threads.c: CYGINT_ISO_STDIO_FORMATTED_IO needs a #ifdef not an #if. * tests/dhrystone.c: Ditto.2001-02-04 Jonathan Larmour <jlarmour@redhat.com> * tests/kill.cxx: Increase delay for all targets, just in case some are slow.2001-01-30 Hugo Tyson <hmt@redhat.com> * src/common/clock.cxx (rem_alarm): Must clear the enabled flag; this disappeared in the changes to using clists of 2001-01-09. Symptom was that an alarm, once disabled, could never be re-attached to its counter because it claimed it already was. Plus asserts with multiple disables - "bad counter object".2001-01-30 Hugo Tyson <hmt@redhat.com> * src/common/thread.cxx (reinitialize): Following change of 2000-12-05, if CYGFUN_KERNEL_THREADS_STACK_CHECKING, this was using the stack_base/stack_size variables directly to reinitialize the stack area. This was wrong, and leaked store off the top and bottom of the stacks because the "buffer zone" was carved off repeatedly. Fix is to use the published APIs which compensate.2001-01-26 Nick Garnett <nickg@cygnus.co.uk> * include/mlqueue.hxx: * src/sched/mlqueue.cxx: Restored Cyg_ThreadQueue_Implementation::remove() since it must clear the thread's queue pointer, which the base clist class remove() does not.2001-01-24 Jesper Skov <jskov@redhat.com> * src/sched/mlqueue.cxx (highpri): Fix trace call.2001-01-09 Nick Garnett <nickg@cygnus.co.uk> * include/mlqueue.hxx: * src/sched/mlqueue.cxx: Converted to use clist.hxx list implementation. The main effect of this is to clean up the code and class definitions since much of what was part of the thread queue and thread classes now moves to the DNode and CList classes. * include/clock.hxx: * src/common/clock.cxx: Converted to use clist.hxx list implementation. This removes all the explicit list manipulation code from the counter and alarm classes, resulting in cleaner, easier to understand code. * include/kapidata.h: Adjusted cyg_alarm struct to match Cyg_Alarm using Cyg_DNode. 2000-12-22 Jonathan Larmour <jlarmour@redhat.com> * include/thread.inl (check_stack): check word alignment with CYG_WORD not cyg_uint32 Add extra stack checking for when stack limits are used. (measure_stack_usage): New function to measure stack usage of the thread (attach_stack): check word alignment with CYG_WORD not cyg_uint32 Initialize stack to preset value when measuring stack usage (increment_stack_limit): Conditionalize here wrt CYGFUN_KERNEL_THREADS_STACK_CHECKING and use the version in thread.cxx instead if CYGFUN_KERNEL_THREADS_STACK_CHECKING is defined. * src/common/thread.cxx (exit): If verbose stack measurement enabled, output stack usage (increment_stack_limit): Add version of this method when CYGFUN_KERNEL_THREADS_STACK_CHECKING *is* defined. This will add padding above the stack limit as necessary. * include/thread.hxx (class Cyg_HardwareThread): Add measure_stack_usage() member * cdl/thread.cdl (CYGFUN_KERNEL_THREADS_STACK_MEASUREMENT): Add to implement stack usage measurement. * include/kapi.h (cyg_thread_measure_stack_usage): New function * src/common/kapi.cxx (cyg_thread_measure_stack_usage): New function2000-12-08 Jonathan Larmour <jlarmour@redhat.com> * cdl/thread.cdl (CYGFUN_KERNEL_ALL_THREADS_STACK_CHECKING): Requires threads list, rather than active_if them so that inference engine can do its thang.2000-12-07 Jesper Skov <jskov@redhat.com> * src/debug/dbg-thread-demux.c: Add comment about the use of DBG_SYSCALL_THREAD_VEC_NUM vs CYGNUM_CALL_IF_DBG_SYSCALL.2000-12-06 Hugo Tyson <hmt@redhat.com> * include/thread.inl (attach_stack): Additional assert check for unsigned wrap of the stack size in subtracting the signature areas' size. Also round to whole words better.2000-12-05 Hugo Tyson <hmt@redhat.com> * cdl/thread.cdl (CYGFUN_KERNEL_THREADS_STACK_CHECKING): New option, to control new stack check features. Enabled by default, but only active if CYGPKG_INFRA_DEBUG and CYGDBG_USE_ASSERTS anyway, plus checking *all* threads is possible, but default off, iff CYGVAR_KERNEL_THREADS_LIST. * include/thread.hxx (class Cyg_HardwareThread): Define check_stack() function. * include/thread.inl (attach_stack): Add initialization of a signature in the top and base of the stack, if so configured. (check_stack): New function to check that signature for correctness; minor re-ordering to permit more inlining. * src/sched/sched.cxx (unlock_inner): Check departing and incoming thread stacks if CYGFUN_KERNEL_THREADS_STACK_CHECKING. Also, if CYGFUN_KERNEL_ALL_THREADS_STACK_CHECKING, check all registered thread stacks. This is placed here to get executed every clocktick and other interrupts that call DSRs, rather than messing with interrupt_end() or the idle thread.2000-12-04 Hugo Tyson <hmt@redhat.com> * tests/kcache2.c (entry0): Make this more robust against a complete absence of useful caches. Previous change was not careful enough.2000-12-01 Hugo Tyson <hmt@redhat.com> * cdl/kernel.cdl: Build the kcache tests for SA11x0 family; they were being omitted by default as part of ARM family. They work on SA1110, so this should be OK. They're OK on EBSAs too. See associated fix to cache macros in SA11x0 and EBSSA HALs. * tests/kcache2.c (entry0): Fix the test; the problem was it assumed that a write to a previously unseen location would end up in the cache. It ain't so on StrongARMs. Also make tests safe wrt interrupts possibly perturbing the cache, add explicit tests for HAL_DCACHE_INVALIDATE_ALL(), ...DISABLE() and ...SYNC(), and improve the tests for cache line invalidate and store.2000-10-30 Jesper Skov <jskov@redhat.com> * cdl/synch.cdl: Replaced CYGINT_KERNEL_SCHEDULER_CAN_YIELD with CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES. * cdl/scheduler.cdl: CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL requires CYGINT_KERNEL_SCHEDULER_UNIQUE_PRIORITIES. * tests/thread2.cxx: Use new option. * tests/klock.c: Same. * src/common/thread.cxx: Same. * src/common/clock.cxx: Same. * include/bitmap.hxx: Leave unique priority setting to CDL. * include/mlqueue.hxx: Same. * include/sched.hxx: Let CDL do sanity check of config.2000-10-27 Jesper Skov <jskov@redhat.com> * cdl/scheduler.cdl: Added CYGINT_KERNEL_SCHEDULER_CAN_YIELD * tests/klock.c: Avoid use of disabled features. Require scheduler that can yield.2000-10-20 Jonathan Larmour <jlarmour@redhat.com> * tests/bin_sem0.cxx: * tests/bin_sem1.cxx: * tests/bin_sem2.cxx: * tests/clock0.cxx: * tests/clock1.cxx: * tests/clockcnv.cxx: * tests/cnt_sem0.cxx: * tests/cnt_sem1.cxx: * tests/except1.cxx: * tests/flag0.cxx: * tests/flag1.cxx: * tests/intr0.cxx: * tests/kill.cxx: * tests/mbox1.cxx: * tests/mqueue1.cxx: * tests/mutex0.cxx: * tests/mutex1.cxx: * tests/mutex2.cxx: * tests/mutex3.cxx: * tests/philo.cxx:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -