Up to [cvs.NetBSD.org] / src / sys / kern
Request diff between arbitrary revisions
Default branch: MAIN
Current tag: MAIN
Revision 1.12 / (download) - annotate - [select for diffs], Sun Jul 10 14:07:55 2022 UTC (21 months, 1 week ago) by riastradh
Branch: MAIN
CVS Tags: thorpej-ifq-base,
thorpej-ifq,
thorpej-altq-separation-base,
thorpej-altq-separation,
netbsd-10-base,
netbsd-10-0-RELEASE,
netbsd-10-0-RC6,
netbsd-10-0-RC5,
netbsd-10-0-RC4,
netbsd-10-0-RC3,
netbsd-10-0-RC2,
netbsd-10-0-RC1,
netbsd-10,
bouyer-sunxi-drm-base,
bouyer-sunxi-drm,
HEAD
Changes since 1.11: +16 -16
lines
Diff to previous 1.11 (unified)
kern/sys_ptrace.c: Nix trailing whitespace.
Revision 1.11 / (download) - annotate - [select for diffs], Wed Nov 4 19:16:34 2020 UTC (3 years, 5 months ago) by pgoyette
Branch: MAIN
CVS Tags: thorpej-i2c-spi-conf2-base,
thorpej-i2c-spi-conf2,
thorpej-i2c-spi-conf-base,
thorpej-i2c-spi-conf,
thorpej-futex2-base,
thorpej-futex2,
thorpej-futex-base,
thorpej-cfargs2-base,
thorpej-cfargs2,
thorpej-cfargs-base,
thorpej-cfargs,
cjep_sun2x-base1,
cjep_sun2x-base,
cjep_sun2x,
cjep_staticlib_x-base1,
cjep_staticlib_x-base,
cjep_staticlib_x
Changes since 1.10: +3 -3
lines
Diff to previous 1.10 (unified)
Don't use == for assignment.
Revision 1.10 / (download) - annotate - [select for diffs], Wed Nov 4 19:03:17 2020 UTC (3 years, 5 months ago) by pgoyette
Branch: MAIN
Changes since 1.9: +23 -4
lines
Diff to previous 1.9 (unified)
For consistency with other code, put the module init/fini code into separate routines called from module's modcmd() code, rather than in-lining in the modcmd.
Revision 1.9 / (download) - annotate - [select for diffs], Mon Oct 19 15:07:47 2020 UTC (3 years, 6 months ago) by kamil
Branch: MAIN
Branch point for: thorpej-futex
Changes since 1.8: +2 -40
lines
Diff to previous 1.8 (unified)
This file does not contain any code written by cgd@ Delete the BSD 4-clause license.
Revision 1.8 / (download) - annotate - [select for diffs], Mon Oct 19 14:52:19 2020 UTC (3 years, 6 months ago) by kamil
Branch: MAIN
Changes since 1.7: +24 -1
lines
Diff to previous 1.7 (unified)
Rollback unintended changes in the previous commit
Revision 1.7 / (download) - annotate - [select for diffs], Mon Oct 19 14:47:01 2020 UTC (3 years, 6 months ago) by kamil
Branch: MAIN
Changes since 1.6: +2 -36
lines
Diff to previous 1.6 (unified)
Remove obsolete references to 4.4BSD papers
Revision 1.6 / (download) - annotate - [select for diffs], Tue Dec 24 14:50:59 2019 UTC (4 years, 3 months ago) by kamil
Branch: MAIN
CVS Tags: phil-wifi-20200421,
phil-wifi-20200411,
phil-wifi-20200406,
is-mlppp-base,
is-mlppp,
bouyer-xenpvh-base2,
bouyer-xenpvh-base1,
bouyer-xenpvh-base,
bouyer-xenpvh,
ad-namecache-base3,
ad-namecache-base2,
ad-namecache-base1,
ad-namecache-base,
ad-namecache
Changes since 1.5: +11 -2
lines
Diff to previous 1.5 (unified)
Introduce PT_LWPSTATUS + PT_LWPNEXT, obsolete PT_LWPINFO PT_LWPINFO is a legacy ptrace(2) operation that was originally intended to retrieve the thread (LWP) information inside a traced process. It has a number of flaws and is confused with PT_LWPINFO from FreeBSD. PT_LWPSTATUS and PT_LWPNEXT address the problems (shortly by: rename, removal of pl_event) and introduces new features: signal context (pl_sigpend, pl_sigmask), LWP name (pl_name), LWP TLS base address (pl_private). The private pointer was so far missing information for a debugger. PT_LWPSTATUS@nnn is now shipped with core(5) files and contain LWP specific information, so far missed in the core(5) files. PT_LWPSTATUS retrieves LWP information for the prompted thread. PT_LWPNEXT retrieves LWP information for the next thread, borrowing the semantics from NetBSD specific PT_LWPINFO. PT_LWPINFO is namespaced with __LEGACY_PT_LWPINFO and still available for the foreseeable future, without plans of removing it. Add ATF tests for PT_LWPSTATUS + PT_LWPNEXT. Keep ATF tests for PT_LWPINFO. Switch GDB to new API. Proposed on tech-kern@.
Revision 1.5 / (download) - annotate - [select for diffs], Sun Dec 17 20:59:27 2017 UTC (6 years, 4 months ago) by christos
Branch: MAIN
CVS Tags: phil-wifi-base,
phil-wifi-20191119,
phil-wifi-20190609,
pgoyette-compat-merge-20190127,
pgoyette-compat-base,
pgoyette-compat-20190127,
pgoyette-compat-20190118,
pgoyette-compat-1226,
pgoyette-compat-1126,
pgoyette-compat-1020,
pgoyette-compat-0930,
pgoyette-compat-0906,
pgoyette-compat-0728,
pgoyette-compat-0625,
pgoyette-compat-0521,
pgoyette-compat-0502,
pgoyette-compat-0422,
pgoyette-compat-0415,
pgoyette-compat-0407,
pgoyette-compat-0330,
pgoyette-compat-0322,
pgoyette-compat-0315,
pgoyette-compat,
netbsd-9-base,
netbsd-9-3-RELEASE,
netbsd-9-2-RELEASE,
netbsd-9-1-RELEASE,
netbsd-9-0-RELEASE,
netbsd-9-0-RC2,
netbsd-9-0-RC1,
netbsd-9,
isaki-audio2-base,
isaki-audio2
Branch point for: phil-wifi
Changes since 1.4: +34 -11
lines
Diff to previous 1.4 (unified)
handle siginfo requests for ptrace32
Revision 1.4 / (download) - annotate - [select for diffs], Thu Feb 23 03:34:22 2017 UTC (7 years, 1 month ago) by kamil
Branch: MAIN
CVS Tags: tls-maxphys-base-20171202,
prg-localcount2-base3,
prg-localcount2-base2,
prg-localcount2-base1,
prg-localcount2-base,
prg-localcount2,
pgoyette-localcount-20170426,
pgoyette-localcount-20170320,
perseant-stdc-iso10646-base,
perseant-stdc-iso10646,
nick-nhusb-base-20170825,
netbsd-8-base,
matt-nb8-mediatek-base,
matt-nb8-mediatek,
jdolecek-ncq-base,
jdolecek-ncq,
bouyer-socketcan-base1
Branch point for: tls-maxphys,
netbsd-8
Changes since 1.3: +3 -3
lines
Diff to previous 1.3 (unified)
Introduce PT_GETDBREGS and PT_SETDBREGS in ptrace(2) on i386 and amd64 This interface is modeled after FreeBSD API with the usage. This replaced previous watchpoint API. The previous one was introduced recently in NetBSD-current and remove its spurs without any backward-compatibility. Design choices for Debug Register accessors: - exec() (TRAP_EXEC event) must remove debug registers from LWP - debug registers are only per-LWP, not per-process globally - debug registers must not be inherited after (v)forking a process - debug registers must not be inherited after forking a thread - a debugger is responsible to set global watchpoints/breakpoints with the debug registers, to achieve this PTRACE_LWP_CREATE/PTRACE_LWP_EXIT event monitoring function is designed to be used - debug register traps must generate SIGTRAP with si_code TRAP_DBREG - debugger is responsible to retrieve debug register state to distinguish the exact debug register trap (DR6 is Status Register on x86) - kernel must not remove debug register traps after triggering a trap event a debugger is responsible to detach this trap with appropriate PT_SETDBREGS call (DR7 is Control Register on x86) - debug registers must not be exposed in mcontext - userland must not be allowed to set a trap on the kernel Implementation notes on i386 and amd64: - the initial state of debug register is retrieved on boot and this value is stored in a local copy (initdbregs), this value is used to initialize dbreg context after PT_GETDBREGS - struct dbregs is stored in pcb as a pointer and by default not initialized - reserved registers (DR4-DR5, DR9-DR15) are ignored Further ideas: - restrict this interface with securelevel Tested on real hardware i386 (Intel Pentium IV) and amd64 (Intel i7). This commit enables 390 debug register ATF tests in kernel/arch/x86. All tests are passing. This commit does not cover netbsd32 compat code. Currently other interface PT_GET_SIGINFO/PT_SET_SIGINFO is required in netbsd32 compat code in order to validate reliably PT_GETDBREGS/PT_SETDBREGS. This implementation does not cover FreeBSD specific defines in their <x86/reg.h>: DBREG_DR7_LOCAL_ENABLE, DBREG_DR7_GLOBAL_ENABLE, DBREG_DR7_LEN_1 etc. These values tend to be reinvented by each tracer on its own. GNU Debugger (GDB) works with NetBSD debug registers after adding this patch: --- gdb/amd64bsd-nat.c.orig 2016-02-10 03:19:39.000000000 +0000 +++ gdb/amd64bsd-nat.c @@ -167,6 +167,10 @@ amd64bsd_target (void) #ifdef HAVE_PT_GETDBREGS +#ifndef DBREG_DRX +#define DBREG_DRX(d,x) ((d)->dr[(x)]) +#endif + static unsigned long amd64bsd_dr_get (ptid_t ptid, int regnum) { Another reason to stop introducing unpopular defines covering machine specific register macros is that these value varies across generations of the same CPU family. GDB demo: (gdb) c Continuing. Watchpoint 2: traceme Old value = 0 New value = 16 main (argc=1, argv=0x7f7fff79fe30) at test.c:8 8 printf("traceme=%d\n", traceme); (Currently the GDB interface is not reliable due to NetBSD support bugs) Sponsored by <The NetBSD Foundation>
Revision 1.3 / (download) - annotate - [select for diffs], Thu Dec 15 12:04:18 2016 UTC (7 years, 4 months ago) by kamil
Branch: MAIN
CVS Tags: pgoyette-localcount-20170107,
nick-nhusb-base-20170204,
bouyer-socketcan-base
Branch point for: bouyer-socketcan
Changes since 1.2: +3 -2
lines
Diff to previous 1.2 (unified)
Add support for hardware assisted watchpoints/breakpoints API in ptrace(2) Add new ptrace(2) calls: - PT_COUNT_WATCHPOINTS - count the number of available hardware watchpoints - PT_READ_WATCHPOINT - read struct ptrace_watchpoint from the kernel state - PT_WRITE_WATCHPOINT - write new struct ptrace_watchpoint state, this includes enabling and disabling watchpoints The ptrace_watchpoint structure contains MI and MD parts: typedef struct ptrace_watchpoint { int pw_index; /* HW Watchpoint ID (count from 0) */ lwpid_t pw_lwpid; /* LWP described */ struct mdpw pw_md; /* MD fields */ } ptrace_watchpoint_t; For example amd64 defines MD as follows: struct mdpw { void *md_address; int md_condition; int md_length; }; These calls are protected with the __HAVE_PTRACE_WATCHPOINTS guard. Tested on amd64, initial support added for i386 and XEN. Sponsored by <The NetBSD Foundation>
Revision 1.2 / (download) - annotate - [select for diffs], Thu Nov 3 03:57:05 2016 UTC (7 years, 5 months ago) by pgoyette
Branch: MAIN
CVS Tags: pgoyette-localcount-20161104,
nick-nhusb-base-20161204
Branch point for: pgoyette-localcount,
nick-nhusb
Changes since 1.1: +4 -83
lines
Diff to previous 1.1 (unified)
Remove ptrace_do{,fp}regs - they are a duplicate of process_* routines which are still in sys_ptrace_common.c.
Revision 1.1 / (download) - annotate - [select for diffs], Wed Nov 2 00:11:59 2016 UTC (7 years, 5 months ago) by pgoyette
Branch: MAIN
* Split sys/kern/sys_process.c into three parts: 1 - ptrace(2) syscall for native emulation 2 - common ptrace(2) syscall code (shared with compat_netbsd32) 3 - support routines that are shared with PROCFS and/or KTRACE * Add module glue for #1 and #2. Both modules will be built-in to the kernel if "options PTRACE" is included in the config file (this is the default, defined in sys/conf/std). * Mark the ptrace(2) syscall as modular in syscalls.master (generated files will be committed shortly). * Conditionalize all remaining portions of PTRACE code on a new kernel option PTRACE_HOOKS. XXX Instead of PROCFS depending on 'options PTRACE', we should probably just add a procfs attribute to the sys/kern/sys_process.c file's entry in files.kern, and add PROCFS to the "#if defineds" for process_domem(). It's really confusing to have two different ways of requiring this file.