#
367457 |
|
07-Nov-2020 |
dim |
MFC r344855 (by jhb):
Drop "All rights reserved" from my copyright statements.
Reviewed by: rgrimes Differential Revision: https://reviews.freebsd.org/D19485
|
#
343545 |
|
29-Jan-2019 |
delphij |
MFC r343038: Use TD_IS_IDLETHREAD instead of unrolled version.
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
295098 |
|
31-Jan-2016 |
andrew |
Fix the logic in the ddb command 'show ktr /a'. Prior to r118269 it would print until cncheckc returned a non -1, i.e. a character had been entered. After this change it would print only if cncheckc returned a character. As this was before each call to db_mach_vtrace the normal outcome was nothing was printed.
With this change 'show ktr /a' will now keep printing until the user stops the command with a key press, or there is no more entries to print.
|
#
292943 |
|
30-Dec-2015 |
marius |
- (Ab)use udivx for dividing the u_int pc_cpuid when implementing CPU_ISSET(), CPU_SET etc. in sparc64 asm. This approach has the benefit of not clobbering %y, allowing to revert r222827 and partially r222828. - In r222828, CATR() already was changed to use the equivalent of PCPU_GET(cpuid) instead of the MD module ID for KTR_CPU, so belatedly also catch up with the C side of ktr(9). Originally, in r203838 CATR() was moved away from directly reading the module ID or equivalent as that became impractical with other CPU types than USI/II supported. With r222828 in place, per-CPU data generally is set up soon enough, though, that employing PCPU things in ktr(9) also for use during early stages works. - Unfortunately, an exception to the latter is the ktr(9) use in pmap_bootstrap(), which actually is run so early that even checking for bootverbose being set via the loader doesn't work. Consequently, replace the ktr(9) use in pmap_bootstrap() with OF_printf(9) and put it under #ifdef DIAGNOSTIC instead.
MFC after: 3 days
|
#
283283 |
|
22-May-2015 |
jhb |
Expand ktr_mask to be a 64-bit unsigned integer.
The mask does not really need to be updated with atomic operations and the downside of losing races during transitions is not great (it is not marked volatile, so those races are pretty wide open as it is).
Differential Revision: https://reviews.freebsd.org/D2595 Reviewed by: emaste, neel, rpaulo MFC after: 2 weeks
|
#
268186 |
|
02-Jul-2014 |
marcel |
Drop KTR records when we're in the debugger so that the debugger isn't changing or overwriting the trace buffer. When KTR is enabled for things like traps or pmap functions, the amount of logging can be substantial.
|
#
268005 |
|
28-Jun-2014 |
hselasky |
Compile fixes:
Remove duplicate "debug_ktr.mask" sysctl definition. Remove now unused variable from "kern_ktr.c". This fixes build of "ktr" which was broken by r267961.
Let the default value for "vm_kmem_size_scale" be zero. It is setup after that the sysctl has been initialized from "getenv()" in the "kmeminit()" function to equal the "VM_KMEM_SIZE_MAX" value, if zero. On Sparc64 the "VM_KMEM_SIZE_MAX" macro is not a constant. This fixes build of Sparc64 which was broken by r267961.
Add a special macro to dynamically create SYSCTL root nodes, because root nodes have a special parent. This fixes build of existing OFED module and CANBUS module for pc98 which was broken by r267961.
Add missing "sysctl.h" includes to get the needed sysctl header file declarations. This is needed after r267961.
MFC after: 2 weeks
|
#
267992 |
|
28-Jun-2014 |
hselasky |
Pull in r267961 and r267973 again. Fix for issues reported will follow.
|
#
267985 |
|
27-Jun-2014 |
gjb |
Revert r267961, r267973:
These changes prevent sysctl(8) from returning proper output, such as:
1) no output from sysctl(8) 2) erroneously returning ENOMEM with tools like truss(1) or uname(1) truss: can not get etype: Cannot allocate memory
|
#
267961 |
|
27-Jun-2014 |
hselasky |
Extend the meaning of the CTLFLAG_TUN flag to automatically check if there is an environment variable which shall initialize the SYSCTL during early boot. This works for all SYSCTL types both statically and dynamically created ones, except for the SYSCTL NODE type and SYSCTLs which belong to VNETs. A new flag, CTLFLAG_NOFETCH, has been added to be used in the case a tunable sysctl has a custom initialisation function allowing the sysctl to still be marked as a tunable. The kernel SYSCTL API is mostly the same, with a few exceptions for some special operations like iterating childrens of a static/extern SYSCTL node. This operation should probably be made into a factored out common macro, hence some device drivers use this. The reason for changing the SYSCTL API was the need for a SYSCTL parent OID pointer and not only the SYSCTL parent OID list pointer in order to quickly generate the sysctl path. The motivation behind this patch is to avoid parameter loading cludges inside the OFED driver subsystem. Instead of adding special code to the OFED driver subsystem to post-load tunables into dynamically created sysctls, we generalize this in the kernel.
Other changes: - Corrected a possibly incorrect sysctl name from "hw.cbb.intr_mask" to "hw.pcic.intr_mask". - Removed redundant TUNABLE statements throughout the kernel. - Some minor code rewrites in connection to removing not needed TUNABLE statements. - Added a missing SYSCTL_DECL(). - Wrapped two very long lines. - Avoid malloc()/free() inside sysctl string handling, in case it is called to initialize a sysctl from a tunable, hence malloc()/free() is not ready when sysctls from the sysctl dataset are registered. - Bumped FreeBSD version to indicate SYSCTL API change.
MFC after: 2 weeks Sponsored by: Mellanox Technologies
|
#
263651 |
|
22-Mar-2014 |
neel |
Don't lose track of the KTR entries copied from 'ktr_buf_init[]' to the dynamically allocated 'ktr_buf[]'.
The memcpy arranges 'ktr_buf[]' such that the latest KTR entry is at 'KTR_BOOT_ENTRIES - 1'.
|
#
261520 |
|
05-Feb-2014 |
jhb |
Drop the 3rd clause from all 3 clause BSD licenses where I am the sole holder to convert them to 2 clause BSD licenses.
MFC after: 1 week
|
#
246530 |
|
08-Feb-2013 |
avg |
ktr: correctly handle possible wrap-around in the boot buffer
Older entries should be 'before' newer entries in the new buffer too and there should be no zero-filled gap between them.
Pointed out by: jhb MFC after: 3 days X-MFC with: r246282
|
#
246331 |
|
04-Feb-2013 |
avg |
ktr: prevent possible footshooting with KTR_ENTRIES and KTR_BOOT_ENTRIES
Suggested by: adrian MFC after: 14 days X-MFC with: r246282
|
#
246330 |
|
04-Feb-2013 |
avg |
ktr: copy content from the early static buffer if KTR_ENTRIES != KTR_BOOT_ENTRIES
Reported by: glebius, jhb Pointyhat to: avg MFC after: 14 days X-MFC with: r246282
|
#
246282 |
|
03-Feb-2013 |
avg |
allow for large KTR_ENTRIES values by allocating ktr_buf using malloc(9)
Only during very early boot, before malloc(9) is functional (SI_SUB_KMEM), the static ktr_buf_init is used. Size of the static buffer is determined by a new kernel option KTR_BOOT_ENTRIES. Its default value is 1024.
This commit builds on top of r243046.
Reviewed by: alc MFC after: 17 days
|
#
243971 |
|
07-Dec-2012 |
alfred |
Use uint instead of int for flags exported via sysctl.
|
#
243046 |
|
14-Nov-2012 |
jeff |
- Implement run-time expansion of the KTR buffer via sysctl. - Implement a function to ensure that all preempted threads have switched back out at least once. Use this to make sure there are no stale references to the old ktr_buf or the lock profiling buffers before updating them.
Reviewed by: marius (sparc64 parts), attilio (earlier patch) Sponsored by: EMC / Isilon Storage Division
|
#
239923 |
|
30-Aug-2012 |
attilio |
Post r222812 KTR_CPUMASK started being initialized only as a tunable handler and not more statically.
Unfortunately, it seems that this is not ideal for new platform bringup and boot low level development (which needs ktr_cpumask to be effective before tunables can be setup).
Because of this, add a way to statically initialize cpusets, by passing an list of initializers, divided by commas. Also, provide a way to enforce an all-set mask, for above mentioned initializers.
This imposes some differences on how KTR_CPUMASK is setup now as a kernel option, and in particular this makes the words specifications backward wrt. what is currently in -CURRENT. In order to avoid mismatches between KTR_CPUMASK definition and other way to setup the mask (tunable, sysctl) and to print it, change the ordering how cpusetobj_print() and cpusetobj_scan() acquire the words belonging to the set. Please give a look to sys/conf/NOTES in order to understand how the new format is supposed to work.
Also, ktr manpages will be updated shortly by gjb which volountereed for this.
This patch won't be merged because it changes a POLA (at least from the theoretical standpoint) and this is however a patch that proves to be effective only in development environments.
Requested by: rpaulo Reviewed by: jeff, rpaulo
|
#
238925 |
|
30-Jul-2012 |
davide |
Until now KTR_ENTRIES, which defines the size of circular buffer used in ktr(4), was constrained to be a power of two. Remove this constraint and update sys/conf/NOTES accordingly.
Reviewed by: jhb Approved by: gnn (mentor) Sponsored by: Google Summer of Code 2012
|
#
229272 |
|
02-Jan-2012 |
ed |
Use strchr() and strrchr().
It seems strchr() and strrchr() are used more often than index() and rindex(). Therefore, simply migrate all kernel code to use it.
For the XFS code, remove an empty line to make the code identical to the code in the Linux kernel.
|
#
227309 |
|
07-Nov-2011 |
ed |
Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.
The SYSCTL_NODE macro defines a list that stores all child-elements of that node. If there's no SYSCTL_DECL macro anywhere else, there's no reason why it shouldn't be static.
|
#
222813 |
|
07-Jun-2011 |
attilio |
etire the cpumask_t type and replace it with cpuset_t usage.
This is intended to fix the bug where cpu mask objects are capped to 32. MAXCPU, then, can now arbitrarely bumped to whatever value. Anyway, as long as several structures in the kernel are statically allocated and sized as MAXCPU, it is suggested to keep it as low as possible for the time being.
Technical notes on this commit itself: - More functions to handle with cpuset_t objects are introduced. The most notable are cpusetobj_ffs() (which calculates a ffs(3) for a cpuset_t object), cpusetobj_strprint() (which prepares a string representing a cpuset_t object) and cpusetobj_strscan() (which creates a valid cpuset_t starting from a string representation). - pc_cpumask and pc_other_cpus are target to be removed soon. With the moving from cpumask_t to cpuset_t they are now inefficient and not really useful. Anyway, for the time being, please note that access to pcpu datas is protected by sched_pin() in order to avoid migrating the CPU while reading more than one (possible) word - Please note that size of cpuset_t objects may differ between kernel and userland. While this is not directly related to the patch itself, it is good to understand that concept and possibly use the patch as a reference on how to deal with cpuset_t objects in userland, when accessing kernland members. - KTR_CPUMASK is changed and now is represented through a string, to be set as the example reported in NOTES.
Please additively note that no MAXCPU is bumped in this patch, but private testing has been done until to MAXCPU=128 on a real 8x8x2(htt) machine (amd64).
Please note that the FreeBSD version is not yet bumped because of the upcoming pcpu changes. However, note that this patch is not targeted for MFC.
People to thank for the time spent on this patch: - sbruno, pluknet and Nicholas Esborn (nick AT desert DOT net) tested several revision of the patches and really helped in improving stability of this work. - marius fixed several bugs in the sparc64 implementation and reviewed patches related to ktr. - jeff and jhb discussed the basic approach followed. - kib and marcel made targeted review on some specific part of the patch. - marius, art, nwhitehorn and andreast reviewed MD specific part of the patch. - marius, andreast, gonzo, nwhitehorn and jceel tested MD specific implementations of the patch. - Other people have made contributions on other patches that have been already committed and have been listed separately.
Companies that should be mentioned for having participated at several degrees: - Yahoo! for having offered the machines used for testing on big count of CPUs. - The FreeBSD Foundation for having sponsored my devsummit attendance, which has been instrumental. - Sandvine for having offered offices and infrastructure during development.
(I really hope I didn't forget anyone, if it happened I apologize in advance).
|
#
219028 |
|
25-Feb-2011 |
netchild |
Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ PMC/SYSV/...).
No FreeBSD version bump, the userland application to query the features will be committed last and can serve as an indication of the availablility if needed.
Sponsored by: Google Summer of Code 2010 Submitted by: kibab Reviewed by: arch@ (parts by rwatson, trasz, jhb) X-MFC after: to be determined in last commit with code from this project
|
#
210337 |
|
21-Jul-2010 |
attilio |
Probabilly defaulting to KTR_GEN is not the right decision when KTR_MASK is not defined at all because KTR_GEN is still a valid class and some traces may fit in. Default to 0, instead, and block any tracing.
As long as this is a POLA violation (some thirdy-part code, even if that may be a questionable choice, could be rely on that feature) a MFC possibility might be carefully evaluated.
Sponsored by: Sandvine Incorporated
|
#
206632 |
|
14-Apr-2010 |
julian |
Change the semantics of the debug.ktr.alq_enable control so that when you disable alq, it acts as if alq had not been enabled in the build. in other words, the rest of ktr is still available for use. If you really don't want that as well, set the mask to 0.
MFC after:3 weeks
|
#
205017 |
|
11-Mar-2010 |
jhb |
Style fixes.
Submitted by: bde
|
#
204980 |
|
10-Mar-2010 |
jhb |
Add descriptions for debug.ktr sysctl nodes.
|
#
162181 |
|
09-Sep-2006 |
rwatson |
Remove slightly oddly placed suser() call from the KTR/ALQ setup sysctl: it was present only in the enable path, not the disable path, which one presumes would be equally of interest. Either way, it was not needed, as the sysctl framework already calls suser() if the operation is a write operation, which configuration requests are.
Sponsored by: nCircle Network Security, Inc.
|
#
160312 |
|
12-Jul-2006 |
jhb |
Simplify the pager support in DDB. Allowing different db commands to install custom pager functions didn't actually happen in practice (they all just used the simple pager and passed in a local quit pointer). So, just hardcode the simple pager as the only pager and make it set a global db_pager_quit flag that db commands can check when the user hits 'q' (or a suitable variant) at the pager prompt. Also, now that it's easy to do so, enable paging by default for all ddb commands. Any command that wishes to honor the quit flag can do so by checking db_pager_quit. Note that the pager can also be effectively disabled by setting $lines to 0.
Other fixes: - 'show idt' on i386 and pc98 now actually checks the quit flag and terminates early. - 'show intr' now actually checks the quit flag and terminates early.
|
#
154940 |
|
27-Jan-2006 |
jhb |
Whitespace.
|
#
154933 |
|
27-Jan-2006 |
jhb |
Add a new sysctl, debug.ktr.clear. If you write a non-zero value to this sysctl then it will clear the KTR buffer. Note that if you have active KTR traces at the same time as a clear operation the behavior is undefined, though it shouldn't panic.
|
#
154818 |
|
25-Jan-2006 |
jhb |
Axe KTR_ALQ_MASK now that KTR_WITNESS is off unless you hack an #ifdef in subr_witness.c. I did add a comment in subr_witness.c noting that KTR_WITNESS is incompatible with KTR_ALQ.
|
#
147278 |
|
10-Jun-2005 |
jeff |
- Add curthread to the state that ktr is saving. The extra information is well worth the bloat. - Change the formatting of 'show ktr' slightly to accommodate the additional field. Remove a tab from the verbose output and place the actual trace data after a : so it is more easy to understand which part is the event and which is part of the record.
|
#
145142 |
|
16-Apr-2005 |
rwatson |
Modify the alq(9) alq_open() API to accept a file creation mode, rather than defaulting the cmode argument to vn_open() to 0. Supply a default argument of ALQ_DEFAULT_CMODE (0600) in current callers.
Discussed with/pointed out by: hmp Reveiwed by: jeff, hmp MFC after: 3 days
|
#
137117 |
|
01-Nov-2004 |
jhb |
- Change the ddb paging "support" to use a variable (db_lines_per_page) to control the number of lines per page rather than a constant. The variable can be examined and changed in ddb as '$lines'. Setting the variable to 0 will effectively turn off paging. - Change db_putchar() to force out pending whitespace before outputting newlines and carriage returns so that one can rub out content on the current line via '\r \r' type strings. - Change the simple pager to rub out the --More-- prompt explicitly when the routine exits. - Add some aliases to the simple pager to make it more compatible with more(1): 'e' and 'j' do a single line. 'd' does half a page, and 'f' does a full page.
MFC after: 1 month Inspired by: kris
|
#
135528 |
|
20-Sep-2004 |
jhb |
Remove unused macro.
|
#
132583 |
|
23-Jul-2004 |
rwatson |
Export KTR_COMPILE as a sysctl so you can easily check from user space what event mask has been compiled into the kernel.
|
#
119936 |
|
09-Sep-2003 |
jhb |
Update the license on this file to be a bit more sane.
|
#
118362 |
|
02-Aug-2003 |
jhb |
Both 'c' an 'lines' are unused, the bogus init of lines was accidentally left behind.
|
#
118311 |
|
01-Aug-2003 |
obrien |
Fix kernel build -- 'c' was the unused var, not 'lines'.
|
#
118269 |
|
31-Jul-2003 |
jhb |
Update the 'ps', 'show pci', and 'show ktr' ddb commands to use the new pager callout instead of homerolling their own paging facility.
|
#
116697 |
|
22-Jun-2003 |
rwatson |
Add an explicit credential argument to alq_open() to allow the caller to specify what credential to use when authorizing vn_open() and later write operations, rather than curthread->td_ucred.
When writing KTR traces to an ALQ, specify the credential of the thread generating the sysctl request.
Obtained from: TrustedBSD Project Sponsored by: DARPA, Network Associates Laboratories
|
#
116182 |
|
10-Jun-2003 |
obrien |
Use __FBSDID().
|
#
116101 |
|
09-Jun-2003 |
jhb |
- Add a td_pflags field to struct thread for private flags accessed only by curthread. Unlike td_flags, this field does not need any locking. - Replace the td_inktr and td_inktrace variables with equivalent private thread flags. - Move TDF_OLDMASK over to the private flags field so it no longer requires sched_lock.
|
#
114471 |
|
01-May-2003 |
julian |
Move the flag that indicates an idle thread from the KSE to the thread. It was always referenced via the thread anyhow.
Reviewed by: jhb (a LOOOOONG time ago)
|
#
112105 |
|
11-Mar-2003 |
jhb |
Trim leading "../" sequences from filenames.
|
#
111270 |
|
22-Feb-2003 |
jake |
Add a /a modifier to the show ktr ddb command, which prints the whole trace buffer without stopping. Useful if you just want to capture the output but can't run ktrdump.
|
#
103995 |
|
26-Sep-2002 |
jeff |
- Export the alq daemon thread pointer. - Don't log ktr events from the alq daemon.
|
#
103787 |
|
22-Sep-2002 |
jeff |
- Add support for logging KTR via ALQ. This is optional and enabled by the KTR_ALQ config option.
|
#
93951 |
|
06-Apr-2002 |
jake |
Remove a stale comment.
|
#
93950 |
|
06-Apr-2002 |
jake |
Include machine/ktr.h for sparc64 so we pick up KTR_CPU.
|
#
93503 |
|
01-Apr-2002 |
jake |
ktr changes to improve performance and make writing a userland utility to dump the trace buffer feasible. - Remove KTR_EXTEND. This changes the format of the trace entries when activated, making writing a userland tool which is not tied to a specific kernel configuration difficult. - Use get_cyclecount() for timestamps. nanotime() is much too heavy weight and requires recursion protection due to ktr traces occuring as a result of ktr traces. KTR_VERBOSE may still require recursion protection, which is now conditional on it. - Allow KTR_CPU to be overridden by MD code. This is so that it is possible to trace early in startup before pcpu and/or curthread are setup. - Add a version number for the ktr interface. A userland tool can check this to detect mismatches. - Use an array for the parameters to make decoding in userland easier. - Add file and line recording to the non-extended traces now that the extended version is no more.
These changes will break gdb macros to decode the extended version of the trace buffer which are floating around. Users of these macros should either use the show ktr command in ddb, or use the userland utility which can be run on a core dump.
Approved by: jhb Tested on: i386, sparc64
|
#
91904 |
|
08-Mar-2002 |
jhb |
Read KTR_CPU into a temporary variable so that we use a consistent value for both the cpumask check and the cpu entry field w/o needing to use a critical section.
|
#
88793 |
|
01-Jan-2002 |
jake |
Print parm6 too in the !KTR_EXTEND case.
|
#
88088 |
|
17-Dec-2001 |
jhb |
Modify the critical section API as follows: - The MD functions critical_enter/exit are renamed to start with a cpu_ prefix. - MI wrapper functions critical_enter/exit maintain a per-thread nesting count and a per-thread critical section saved state set when entering a critical section while at nesting level 0 and restored when exiting to nesting level 0. This moves the saved state out of spin mutexes so that interlocking spin mutexes works properly. - Most low-level MD code that used critical_enter/exit now use cpu_critical_enter/exit. MI code such as device drivers and spin mutexes use the MI wrappers. Note that since the MI wrappers store the state in the current thread, they do not have any return values or arguments. - mtx_intr_enable() is replaced with a constant CRITICAL_FORK which is assigned to curthread->td_savecrit during fork_exit().
Tested on: i386, alpha
|
#
87793 |
|
13-Dec-2001 |
jhb |
Use a per-thread variable for keeping state when a thread is processing a KTR log entry. Any KTR requests made while working on an entry are ignored/discarded to prevent recursion. This is a better fix for the hack to futz with the CPU mask and call getnanotime() if KTR_LOCK or KTR_WITNESS was on. It also covers the actual formatting of the log entry including dumping it to the display which the earlier hacks did not.
|
#
87702 |
|
11-Dec-2001 |
jhb |
Overhaul the per-CPU support a bit:
- The MI portions of struct globaldata have been consolidated into a MI struct pcpu. The MD per-CPU data are specified via a macro defined in machine/pcpu.h. A macro was chosen over a struct mdpcpu so that the interface would be cleaner (PCPU_GET(my_md_field) vs. PCPU_GET(md.md_my_md_field)). - All references to globaldata are changed to pcpu instead. In a UP kernel, this data was stored as global variables which is where the original name came from. In an SMP world this data is per-CPU and ideally private to each CPU outside of the context of debuggers. This also included combining machine/globaldata.h and machine/globals.h into machine/pcpu.h. - The pointer to the thread using the FPU on i386 was renamed from npxthread to fpcurthread to be identical with other architectures. - Make the show pcpu ddb command MI with a MD callout to display MD fields. - The globaldata_register() function was renamed to pcpu_init() and now init's MI fields of a struct pcpu in addition to registering it with the internal array and list. - A pcpu_destroy() function was added to remove a struct pcpu from the internal array and list.
Tested on: alpha, i386 Reviewed by: peter, jake
|
#
87627 |
|
10-Dec-2001 |
obrien |
Missed an assignment of arg6 in previous commit.
|
#
87622 |
|
10-Dec-2001 |
obrien |
Adjust for the addition of CTR6.
|
#
78784 |
|
25-Jun-2001 |
jhb |
- Replace the unused KTR_IDLELOOP trace class with a new KTR_WITNESS trace class to trace witness events. - Make the ktr_cpu field of ktr_entry be a standard field rather than one present only in the KTR_EXTEND case. - Move the default definition of KTR_ENTRIES from sys/ktr.h to kern/kern_ktr.c. It has not been needed in the header file since KTR was un-inlined. - Minor include cleanup in kern/kern_ktr.c. - Fiddle with the ktr_cpumask in ktr_tracepoint() to disable KTR events on the current CPU while we are processing an event. - Set the current CPU inside of the critical section to ensure we don't migrate CPU's after the critical section but before we set the CPU.
|
#
78161 |
|
13-Jun-2001 |
peter |
With this commit, I hereby pronounce gensetdefs past its use-by date.
Replace the a.out emulation of 'struct linker_set' with something a little more flexible. <sys/linker_set.h> now provides macros for accessing elements and completely hides the implementation.
The linker_set.h macros have been on the back burner in various forms since 1998 and has ideas and code from Mike Smith (SET_FOREACH()), John Polstra (ELF clue) and myself (cleaned up API and the conversion of the rest of the kernel to use it).
The macros declare a strongly typed set. They return elements with the type that you declare the set with, rather than a generic void *.
For ELF, we use the magic ld symbols (__start_<setname> and __stop_<setname>). Thanks to Richard Henderson <rth@redhat.com> for the trick about how to force ld to provide them for kld's.
For a.out, we use the old linker_set struct.
NOTE: the item lists are no longer null terminated. This is why the code impact is high in certain areas.
The runtime linker has a new method to find the linker set boundaries depending on which backend format is in use.
linker sets are still module/kld unfriendly and should never be used for anything that may be modular one day.
Reviewed by: eivind
|
#
77900 |
|
08-Jun-2001 |
peter |
"Fix" the previous initial attempt at fixing TUNABLE_INT(). This time around, use a common function for looking up and extracting the tunables from the kernel environment. This saves duplicating the same function over and over again. This way typically has an overhead of 8 bytes + the path string, versus about 26 bytes + the path string.
|
#
77853 |
|
07-Jun-2001 |
peter |
Back out part of my previous commit. This was a last minute change and I botched testing. This is a perfect example of how NOT to do this sort of thing. :-(
|
#
77843 |
|
06-Jun-2001 |
peter |
Make the TUNABLE_*() macros look and behave more consistantly like the SYSCTL_*() macros. TUNABLE_INT_DECL() was an odd name because it didn't actually declare the int, which is what the name suggests it would do.
|
#
74903 |
|
28-Mar-2001 |
jhb |
Switch from save/disable/restore_intr() to critical_enter/exit().
|
#
72761 |
|
20-Feb-2001 |
jhb |
- In the KTR_EXTEND case, use a const char * to point to the passed in filename insteada of copying the first 32 characters of it. - Add in const modifiers for the passed in format strings and filenames and their respective members in the ktr_entry struct.
|
#
72755 |
|
20-Feb-2001 |
jhb |
- Abolish the 'show ktr_first' and 'show ktr_next' commands. - Add pager capability to the 'show ktr' command. It functions much like 'ps': Enter at the prompt displays one more entry, Space displays another page, and any other key quits.
|
#
72250 |
|
09-Feb-2001 |
jhb |
Work around some sizeof(long) != sizeof(int) bogons.
|
#
72223 |
|
09-Feb-2001 |
jhb |
Change the ktr ddb commands to be show commands. The commands are now as follows: - show ktr_first display the first entry - show ktr_next display the next entry - show ktr display the entire buffer
The /v modifiers continue to work as described previously.
Requested by: bde
|
#
70861 |
|
10-Jan-2001 |
jake |
Use PCPU_GET, PCPU_PTR and PCPU_SET to access all per-cpu variables other then curproc.
|
#
70705 |
|
06-Jan-2001 |
jhb |
- Move all of the KTR sysctl's under a new debug.ktr mib. - Provide TUNABLE_INT() hooks for ktr_cpumask, ktr_mask, and ktr_verbose so that they can be set from the loader by their respective sysctl names. For example, to turn on KTR_INTR and KTR_PROC in ktr_mask, one could stick 'debug.ktr.mask="0x1200"' in /boot/loader.conf.
|
#
70464 |
|
29-Dec-2000 |
grog |
Partially revert revision 1.7: Only use getnanotime instead of nanotime if we would run into trouble with nanotime (i.e. if we are tracing KTR_LOCK).
Reviewed by: jhb
|
#
70035 |
|
14-Dec-2000 |
jhb |
Add in MI implementations of the KTR trace buffer ddb commands. The commands have also been slightly updated as follows: - Use ktr_idx to find the newest entry rather than walking the buffer comparing timespecs. Timespecs are not always unique after the change to use getnanotime(9). - Add a new verbose setting. When the verbose setting is on, then the timestamp is printed with each message. If KTR_EXTEND is on, then the filename and line number are output as well. By default this option is off. It can be turned on with the 'v' modifier passed to the 'tbuf' and 'tall' commands. For the 'tnext' command, the 'v' modifier toggles the verbose mode. - Only display the cpu number for each message on SMP systems. - Don't display anything for an empty entry that hasn't been used yet.
|
#
69880 |
|
11-Dec-2000 |
jhb |
- Don't bother taking a trace message if we have panic'd since doing so can lead to further panics. - Call getnanotime() instead of nanotime() for the timestamp. nanotime() is more precise, but it also calls into the timer code, which results in mutex operations on the i386 arch. If KTR_LOCK is turned on, then ktr_tracepoint() recurses on itself until it exhausts the kernel stack. Eventually this should change to use get_cyclecount() instead, but that can't happen if get_cyclecount() is calling nanotime() instead of getnanotime().
|
#
69012 |
|
21-Nov-2000 |
jhb |
Ahem, fix the disclaimer portion of the copyright so it disclaim's the voices in my head. You can sue the voices in Bill Paul's head all you want.
Noticed by: jhb
|
#
68782 |
|
15-Nov-2000 |
jhb |
Make ktr_verbose a bit more useful: - On SMP systems display the cpu number with each message - If ktr_verbose > 1, then include the filename and line number with each trace message
|
#
68587 |
|
10-Nov-2000 |
jhb |
Don't overwrite the filename for KTR_EXTEND with "../../kern/kern_ktr.c".
|
#
68584 |
|
10-Nov-2000 |
jhb |
Fix SMP kernel compiles by #include'ing machine/globals.h to get the cpuid variable.
|
#
68420 |
|
06-Nov-2000 |
jhb |
- Remove much of the inlining of the KTR tracepoints into a ktr_tracepoint() function declared in kern_ktr.c. The only inline checks left are the checks that compare KTR_COMPILE with the supplied mask and thus should be optimized away into either nothing or a direct call to ktr_tracepoint(). - Move several KTR-related options to opt_ktr.h now that they are only needed by kern_ktr.c and not by ktr.h. - Add in the ktr_verbose functionality if KTR_EXTEND is turned on. If the global variable 'ktr_verbose' is non-zero, then KTR messages will be dumped to the console. This variable can be set by either kernel code or via the 'debug.ktr_verbose' sysctl. It defaults to off unless the KTR_VERBOSE kernel option is specified in which case it defaults to on. This can be useful when the machine locks up spinning in a loop with interrupts disabled as you might be able to see what it is doing when it locks up.
Requested by: phk
|
#
65556 |
|
06-Sep-2000 |
jasone |
Add KTR, a facility that logs kernel events in order to to facilitate debugging.
Acquired from: BSDi (BSD/OS) Submitted by: dfr, grog, jake, jhb
|