#
41fd9c63 |
| 24-May-2010 |
Konstantin Belousov <kib@FreeBSD.org> |
Fix the double counting of the last process thread td_incruntime on exit, that is done once in thread_exit() and the second time in proc_reap(), by clearing td_incruntime.
Use the opportunity to rev
Fix the double counting of the last process thread td_incruntime on exit, that is done once in thread_exit() and the second time in proc_reap(), by clearing td_incruntime.
Use the opportunity to revert to the pre-RUSAGE_THREAD exporting of ruxagg() instead of ruxagg_locked() and use it from thread_exit().
Diagnosed and tested by: neel MFC after: 3 days
show more ...
|
Revision tags: vendor/bind9/9.4-ESV-R2, vendor/bind9/9.6.2-P2 |
|
#
c193de56 |
| 11-May-2010 |
Konstantin Belousov <kib@FreeBSD.org> |
MFC r207468: Extract thread_lock()/ruxagg()/thread_unlock() fragment into utility function ruxagg_tlock(). Convert the definition of kern_getrusage() to ANSI C.
MFC r207602: Implement RUSAGE_THREAD.
MFC r207468: Extract thread_lock()/ruxagg()/thread_unlock() fragment into utility function ruxagg_tlock(). Convert the definition of kern_getrusage() to ANSI C.
MFC r207602: Implement RUSAGE_THREAD. Add td_rux to keep extended runtime and ticks information for thread to allow calcru1() (re)use.
Rename ruxagg()->ruxagg_locked(), ruxagg_tlock()->ruxagg() [1]. The ruxagg_locked() function no longer clears thread ticks nor td_incruntime.
Not an MFC: the td_rux is added to the end of struct thread to keep the KBI. Explicit bzero() of td_rux is added to new thread initialization points.
show more ...
|
Revision tags: vendor/tzdata/tzdata2010j, vendor/xz/20100412 |
|
#
bed4c524 |
| 04-May-2010 |
Konstantin Belousov <kib@FreeBSD.org> |
Implement RUSAGE_THREAD. Add td_rux to keep extended runtime and ticks information for thread to allow calcru1() (re)use.
Rename ruxagg()->ruxagg_locked(), ruxagg_tlock()->ruxagg() [1]. The ruxagg_l
Implement RUSAGE_THREAD. Add td_rux to keep extended runtime and ticks information for thread to allow calcru1() (re)use.
Rename ruxagg()->ruxagg_locked(), ruxagg_tlock()->ruxagg() [1]. The ruxagg_locked() function no longer clears thread ticks nor td_incruntime.
Requested by: attilio [1] Discussed with: attilio, bde Reviewed by: bde Based on submission by: Alexander Krizhanovsky <ak natsys-lab com> MFC after: 1 week X-MFC-Note: td_rux shall be moved to the end of struct thread
show more ...
|
Revision tags: vendor/acpica/20100428, vendor/openssh/5.5p1, vendor/testfloat/2a, vendor/zlib/1.2.5, vendor/tzdata/tzdata2010i, vendor/zlib/1.2.4.3, vendor/tzdata/tzdata2010h, vendor/acpica/20100331, vendor/openssl/0.9.8n, vendor/zlib/1.2.4.1, vendor/bind9/9.4-ESV-R1, vendor/netcat/4.7, vendor/tzcode/tzcode2010f, vendor/tzdata/tzdata2010f, release/7.3.0_cvs, release/7.3.0, vendor/bind9/9.6.2-P1, vendor/zlib/1.2.4, vendor/tzdata/tzdata2010e, vendor/openssh/5.4p1, vendor/acpica/20100304, vendor/bind9/9.6.2, vendor/tzcode/tzcode2010c, vendor/tzdata/tzdata2010c, vendor/openssl/0.9.8m, vendor/dtc/dtc-d75b33af, vendor/dtc/1.2.0, vendor/tzcode/tzcode2010a, vendor/bind9/9.4-ESV, vendor/tzdata/tzdata2010b, vendor/sendmail/8.14.4, vendor/bind9/9.6.1-P3, vendor/acpica/20100121, vendor/netcat/4.6, vendor/tzdata/tzdata2010a, vendor/one-true-awk/20091126, vendor/tzdata/tzdata2009u, vendor/tzdata/tzdata2009t, vendor/tzcode/tzcode2009t, vendor/acpica/20091214, vendor/ntp/4.2.4p8, vendor/bind9/9.4.3-P4, vendor/bind9/9.6.1-P2, release/8.0.0_cvs, release/8.0.0, vendor/tzdata/tzdata2009s, vendor/acpica/20091112, vendor/tzcode/tzcode2009r, vendor/tzdata/tzdata2009r, vendor/clang/clang-r86025, vendor/llvm/llvm-r86025, vendor/tzcode/tzcode2009q, vendor/tzdata/tzdata2009q, vendor/tzdata/tzdata2009p, vendor/clang/clang-r84949, vendor/llvm/llvm-r84949, vendor/tzdata/tzdata2009o, vendor/llvm/llvm-r84176, vendor/clang/clang-r84175, vendor/clang/clang-r84119, vendor/llvm/llvm-r84119, vendor/acpica/20091013, vendor/openssh/5.3p1, vendor/tzdata/tzdata2009n, vendor/x86emu/4.6, vendor/tzdata/tzdata2009m, vendor/acpica/20090903, vendor/openssl/0.9.8k-dtls-fixes, vendor/pf-sys/4.5.002, vendor/pf/4.5, vendor/tzdata/tzdata2009l, vendor/openbsm/1.1-P-2, vendor/acpica/20090730, vendor/bind9/9.4.3-P3, vendor/bind9/9.6.1-P1, vendor/less/v436, vendor/tzcode/tzcode2009k, vendor/tzdata/tzdata2009k, vendor/openbsm/1.1-P-1, vendor/tcsh/6.17.00, vendor/clang/clang-r74788, vendor/llvm/llvm-r74788, vendor/clang/clang-r74383, vendor/llvm/llvm-r74383, vendor/acpica/20090625, vendor/bind9/9.6.1 |
|
#
3364c323 |
| 23-Jun-2009 |
Konstantin Belousov <kib@FreeBSD.org> |
Implement global and per-uid accounting of the anonymous memory. Add rlimit RLIMIT_SWAP that limits the amount of swap that may be reserved for the uid.
The accounting information (charge) is associ
Implement global and per-uid accounting of the anonymous memory. Add rlimit RLIMIT_SWAP that limits the amount of swap that may be reserved for the uid.
The accounting information (charge) is associated with either map entry, or vm object backing the entry, assuming the object is the first one in the shadow chain and entry does not require COW. Charge is moved from entry to object on allocation of the object, e.g. during the mmap, assuming the object is allocated, or on the first page fault on the entry. It moves back to the entry on forks due to COW setup.
The per-entry granularity of accounting makes the charge process fair for processes that change uid during lifetime, and decrements charge for proper uid when region is unmapped.
The interface of vm_pager_allocate(9) is extended by adding struct ucred *, that is used to charge appropriate uid when allocation if performed by kernel, e.g. md(4).
Several syscalls, among them is fork(2), may now return ENOMEM when global or per-uid limits are enforced.
In collaboration with: pho Reviewed by: alc Approved by: re (kensmith)
show more ...
|
Revision tags: vendor/clang/clang-r73984, vendor/llvm/llvm-r73984, vendor/clang/clang-r73954, vendor/llvm/llvm-r73954, vendor/clang/clang-r73879, vendor/llvm/llvm-r73879, vendor/tzdata/tzdata2009j, vendor/opensolaris/20080410b, vendor/clang/clang-r73340, vendor/llvm/llvm-r73340, vendor/tzcode/tzcode2009i, vendor/tzdata/tzdata2009i, vendor/clang/clang-r73070, vendor/llvm/llvm-r73070, vendor/openssl/0.9.8k, vendor/clang/clang-r73021, vendor/llvm/llvm-r73021, vendor/clang/clang-r72995, vendor/llvm/llvm-r72995, vendor/clang/clang-r72805, vendor/llvm/llvm-r72805, vendor/clang/clang-r72770, vendor/llvm/llvm-r72770, vendor/clang/clang-r72732, vendor/llvm/llvm-r72732, vendor/acpica/20090521, vendor/acpica/20070320resync, vendor/bind9/9.6.1rc1, vendor/netcat/4.5, vendor/tzcode/tzcode2009h, vendor/tzdata/tzdata2009h, vendor/ee/1.5.0, vendor/ee/1.4.7, vendor/ee/1.4.6, vendor/ee/1.4.5a, vendor/ee/1.4.4, vendor/ee/1.4.3, vendor/ee/1.4.2, vendor/top/3.8b1, vendor/tzcode/tzcode2009e, vendor/file/5.03, vendor/less/v429, vendor/binutils/2.15-r191844-obrien, vendor/file/5.00, release/7.2.0_cvs, release/7.2.0, vendor/tzdata/tzdata2009g, vendor/openbsm/1.1, vendor/tzdata/tzdata2009f, vendor/tzdata/tzdata2009e, vendor/tzdata/tzdata2009d, vendor/bind9/9.4.3-P2, vendor/libpcap/1.0.0, vendor/tcpdump/4.0.0, vendor/tzdata/tzdata2009c, vendor/openbsm/1.1-BETA-1, vendor/wpa/0.6.8, vendor/openssh/5.2p1, vendor/tzdata/tzdata2009b, vendor/gdtoa/20081205, vendor/tzdata/tzdata2009a, vendor/wpa_supplicant/0.5.11, vendor/wpa_supplicant/0.5.10, vendor/openbsm/1.1-ALPHA-5, vendor/bind9/9.3.6-P1, vendor/bind9/9.4.3-P1, vendor/file/4.26, release/7.1.0_cvs, release/7.1.0, vendor/openbsm/1.1-ALPHA-4, vendor/bind9/9.4.3, vendor/resolver/9.4.3, vendor/pf-sys/4.4, vendor/pf-sys/4.3, vendor/pf-sys/4.2, vendor/pf/4.4, vendor/pf/4.3, vendor/pf/4.2, release/6.4.0_cvs, release/6.4.0, vendor/openbsm/1.1-ALPHA-2, vendor/ncurses/5.7-20081102, vendor/tzdata/tzdata2008i, vendor/tzdata/tzdata2008h, vendor/tzdata/tzdata2008g, vendor/netcat/4.4, vendor/openssl/0.9.8i, vendor/tzdata/tzdata2008f, vendor/gdtoa/20080831, vendor/bind9/9.3.5-P2, vendor/bind9/9.4.2-P2, vendor/sendmail/8.14.3, vendor/ath/0.10.5.10 |
|
#
bc093719 |
| 20-Aug-2008 |
Ed Schouten <ed@FreeBSD.org> |
Integrate the new MPSAFE TTY layer to the FreeBSD operating system.
The last half year I've been working on a replacement TTY layer for the FreeBSD kernel. The new TTY layer was designed to improve
Integrate the new MPSAFE TTY layer to the FreeBSD operating system.
The last half year I've been working on a replacement TTY layer for the FreeBSD kernel. The new TTY layer was designed to improve the following:
- Improved driver model:
The old TTY layer has a driver model that is not abstract enough to make it friendly to use. A good example is the output path, where the device drivers directly access the output buffers. This means that an in-kernel PPP implementation must always convert network buffers into TTY buffers.
If a PPP implementation would be built on top of the new TTY layer (still needs a hooks layer, though), it would allow the PPP implementation to directly hand the data to the TTY driver.
- Improved hotplugging:
With the old TTY layer, it isn't entirely safe to destroy TTY's from the system. This implementation has a two-step destructing design, where the driver first abandons the TTY. After all threads have left the TTY, the TTY layer calls a routine in the driver, which can be used to free resources (unit numbers, etc).
The pts(4) driver also implements this feature, which means posix_openpt() will now return PTY's that are created on the fly.
- Improved performance:
One of the major improvements is the per-TTY mutex, which is expected to improve scalability when compared to the old Giant locking. Another change is the unbuffered copying to userspace, which is both used on TTY device nodes and PTY masters.
Upgrading should be quite straightforward. Unlike previous versions, existing kernel configuration files do not need to be changed, except when they reference device drivers that are listed in UPDATING.
Obtained from: //depot/projects/mpsafetty/... Approved by: philip (ex-mentor) Discussed: on the lists, at BSDCan, at the DevSummit Sponsored by: Snow B.V., the Netherlands dcons(4) fixed by: kan
show more ...
|
Revision tags: vendor/ntp/4.2.4p5, vendor/tzdata/tzdata2008e, vendor/tzdata/tzdata2008d, vendor/tzdata/tzdata2008c, vendor/pf-sys/4.1.001, vendor/openssh/5.1p1, vendor/openssh/5.0p1, vendor/openssh/4.9p1, vendor/openssh/4.7p1, vendor/openssh/4.6p1, vendor/bind9/9.3.5-P1, vendor/bind9/9.3.5, vendor/bind9/9.4.2-P1, vendor/misc-GNU/cpio/2.8, vendor/binutils/2.15.20040523, vendor/opensolaris/20080410, vendor/ncurses/5.6-20080503, vendor/expat/2.0.1, vendor/com_err/1.1.0, vendor/heimdal/1.1.0, vendor/opensolaris/20080410a, vendor/gcc/trunk_20080418-SVN134423, vendor/netcat/4.3, vendor/tzdata/tzdata2008b, vendor/bzip2/1.0.5, vendor/misc-GNU/cvs/1.11-20080310 |
|
#
1b072fbc |
| 16-Mar-2008 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
- Use wait-free method to manage ui_sbsize and ui_proccnt fields in the uidinfo structure. This entirely removes contention observed on the ui_mtxp mutex (as it is now gone). - Convert the uihash
- Use wait-free method to manage ui_sbsize and ui_proccnt fields in the uidinfo structure. This entirely removes contention observed on the ui_mtxp mutex (as it is now gone). - Convert the uihashtbl_mtx mutex to a rwlock, as most of the time we just need to read-lock it.
Reviewed by: jhb, jeff, kris & others Tested by: kris
show more ...
|
Revision tags: vendor/tcsh/6.15b, vendor/tzdata/tzdata2008a, vendor/bsnmp/syrinx_20080307_bugfix, release/7.0.0_cvs, release/7.0.0, vendor/ncurses/5.6-20080209, vendor/file/4.23-r1.46, vendor/binutils/2.15.cvsrev_1_51, release/6.3.0_cvs, release/6.3.0, vendor/file/4.23, vendor/misc-GNU/cvs/1.11.22, vendor/tzdata/tzdata2007k, vendor/ncurses/5.6-20071222, vendor/openpam/HYDRANGEA, vendor/amd/6.1.5, vendor/tzdata/tzdata2007j, vendor/resolver/9.4.2, vendor/bind9/9.4.2, vendor/less/v416, vendor/less/v415, vendor/libreadline/5.2p3_p7, vendor/sendmail/8.14.2, vendor/tzdata/tzdata2007i, vendor/openbsm/1.0, vendor/one-true-awk/20071023, vendor/ipfilter/4.1.28, vendor/ipfilter-sys/4-1-28, vendor/openssl/0.9.8-20071018, vendor/tcpdump/3.9.8, vendor/libpcap/0.9.8, vendor/tcsh/6.15a, vendor/less/v409, vendor/tzdata/tzdata2007h, vendor/less/v408, vendor/tzdata/tzdata2007g, vendor/gcc/4.2.1-20070718-SVN126787, vendor/bind9/9.4.1p1, vendor/openbsm/1.0-ALPHA-15, vendor/wpa_supplicant/0.5.8, vendor/hostapd/0.5.8, vendor/pf/4.1, vendor/pf-sys/4.1, vendor/less/v406, vendor/misc-GNU/diff/2.8.7 |
|
#
a1fe14bc |
| 09-Jun-2007 |
Attilio Rao <attilio@FreeBSD.org> |
rufetch and calcru sometimes should be called atomically together. This patch fixes places where they should be called atomically changing their locking requirements (both assume per-proc spinlock he
rufetch and calcru sometimes should be called atomically together. This patch fixes places where they should be called atomically changing their locking requirements (both assume per-proc spinlock held) and introducing rufetchcalc which wrappers both calls to be performed in atomic way.
Reviewed by: jeff Approved by: jeff (mentor)
show more ...
|
Revision tags: vendor/bind9/9.4.1, vendor/one-true-awk/20070501 |
|
#
1b1618fb |
| 04-Jun-2007 |
Jeff Roberson <jeff@FreeBSD.org> |
- Change comments and asserts to reflect the removal of the global scheduler lock.
Tested by: kris, current@ Tested on: i386, amd64, ULE, 4BSD, libthr, libkse, PREEMPTION, etc. Discusse
- Change comments and asserts to reflect the removal of the global scheduler lock.
Tested by: kris, current@ Tested on: i386, amd64, ULE, 4BSD, libthr, libkse, PREEMPTION, etc. Discussed with: kris, attilio, kmacy, jhb, julian, bde (small parts each)
show more ...
|
Revision tags: vendor/ipfilter/4.1.23, vendor/ipfilter-sys/4-1-23, vendor/less/v403, vendor/resolver/9.4.1 |
|
#
1c4bcd05 |
| 01-Jun-2007 |
Jeff Roberson <jeff@FreeBSD.org> |
- Move rusage from being per-process in struct pstats to per-thread in td_ru. This removes the requirement for per-process synchronization in statclock() and mi_switch(). This was previously
- Move rusage from being per-process in struct pstats to per-thread in td_ru. This removes the requirement for per-process synchronization in statclock() and mi_switch(). This was previously supported by sched_lock which is going away. All modifications to rusage are now done in the context of the owning thread. reads proceed without locks. - Aggregate exiting threads rusage in thread_exit() such that the exiting thread's rusage is not lost. - Provide a new routine, rufetch() to fetch an aggregate of all rusage structures from all threads in a process. This routine must be used in any place requiring a rusage from a process prior to it's exit. The exited process's rusage is still available via p_ru. - Aggregate tick statistics only on demand via rufetch() or when a thread exits. Tick statistics are kept in the thread and protected by sched_lock until it exits.
Initial patch by: attilio Reviewed by: attilio, bde (some objections), arch (mostly silent)
show more ...
|
Revision tags: vendor/file/4.21, vendor/file/4.19, vendor/tzdata/tzdata2007f, vendor/gcc/4.2.0-20070514-SVN124707, vendor/openbsm/1.0-ALPHA-14, vendor/libreadline/5.2p2, vendor/sendmail/8.14.1, vendor/binutils/2.15.20050217, vendor/tcpdump/3.9.1a, vendor/tcsh/6.15p1, vendor/bzip2/1.0.4, vendor/netcat/4.1, vendor/acpica/20070320, vendor/openssl/0.9.8-20070315, vendor/openssl/0.9.8e, vendor/tcsh/6.15, vendor/bind9/9.3.4, vendor/ncurses/5.6-20061217, release/6.2.0_cvs, release/6.2.0, vendor/gdtoa/20050923, vendor/libreadline/5.2p1, vendor/libreadline/5.2, vendor/resolver/9.3.4, vendor/resolver/9.3.3, vendor/ath/0.9.20.3, vendor/bind9/9.3.3, vendor/pppd/2.3.11, vendor/openssh/4.5p1, vendor/bind9/9.3.2p2, vendor/resolver/9.3.3RC2, vendor/tzdata/tzdata2006n, vendor/openssl/0.9.8-20060929, vendor/openssl/0.9.8d, vendor/openssh/4.4p1, vendor/openbsm/1.0-ALPHA-12, vendor/openbsm/1.0-ALPHA-11, vendor/bind9/9.3.2p1, vendor/tcpdump/3.9.4, vendor/libpcap/0.9.4, vendor/openbsm/1.0-ALPHA-10, vendor/openbsm/1.0-ALPHA9-kwikfix_backout, vendor/NetBSD/lukemftpd/20060831, vendor/openbsm/1.0-ALPHA9-kwikfix, vendor/gcc/3.4.6-20060825-SVN116475, vendor/openbsm/1.0-ALPHA-9, vendor/gdb/6.1.1, vendor/less/v394, vendor/sendmail/8.13.8, vendor/ipfilter/4.1.13, vendor/ipfilter-sys/4-1-13, vendor/openssl/0.9.8b, vendor/libuwx/BETA10, vendor/openbsm/1.0-ALPHA-7, vendor/OpenBSD/cvs_20060501, vendor/file/4.17a, vendor/file/4.17, vendor/sendmail/8.13.7, vendor/binutils/2.15.NOTHING, vendor/ath/0.9.17.2, vendor/openbsm/1.0-ALPHA-6, release/5.5.0_cvs, release/5.5.0, vendor/netcat/3.9, vendor/resolver/9.3.2, vendor/tzdata/tzdata2006g, release/6.1.0_cvs, release/6.1.0, vendor/libreadline/5.1p1-p4, vendor/libreadline/5.1, vendor/zlib/1.2.3, vendor/openssh/4.3p1, vendor/sendmail/8.13.6, vendor/csup/20060313, vendor/hostapd/0.4.8, vendor/wpa_supplicant/0.4.8, vendor/openbsm/1.0-ALPHA-5, vendor/csup/20060303, vendor/csup/20060302, vendor/bsnmp/1.12, vendor/tcsh/6.14, vendor/openbsm/1.0-ALPHA-4, vendor/ath/0.9.16.16, vendor/openbsm/1.0-ALPHA-3, vendor/openbsm/1.0-ALPHA-2, vendor/openbsm/1.0-ALPHA-1, vendor/bind9/9.3.2-dougb-p1, vendor/ipfilter/4.1.10, vendor/ipfilter-sys/4-1-10, vendor/bind9/9.3.2, vendor/tzdata/tzdata2005r, vendor/tzdata/tzdata2005q |
|
#
cb49fcd1 |
| 16-Dec-2005 |
John Baldwin <jhb@FreeBSD.org> |
Change the addupc_*() functions to use the uintfptr_t type for pc rather than uintptr_t as that is technically more correct.
|
Revision tags: vendor/nve/1.0.0310, release/6.0.0_cvs, release/6.0.0, vendor/acpica/20051021, vendor/acpica/20041119sysinc, vendor/wpa_supplicant/0.3-latest, vendor/groff/1.19.2, vendor/wpa_supplicant/0.3.9, vendor/bsnmp/1.11, vendor/misc-GNU/cpio/2.6 |
|
#
b2149bde |
| 27-Sep-2005 |
John Baldwin <jhb@FreeBSD.org> |
Use the reference count API to manage the reference counts for process limit structures rather than using pool mutexes to protect the reference counts.
Tested on: i386, alpha, sparc64
|
Revision tags: vendor/pf-sys/3.7.001, vendor/openssh/4.2p1, vendor/tzdata/tzdata2005m, vendor/tzdata/tzdata2005l, vendor/bind9/9.3.1p1, vendor/tcpdump/3.9.1, vendor/libpcap/0.9.1, vendor/openpam/FIGWORT, vendor/sendmail/8.13.4_1, vendor/hostapd/0.3.9, vendor/sendmail/8.13.4, vendor/OpenBSD/dhclient_openbsd_3_7, vendor/hostapd/0.3.7, vendor/wpa_supplicant/0.3.8, vendor/openssh/4.1p1, vendor/openssh/4.0p1, vendor/gcc/3.4.4-20050518, vendor/tcpdump/3.9.1-096, vendor/libpcap/0.9.1-096, vendor/ngatm/1.2, vendor/bsnmp/1.10, vendor/misc-GNU/texinfo/4.8, vendor/NetBSD/lukemftp/20050516, vendor/tnftp/20050516, vendor/one-true-awk/20050424, vendor/bzip2/1.0.3, vendor/libregex/fedora-glibc-2.3.4-21, release/5.4.0_cvs, release/5.4.0, vendor/NetBSD/regress_resolv_20050504, vendor/pf/3.7, vendor/pf-sys/3.7, vendor/bsnmp/1.9, vendor/ipfilter/4.1.8, vendor/ipfilter-sys/4-1-8, vendor/zlib/1.2.2, vendor/bind9/9.3.1, vendor/nve/1.0.0301, vendor/bsnmp/1.8, vendor/openssl/0.9.7e, vendor/heimdal/0.6.3, vendor/NetBSD/lukemftp/20050219, vendor/tnftp/20050219, vendor/sendmail/8.13.3, vendor/netcat/20050204, vendor/openpam/FETERITA, release/4.11.0_cvs, release/4.11.0 |
|
#
60727d8b |
| 07-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
/* -> /*- for license, minor formatting changes
|
Revision tags: vendor/file/4.12, vendor/ath/0.9.14.9, vendor/tzdata/tzdata2004g, vendor/acpica/20041119, release/5.3.0_cvs, release/5.3.0, vendor/openssh/3.9p1, vendor/libreadline/5.0p1-p5, vendor/libreadline/5.0, vendor/tzdata/tzdata2004e, vendor/gcc/3.4.2-20041014 |
|
#
78c85e8d |
| 05-Oct-2004 |
John Baldwin <jhb@FreeBSD.org> |
Rework how we store process times in the kernel such that we always store the raw values including for child process statistics and only compute the system and user timevals on demand.
- Fix the var
Rework how we store process times in the kernel such that we always store the raw values including for child process statistics and only compute the system and user timevals on demand.
- Fix the various kern_wait() syscall wrappers to only pass in a rusage pointer if they are going to use the result. - Add a kern_getrusage() function for the ABI syscalls to use so that they don't have to play stackgap games to call getrusage(). - Fix the svr4_sys_times() syscall to just call calcru() to calculate the times it needs rather than calling getrusage() twice with associated stackgap, etc. - Add a new rusage_ext structure to store raw time stats such as tick counts for user, system, and interrupt time as well as a bintime of the total runtime. A new p_rux field in struct proc replaces the same inline fields from struct proc (i.e. p_[isu]ticks, p_[isu]u, and p_runtime). A new p_crux field in struct proc contains the "raw" child time usage statistics. ruadd() has been changed to handle adding the associated rusage_ext structures as well as the values in rusage. Effectively, the values in rusage_ext replace the ru_utime and ru_stime values in struct rusage. These two fields in struct rusage are no longer used in the kernel. - calcru() has been split into a static worker function calcru1() that calculates appropriate timevals for user and system time as well as updating the rux_[isu]u fields of a passed in rusage_ext structure. calcru() uses a copy of the process' p_rux structure to compute the timevals after updating the runtime appropriately if any of the threads in that process are currently executing. It also now only locks sched_lock internally while doing the rux_runtime fixup. calcru() now only requires the caller to hold the proc lock and calcru1() only requires the proc lock internally. calcru() also no longer allows callers to ask for an interrupt timeval since none of them actually did. - calcru() now correctly handles threads executing on other CPUs. - A new calccru() function computes the child system and user timevals by calling calcru1() on p_crux. Note that this means that any code that wants child times must now call this function rather than reading from p_cru directly. This function also requires the proc lock. - This finishes the locking for rusage and friends so some of the Giant locks in exit1() and kern_wait() are now gone. - The locking in ttyinfo() has been tweaked so that a shared lock of the proctree lock is used to protect the process group rather than the process group lock. By holding this lock until the end of the function we now ensure that the process/thread that we pick to dump info about will no longer vanish while we are trying to output its info to the console.
Submitted by: bde (mostly) MFC after: 1 month
show more ...
|
Revision tags: vendor/ngatm/1.1.1, vendor/libbegemot/1.1.1, vendor/bind9/9.3.0, vendor/bind9/9.3.0rc4, vendor/pf/3.5.001, vendor/NetBSD/lukemftpd/20040809, vendor/isc-dhcp/3.0.1, vendor/openssl/0.9.7-dev, vendor/pf-sys/3.5.004, vendor/pf-sys/3.5.003, vendor/misc-GNU/sort/20040812, vendor/gcc/3.4.2-20040728, vendor/ngatm/1.1, vendor/file/4.10, vendor/bsnmp/1.7 |
|
#
e3a64610 |
| 04-Aug-2004 |
Robert Watson <rwatson@FreeBSD.org> |
Annotate locking strategy for 'struct uidinfo'.
|
Revision tags: vendor/sendmail/8.13.1, vendor/ntp/4.2.0 |
|
#
86db59f8 |
| 17-Jul-2004 |
Alfred Perlstein <alfred@FreeBSD.org> |
Change named parameters from max (which conflicts with a macro in libkern.h) to maxval.
|
Revision tags: vendor/pf-sys/3.5.002 |
|
#
52eb8464 |
| 16-Jul-2004 |
John Baldwin <jhb@FreeBSD.org> |
- Move TDF_OWEPREEMPT, TDF_OWEUPC, and TDF_USTATCLOCK over to td_pflags since they are only accessed by curthread and thus do not need any locking. - Move pr_addr and pr_ticks out of struct uprof
- Move TDF_OWEPREEMPT, TDF_OWEUPC, and TDF_USTATCLOCK over to td_pflags since they are only accessed by curthread and thus do not need any locking. - Move pr_addr and pr_ticks out of struct uprof (which is per-process) and directly into struct thread as td_profil_addr and td_profil_ticks as these variables are really per-thread. (They are used to defer an addupc_intr() that was too "hard" until ast()).
show more ...
|
Revision tags: vendor/tcsh/6.13, vendor/ngatm/1.0, vendor/amd/6.0.10p1, vendor/misc-GNU/grep/2.5.1, vendor/libregex/from-grep-2.5.1, vendor/misc-GNU/sort/5.2.1, vendor/acpica/20040527 |
|
#
a3a70178 |
| 02-Jul-2004 |
John Baldwin <jhb@FreeBSD.org> |
Tidy up uprof locking. Mostly the fields are protected by both the proc lock and sched_lock so they can be read with either lock held. Document the locking as well. The one remaining bogosity is t
Tidy up uprof locking. Mostly the fields are protected by both the proc lock and sched_lock so they can be read with either lock held. Document the locking as well. The one remaining bogosity is that pr_addr and pr_ticks should be per-thread but profiling of multithreaded apps is currently undefined.
show more ...
|
Revision tags: vendor/zlib/1.2.1, vendor/isc-dhcp/3.0.1rc14, vendor/gdb/marcel_contrib, vendor/ipfilter/3.4.35, vendor/ipfilter-sys/3-4-35, vendor/tzcode/tzcode2004a, vendor/pf-sys/3.5.001, vendor/pf/3.5, vendor/pf-sys/3.5, vendor/altq/20040607, vendor/misc-GNU/cvs/1.11.17, release/4.10.0_cvs, release/4.10.0, vendor/acpica/20040514, vendor/libuwx/BETA7, vendor/pf-sys/3.4.003, vendor/NetBSD/lukemftp/20040426, vendor/tnftp/20040426, vendor/openssh/3.8.1p1, vendor/less/v381, vendor/misc-GNU/cvs/1.11.15, vendor/bsnmp/1.6, vendor/acpica/20040402, vendor/pf-sys/3.4.002 |
|
#
82c6e879 |
| 07-Apr-2004 |
Warner Losh <imp@FreeBSD.org> |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999.
Approved by: core
|
Revision tags: vendor/openssl/0.9.7d-p1, vendor/heimdal/0.6.1, vendor/com_err/0.6.1, vendor/tcpdump/3.8.3, vendor/libpcap/0.8.3, vendor/pf-sys/3.4.001, vendor/acpica/20040311, vendor/openssl/0.9.7d, vendor/openssl/0.9.7c-patch1, vendor/misc-GNU/grep/2.4.2, vendor/acpica/20040220, vendor/pf/3.4, vendor/openssh/3.8p1, vendor/pf-sys/3.4, vendor/SGI/vjs_20020502, vendor/libregex/from-grep-2.4.2, release/5.2.1_cvs, release/5.2.1, vendor/sendmail/8.12.11, vendor/libreadline/4.3p1-p5, vendor/openpam/EELGRASS, vendor/one-true-awk/20040207 |
|
#
a875f385 |
| 06-Feb-2004 |
John Baldwin <jhb@FreeBSD.org> |
- Convert the plimit lock to a pool mutex lock. - Hide struct plimit from userland.
Submitted by: bde (2)
|
#
99b6e02b |
| 06-Feb-2004 |
John Baldwin <jhb@FreeBSD.org> |
A few more style fixes from Bruce including a few I missed last time.
Submitted by: bde
|
Revision tags: vendor/one-true-awk/20030731 |
|
#
b4323d77 |
| 05-Feb-2004 |
John Baldwin <jhb@FreeBSD.org> |
- A lot of style and whitespace fixes. - Update a few comments regarding locking notes.
Submitted by: bde (1, mostly)
|
#
91d5354a |
| 04-Feb-2004 |
John Baldwin <jhb@FreeBSD.org> |
Locking for the per-process resource limits structure. - struct plimit includes a mutex to protect a reference count. The plimit structure is treated similarly to struct ucred in that is is always
Locking for the per-process resource limits structure. - struct plimit includes a mutex to protect a reference count. The plimit structure is treated similarly to struct ucred in that is is always copy on write, so having a reference to a structure is sufficient to read from it without needing a further lock. - The proc lock protects the p_limit pointer and must be held while reading limits from a process to keep the limit structure from changing out from under you while reading from it. - Various global limits that are ints are not protected by a lock since int writes are atomic on all the archs we support and thus a lock wouldn't buy us anything. - All accesses to individual resource limits from a process are abstracted behind a simple lim_rlimit(), lim_max(), and lim_cur() API that return either an rlimit, or the current or max individual limit of the specified resource from a process. - dosetrlimit() was renamed to kern_setrlimit() to match existing style of other similar syscall helper functions. - The alpha OSF/1 compat layer no longer calls getrlimit() and setrlimit() (it didn't used the stackgap when it should have) but uses lim_rlimit() and kern_setrlimit() instead. - The svr4 compat no longer uses the stackgap for resource limits calls, but uses lim_rlimit() and kern_setrlimit() instead. - The ibcs2 compat no longer uses the stackgap for resource limits. It also no longer uses the stackgap for accessing sysctl's for the ibcs2_sysconf() syscall but uses kernel_sysctl() instead. As a result, ibcs2_sysconf() no longer needs Giant. - The p_rlimit macro no longer exists.
Submitted by: mtm (mostly, I only did a few cleanups and catchups) Tested on: i386 Compiled on: alpha, amd64
show more ...
|
Revision tags: vendor/bsnmp/1.5a, vendor/gdtoa/20040118, release/5.2.0_cvs, release/5.2.0, vendor/alsa/1.9, vendor/openssh/3.7.1p2, vendor/acpica/20031203, vendor/ath/0.9.6.3, vendor/ath/0.9.6.1, vendor/bind/8.3.7, vendor/bsnmp/1.4, vendor/ngatm/0.91, vendor/gcc/3.3.3-20031106, vendor/NetBSD/lukemftp/20031103, vendor/tnftp/20031103, vendor/ath/0.9.5.17, vendor/ngatm/0.9, vendor/libuwx/BETA6 |
|
#
9665592e |
| 28-Oct-2003 |
John Baldwin <jhb@FreeBSD.org> |
According to the submitter, POSIX mandates that all interval timers are reset in a child process after a fork(). Currently, however, only the real timer is cleared while the virtual and profiling ti
According to the submitter, POSIX mandates that all interval timers are reset in a child process after a fork(). Currently, however, only the real timer is cleared while the virtual and profiling timers are inherited.
The realtimer is cleared because it lives directly in struct proc in p_realtimer. It is in the zero'd section of struct proc. The other timers live in the p_timer[] array in struct pstats. These timers are copied on fork() rather than zero'd. The fix is to move p_timer[] to the zero'd part of struct pstats so that they are zero'd instead of copied on fork().
Note: Since at least FreeBSD 2.0 (and possibly earlier) we've had storage for two real interval timers. Now that the uarea is less important, perhaps we could move all of p_timer[] over to struct proc and drop the p_realtimer special case to fix that.
PR: kern/58647 Reported by: Dan Nelson <dnelson@allantgroup.com> MFC after: 1 week
show more ...
|
Revision tags: release/4.9.0_cvs, release/4.9.0, vendor/tzdata/tzdata2003d, vendor/heimdal/cvs-20030922, vendor/heimdal/0.6, vendor/libuwx/BETA5, vendor/openssl/0.9.7c, vendor/sendmail/8.12.10, vendor/sendmail/200309_parseaddr_patch, vendor/openssh/200309-xrealloc-patch, vendor/openssh/200309-buffer-patch, vendor/amd/6.0.9, vendor/isc-dhcp/3.0.1rc12, vendor/libreadline/4.3, vendor/misc-GNU/sort/2.1, vendor/gcc/3.3.1, vendor/acpica/20030619, vendor/ath/0.9.5.2, vendor/one-true-awk/20030729, vendor/openpam/DOGWOOD, vendor/gcc/3.3.1-20030711, vendor/NetBSD/lukemftp/20030630, vendor/tnftp/20030630, vendor/ath/0.9.4.0, vendor/misc-GNU/texinfo/4.6, vendor/bind/8.3.6, vendor/NetBSD/lukemftp/20030615, vendor/tnftp/20030615, release/5.1.0_cvs, release/5.1.0, vendor/openpam/DIGITALIS, vendor/acpica/20030228b, vendor/acpica/20030228a, vendor/libuwx/BETA4, vendor/openpam/DIANTHUS, vendor/misc-GNU/texinfo/4.5, vendor/groff/1.19, vendor/acpica/20030228, vendor/tzdata/tzdata2003a, vendor/openssh/3.6.1p1, vendor/alsa/1.8 |
|
#
e02fef7a |
| 20-Apr-2003 |
Robert Watson <rwatson@FreeBSD.org> |
Use u_int for the struct uidinfo reference count rather than u_short; while >65534 references is unlikely, it is possible.
Reviewed by: tjr
|
Revision tags: vendor/alsa/1.51, vendor/alsa/1.39, release/4.8.0_cvs, release/4.8.0, vendor/sendmail/8.12.9, vendor/gdtoa/20030324, vendor/openssl/secfix-20030317, vendor/openssl/secfix-20030319, vendor/gdtoa/20030318, vendor/one-true-awk/20030314, vendor/gdtoa/20030305, vendor/sendmail/8.12.8, vendor/tcpdump/3.7.2, vendor/file/3.41, vendor/ext2fs/2.4.3-rh7.1 |
|
#
27e39ae4 |
| 20-Feb-2003 |
Tim J. Robbins <tjr@FreeBSD.org> |
Remove the PL_SHAREMOD flag from struct plimit, which could have been used to share resource limits between rfork threads, but never was. Removing it makes resource limit locking much simpler -- only
Remove the PL_SHAREMOD flag from struct plimit, which could have been used to share resource limits between rfork threads, but never was. Removing it makes resource limit locking much simpler -- only the current process can change the contents of the structure that p_limit points to.
show more ...
|