The NetBSD Project

CVS log for src/sys/sys/event.h

[BACK] Up to [cvs.NetBSD.org] / src / sys / sys

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.54 / (download) - annotate - [select for diffs], Tue Jul 19 00:46:00 2022 UTC (6 months, 2 weeks ago) by thorpej
Branch: MAIN
CVS Tags: netbsd-10-base, netbsd-10, bouyer-sunxi-drm-base, bouyer-sunxi-drm, HEAD
Changes since 1.53: +1 -2 lines
Diff to previous 1.53 (colored)

Make some knote implementation details private to kern_event.c.  NFC, and
no ABI change for kevent providers.

Revision 1.53 / (download) - annotate - [select for diffs], Wed Jul 13 14:11:46 2022 UTC (6 months, 3 weeks ago) by thorpej
Branch: MAIN
Changes since 1.52: +5 -25 lines
Diff to previous 1.52 (colored)

Move klist_{init,fini,insert,remove}() into kern_event.c.  NFC.

Revision 1.52 / (download) - annotate - [select for diffs], Sat Feb 12 15:51:29 2022 UTC (11 months, 3 weeks ago) by thorpej
Branch: MAIN
Changes since 1.51: +26 -1 lines
Diff to previous 1.51 (colored)

Add inline functions to manipulate the klists that link up knotes
via kn_selnext:

- klist_init()
- klist_fini()
- klist_insert()
- klist_remove()

These provide some API insulation from the implementation details of these
lists (but not completely; see vn_knote_attach() and vn_knote_detach()).
Currently just a wrapper around SLIST(9).

This will make it significantly easier to switch kn_selnext linkage
to a different kind of list.

Revision 1.51 / (download) - annotate - [select for diffs], Sat Oct 23 01:28:33 2021 UTC (15 months, 1 week ago) by thorpej
Branch: MAIN
Changes since 1.50: +4 -2 lines
Diff to previous 1.50 (colored)

Add support for the EVFILT_EMPTY filter, which is activated when the
write buffer associated with the file descriptor is empty.  This is
currently implemented only for sockets, and is intended primarily to
provide visibility to applications that all previously written data
has been acknowledged by the TCP layer on the receiver.  Compatible
with the same filter in FreeBSD.

Revision 1.50 / (download) - annotate - [select for diffs], Thu Oct 21 02:34:04 2021 UTC (15 months, 1 week ago) by thorpej
Branch: MAIN
Changes since 1.49: +2 -2 lines
Diff to previous 1.49 (colored)

Allow the f_touch() filter op to return an error, specifically in
the EVENT_REGISTER case.

Revision 1.49 / (download) - annotate - [select for diffs], Wed Oct 20 03:08:18 2021 UTC (15 months, 2 weeks ago) by thorpej
Branch: MAIN
Changes since 1.48: +5 -1 lines
Diff to previous 1.48 (colored)

Overhaul of the EVFILT_VNODE kevent(2) filter:

- Centralize vnode kevent handling in the VOP_*() wrappers, rather than
  forcing each individual file system to deal with it (except VOP_RENAME(),
  because VOP_RENAME() is a mess and we currently have 2 different ways
  of handling it; at least it's reasonably well-centralized in the "new"
  way).
- Add support for NOTE_OPEN, NOTE_CLOSE, NOTE_CLOSE_WRITE, and NOTE_READ,
  compatible with the same events in FreeBSD.
- Track which kevent notifications clients are interested in receiving
  to avoid doing work for events no one cares about (avoiding, e.g.
  taking locks and traversing the klist to send a NOTE_WRITE when
  someone is merely watching for a file to be deleted, for example).

In support of the above:

- Add support in vnode_if.sh for specifying PRE- and POST-op handlers,
  to be invoked before and after vop_pre() and vop_post(), respectively.
  Basic idea from FreeBSD, but implemented differently.
- Add support in vnode_if.sh for specifying CONTEXT fields in the
  vop_*_args structures.  These context fields are used to convey information
  between the file system VOP function and the VOP wrapper, but do not
  occupy an argument slot in the VOP_*() call itself.  These context fields
  are initialized and subsequently interpreted by PRE- and POST-op handlers.
- Version VOP_REMOVE(), uses the a context field for the file system to report
  back the resulting link count of the target vnode.  Return this in tmpfs,
  udf, nfs, chfs, ext2fs, lfs, and ufs.

NetBSD 9.99.92.

Revision 1.48 / (download) - annotate - [select for diffs], Wed Oct 13 04:57:19 2021 UTC (15 months, 3 weeks ago) by thorpej
Branch: MAIN
Changes since 1.47: +11 -1 lines
Diff to previous 1.47 (colored)

Add support for the NOTE_SECONDS, NOTE_MSECONDS, NOTE_USECONDS,
NOTE_NSECONDS, and NOTE_ABSTIME filter flags to EVFILT_TIMER,
API-compatible with the same in FreeBSD.

Revision 1.47 / (download) - annotate - [select for diffs], Mon Oct 11 01:21:28 2021 UTC (15 months, 3 weeks ago) by thorpej
Branch: MAIN
Changes since 1.46: +7 -1 lines
Diff to previous 1.46 (colored)

Add a clarifying comment about it being safe to modify knote::kn_flags
without synchronization in the filter attach routine.  This is safe
because the knote has not yet been published, and is typically used to
force EV_CLEAR and/or EV_ONESHOT on that filter's knotes.

Revision 1.46 / (download) - annotate - [select for diffs], Mon Oct 11 01:07:36 2021 UTC (15 months, 3 weeks ago) by thorpej
Branch: MAIN
Changes since 1.45: +3 -1 lines
Diff to previous 1.45 (colored)

Setting EV_EOF requires modifying kn->kn_flags.  However, that relies on
holding the kq_lock of that note's kq.  Rather than exposing this directly,
add new knote_set_eof() and knote_clear_eof() functions that handle the
necessary locking and don't leak as many implementation details to modules.

NetBSD 9.99.91

Revision 1.45 / (download) - annotate - [select for diffs], Sun Oct 10 23:30:44 2021 UTC (15 months, 3 weeks ago) by thorpej
Branch: MAIN
Changes since 1.44: +5 -5 lines
Diff to previous 1.44 (colored)

Document the locking rules for the fields of the kevent that's
embedded in a knote.

Revision 1.44 / (download) - annotate - [select for diffs], Sun Oct 10 18:07:51 2021 UTC (15 months, 3 weeks ago) by thorpej
Branch: MAIN
Changes since 1.43: +5 -2 lines
Diff to previous 1.43 (colored)

Changes to make EVFILT_PROC MP-safe:

Because the locking protocol around processes is somewhat complex
compared to other events that can be posted on kqueues, introduce
new functions for posting NOTE_EXEC, NOTE_EXIT, and NOTE_FORK,
rather than just using the generic knote() function.  These functions
KASSERT() their locking expectations, and deal with other complexities
for each situation.

knote_proc_fork(), in particiular, needs to handle NOTE_TRACK, which
requires allocation of a new knote to attach to the child process.  We
don't want to be allocating memory while holding the parent's p_lock.
Furthermore, we also have to attach the tracking note to the child
process, which means we have to acquire the child's p_lock.

So, to handle all this, we introduce some additional synchronization
infrastructure around the 'knote' structure:

- Add the ability to mark a knote as being in a state of flux.  Knotes
  in this state are guaranteed not to be detached/deleted, thus allowing
  a code path drop other locks after putting a knote in this state.

- Code paths that wish to detach/delete a knote must first check if the
  knote is in-flux.  If so, they must wait for it to quiesce.  Because
  multiple threads of execution may attempt this concurrently, a mechanism
  exists for a single LWP to claim the detach responsibility; all other
  threads simply wait for the knote to disappear before they can make
  further progress.

- When kqueue_scan() encounters an in-flux knote, it simply treats the
  situation just like encountering another thread's queue marker -- wait
  for the flux to settle and continue on.

(The "in-flux knote" idea was inspired by FreeBSD, but this works differently
from their implementation, as the two kqueue implementations have diverged
quite a bit.)

knote_proc_fork() uses this infrastructure to implement NOTE_TRACK like so:

- Attempt to put the original tracking knote into a state of flux; if this
  fails (because the note has a detach pending), we skip all processing
  (the original process has lost interest, and we simply won the race).

- Once the note is in-flux, drop the kq and forking process's locks, and
  allocate 2 knotes: one to post the NOTE_CHILD event, and one to attach
  a new NOTE_TRACK to the child process.  Notably, we do NOT go through
  kqueue_register() to do this, but rather do all of the work directly
  and KASSERT() our assumptions; this allows us to directly control our
  interaction with locks.  All memory allocations here are performed with
  KM_NOSLEEP, in order to prevent holding the original knote in-flux
  indefinitely.

- Because the NOTE_TRACK use case adds knotes to kqueues through a
  sort of back-door mechanism, we must serialize with the closing of
  the destination kqueue's file descriptor, so steal another bit from
  the kq_count field to notify other threads that a kqueue is on its
  way out to prevent new knotes from being enqueued while the close
  path detaches them.

In addition to fixing EVFILT_PROC's reliance on KERNEL_LOCK, this also
fixes a long-standing bug whereby a NOTE_CHILD event could be dropped
if the child process exited before the interested process received the
NOTE_CHILD event (the same knote would be used to deliver the NOTE_EXIT
event, and would clobber the NOTE_CHILD's 'data' field).

Add a bunch of comments to explain what's going on in various critical
sections, and sprinkle additional KASSERT()s to validate assumptions
in several more locations.

Revision 1.43 / (download) - annotate - [select for diffs], Sun Sep 26 21:29:39 2021 UTC (16 months, 1 week ago) by thorpej
Branch: MAIN
Changes since 1.42: +2 -4 lines
Diff to previous 1.42 (colored)

Fix the locking around EVFILT_FS.  Previously, the code would walk the
fs_klist and take the kqueue_misc_lock inside the event callback.
However, that list can be modified by the attach and detach callbacks,
which could result in the walker stepping right off a cliff.

Instead, we give the fs_klist it's own lock, and hold it while we
call knote(), using the NOTE_SUBMIT protocol.  Also, fs_filtops
into vfs_syscalls.c so all of the locking logic is contained in one
file (there is precedence with sig_filtops).  fs_filtops is now marked
MPSAFE.

Revision 1.42 / (download) - annotate - [select for diffs], Sun Sep 26 03:12:50 2021 UTC (16 months, 1 week ago) by thorpej
Branch: MAIN
Changes since 1.41: +2 -1 lines
Diff to previous 1.41 (colored)

- Define a new filterops flag FILTEROP_MPSAFE, which states that the
  kqueue filter does not require the KERNEL_LOCK to be held.
- Add wrappers around the calls into the filterops that take care of
  the locking requirements.

No functional change, since no filterops yet define FILTEROP_MPSAFE.

Revision 1.41 / (download) - annotate - [select for diffs], Sun Sep 26 01:16:10 2021 UTC (16 months, 1 week ago) by thorpej
Branch: MAIN
Changes since 1.40: +5 -2 lines
Diff to previous 1.40 (colored)

Change the kqueue filterops::f_isfd field to filterops::f_flags, and
define a flag FILTEROP_ISFD that has the meaning of the prior f_isfd.
Field and flag name aligned with OpenBSD.

This does not constitute a functional or ABI change, as the field location
and size, and the value placed in that field, are the same as the previous
code, but we're bumping __NetBSD_Version__ so 3rd-party module source code
can adapt, as needed.

NetBSD 9.99.89

Revision 1.40 / (download) - annotate - [select for diffs], Sat Oct 31 14:55:52 2020 UTC (2 years, 3 months ago) by christos
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-futex, 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.39: +15 -1 lines
Diff to previous 1.39 (colored)

Add an array of filter names.

Revision 1.39 / (download) - annotate - [select for diffs], Sat Oct 31 01:08:32 2020 UTC (2 years, 3 months ago) by christos
Branch: MAIN
Changes since 1.38: +34 -2 lines
Diff to previous 1.38 (colored)

PR/55663: Ruslan Nikolaev: Add support for EVFILT_USER in kqueue(2)

Revision 1.32.4.1 / (download) - annotate - [select for diffs], Mon Apr 13 08:05:20 2020 UTC (2 years, 9 months ago) by martin
Branch: phil-wifi
Changes since 1.32: +7 -7 lines
Diff to previous 1.32 (colored) next main 1.33 (colored)

Mostly merge changes from HEAD upto 20200411

Revision 1.38 / (download) - annotate - [select for diffs], Thu Oct 3 22:16:52 2019 UTC (3 years, 4 months ago) by kamil
Branch: MAIN
CVS Tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, phil-wifi-20191119, 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.37: +3 -42 lines
Diff to previous 1.37 (colored)

Switch kevent udata from intptr_t void*

Synchromize the struct field format with other BSDs and Darwin.

No ABI change between older and newer struct form on the ports.

The change will require no changes to most C users during the transition
period as the header keeps a caller cast.

Discussed with core@ and there were no objections for this move.

Revision 1.32.8.2 / (download) - annotate - [select for diffs], Mon Aug 26 13:24:19 2019 UTC (3 years, 5 months ago) by martin
Branch: netbsd-9
CVS Tags: netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1
Changes since 1.32.8.1: +4 -18 lines
Diff to previous 1.32.8.1 (colored) to branchpoint 1.32 (colored) next main 1.33 (colored)

Backout pullup of rev.1.33, requested by kamil in ticket #22: this
will need further work, there is still on going discussion in -current,
and this intermediate state breaks 3rd party code.

Revision 1.37 / (download) - annotate - [select for diffs], Sat Aug 10 23:47:13 2019 UTC (3 years, 5 months ago) by kamil
Branch: MAIN
Changes since 1.36: +2 -2 lines
Diff to previous 1.36 (colored)

Fix typo in pragma in sys/event.h

Reenable -Wconversion-null.

Revision 1.36 / (download) - annotate - [select for diffs], Sat Aug 10 20:33:01 2019 UTC (3 years, 5 months ago) by kamil
Branch: MAIN
Changes since 1.35: +14 -47 lines
Diff to previous 1.35 (colored)

Use common macro for _EV_SET() for integer types

Deduplicate code.

No functional change change intended.

Revision 1.35 / (download) - annotate - [select for diffs], Sat Aug 10 15:02:03 2019 UTC (3 years, 5 months ago) by kamil
Branch: MAIN
Changes since 1.34: +61 -11 lines
Diff to previous 1.34 (colored)

Handle more corner cases in sys/event.h for C++ EV_SET()

Handle the udata argument as Plain-Old-Data types separately.

 - int, long int, long long int
 - unsigned int, unsigned long int, unsigned long long int
 - void *

This approach handles each of the POD types separately on purpose as
intermediate types such as intptr_t can be either int or long (even long
long) and handling them is not portable.

This approach is compatibile with C++98 and newer.

Fixes i386 usage.

Revision 1.34 / (download) - annotate - [select for diffs], Sat Aug 10 11:20:50 2019 UTC (3 years, 5 months ago) by kamil
Branch: MAIN
Changes since 1.33: +9 -1 lines
Diff to previous 1.33 (colored)

Add fallback defintion for C++ of _EV_SET with the last argument of type 0

Converting 0 to intptr and void* is ambiguous according to a C++ compiler.
New _EV_SET() accepts int type and casts it with static_cast<int>() to
intptr_t.

Reported and fix tested by <John D. Baker>

Revision 1.32.8.1 / (download) - annotate - [select for diffs], Tue Aug 6 16:22:04 2019 UTC (3 years, 5 months ago) by martin
Branch: netbsd-9
Changes since 1.32: +19 -5 lines
Diff to previous 1.32 (colored)

Pull up following revision(s) (requested by kamil in ticket #22):

	sys/sys/event.h: revision 1.33

Make EV_SET() casts compatible with the C++ code

EV_SET() handles cast that are expected to work with alternative
kqueue/kevent implementations that take arguments in different types.

Unfortunately void* -> intptr_t cast cannot be done with
static_cast<intptr_t>() as it needs reinterpret_cast<intptr_t>().

Just switching to reinterpret_cast<intptr_t>() is still not sufficient as=
it does not handle NULL argument without a compiler error/warning.

Add a compatibility function for the C++ case of _EV_SET() that accepts
the udata argument in the form of void* and performs clean
reinterpret_cast<>() internally.

There is no change for C users.

Tested by <nia>

Proposed on tech-userlevel@.

Revision 1.33 / (download) - annotate - [select for diffs], Tue Aug 6 11:21:59 2019 UTC (3 years, 5 months ago) by kamil
Branch: MAIN
Changes since 1.32: +19 -5 lines
Diff to previous 1.32 (colored)

Make EV_SET() casts compatible with the C++ code

EV_SET() handles cast that are expected to work with alternative
kqueue/kevent implementations that take arguments in different types.

Unfortunately void* -> intptr_t cast cannot be done with
static_cast<intptr_t>() as it needs reinterpret_cast<intptr_t>().

Just switching to reinterpret_cast<intptr_t>() is still not sufficient as
it does not handle NULL argument without a compiler error/warning.

Add a compatibility function for the C++ case of _EV_SET() that accepts
the udata argument in the form of void* and performs clean
reinterpret_cast<>() internally.

There is no change for C users.

Tested by <nia>

Proposed on tech-userlevel@.

Revision 1.32 / (download) - annotate - [select for diffs], Tue Jan 9 03:31:13 2018 UTC (5 years ago) by christos
Branch: MAIN
CVS Tags: phil-wifi-base, 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, isaki-audio2-base, isaki-audio2
Branch point for: phil-wifi, netbsd-9
Changes since 1.31: +5 -2 lines
Diff to previous 1.31 (colored)

Merge autofs support from: Tomohiro Kusumi
XXX: Does not work yet

Revision 1.23.12.1 / (download) - annotate - [select for diffs], Sun Dec 3 11:39:20 2017 UTC (5 years, 2 months ago) by jdolecek
Branch: tls-maxphys
Changes since 1.23: +75 -57 lines
Diff to previous 1.23 (colored) next main 1.24 (colored)

update from HEAD

Revision 1.31 / (download) - annotate - [select for diffs], Sat Sep 16 23:54:32 2017 UTC (5 years, 4 months ago) by christos
Branch: MAIN
CVS Tags: tls-maxphys-base-20171202
Changes since 1.30: +10 -1 lines
Diff to previous 1.30 (colored)

Add flags bits print

Revision 1.23.30.4 / (download) - annotate - [select for diffs], Mon Aug 28 17:53:16 2017 UTC (5 years, 5 months ago) by skrll
Branch: nick-nhusb
Changes since 1.23.30.3: +23 -17 lines
Diff to previous 1.23.30.3 (colored) to branchpoint 1.23 (colored) next main 1.24 (colored)

Sync with HEAD

Revision 1.23.28.1 / (download) - annotate - [select for diffs], Sat Jul 8 16:53:24 2017 UTC (5 years, 6 months ago) by snj
Branch: netbsd-7
CVS Tags: netbsd-7-2-RELEASE
Changes since 1.23: +66 -57 lines
Diff to previous 1.23 (colored) next main 1.24 (colored)

Pull up following revision(s) (requested by christos in ticket #1442):
	sys/kern/kern_event.c: revision 1.92 via patch
	sys/miscfs/genfs/genfs_vnops.c: revision 1.198 via patch
	sys/sys/event.h: revision 1.30 via patch
Provide EVFILT_WRITE; this is what FreeBSD does and go wants it.
Makes go unit tests pass.
--
fix file descriptor locking (from joerg).
fixes kernel crashes by running go

Revision 1.23.36.1 / (download) - annotate - [select for diffs], Sat Jul 8 16:52:27 2017 UTC (5 years, 6 months ago) by snj
Branch: netbsd-7-1
CVS Tags: netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE
Changes since 1.23: +66 -57 lines
Diff to previous 1.23 (colored) next main 1.24 (colored)

Pull up following revision(s) (requested by christos in ticket #1442):
	sys/kern/kern_event.c: revision 1.92 via patch
	sys/miscfs/genfs/genfs_vnops.c: revision 1.198 via patch
	sys/sys/event.h: revision 1.30 via patch
Provide EVFILT_WRITE; this is what FreeBSD does and go wants it.
Makes go unit tests pass.
--
fix file descriptor locking (from joerg).
fixes kernel crashes by running go

Revision 1.23.32.1 / (download) - annotate - [select for diffs], Sat Jul 8 16:51:56 2017 UTC (5 years, 6 months ago) by snj
Branch: netbsd-7-0
Changes since 1.23: +66 -57 lines
Diff to previous 1.23 (colored) next main 1.24 (colored)

Pull up following revision(s) (requested by christos in ticket #1442):
	sys/kern/kern_event.c: revision 1.92 via patch
	sys/miscfs/genfs/genfs_vnops.c: revision 1.198 via patch
	sys/sys/event.h: revision 1.30 via patch
Provide EVFILT_WRITE; this is what FreeBSD does and go wants it.
Makes go unit tests pass.
--
fix file descriptor locking (from joerg).
fixes kernel crashes by running go

Revision 1.28.2.1 / (download) - annotate - [select for diffs], Wed Jul 5 20:04:40 2017 UTC (5 years, 7 months ago) by snj
Branch: netbsd-8
CVS Tags: netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, matt-nb8-mediatek-base, matt-nb8-mediatek
Changes since 1.28: +7 -6 lines
Diff to previous 1.28 (colored) next main 1.29 (colored)

Pull up following revision(s) (requested by christos in ticket #91):
	sys/kern/kern_event.c: revision 1.92
	sys/miscfs/genfs/genfs_vnops.c: revision 1.198
	sys/sys/event.h: revision 1.30
Provide EVFILT_WRITE; this is what FreeBSD does and go wants it.
Makes go unit tests pass.
--
fix file descriptor locking (from joerg).
fixes kernel crashes by running go

Revision 1.30 / (download) - annotate - [select for diffs], Sat Jul 1 20:08:56 2017 UTC (5 years, 7 months ago) by christos
Branch: MAIN
CVS Tags: perseant-stdc-iso10646-base, perseant-stdc-iso10646, nick-nhusb-base-20170825
Changes since 1.29: +7 -6 lines
Diff to previous 1.29 (colored)

fix file descriptor locking (from joerg).
fixes kernel crashes by running go
XXX: pullup-7

Revision 1.29 / (download) - annotate - [select for diffs], Wed Jun 14 16:37:05 2017 UTC (5 years, 7 months ago) by christos
Branch: MAIN
Changes since 1.28: +6 -5 lines
Diff to previous 1.28 (colored)

- cast ident argument because it is usually an fd (signed) and generates
  conversion to unsigned warnings.
While here:
- name the macro parameters with meaningful names
- rename the internal inline function as _FOO instead of FOO_ because there
  is no other FOO_ name in the system headers.

Revision 1.28 / (download) - annotate - [select for diffs], Fri Jun 2 19:44:06 2017 UTC (5 years, 8 months ago) by kamil
Branch: MAIN
CVS Tags: netbsd-8-base
Branch point for: netbsd-8
Changes since 1.27: +5 -2 lines
Diff to previous 1.27 (colored)

Convert EV_SET(2) back into macro again

This retains compatibility with other moder BSDs if someone uses:
"#ifdef EV_SET".

This code also casts the last parameter to intptr_t, as other BSDs keep
this argument with a different type void*.

This change renames function EV_SET to EV_SET_, and calls it from EV_SET().

Credit to <christos> and <kre> for feedback.

Sponsored by <The NetBSD Foundation>

Revision 1.27 / (download) - annotate - [select for diffs], Wed May 31 00:45:59 2017 UTC (5 years, 8 months ago) by kamil
Branch: MAIN
Changes since 1.26: +13 -12 lines
Diff to previous 1.26 (colored)

Convert EV_SET from macro to static __inline function

LLDB introduced support for kevent(2) and it contains the following function:

Status MainLoop::RunImpl::Poll() {
  in_events.resize(loop.m_read_fds.size());
  unsigned i = 0;
  for (auto &fd : loop.m_read_fds)
    EV_SET(&in_events[i++], fd.first, EVFILT_READ, EV_ADD, 0, 0, 0);
  num_events = kevent(loop.m_kqueue, in_events.data(), in_events.size(),
                      out_events, llvm::array_lengthof(out_events), nullptr);
  if (num_events < 0)
    return Status("kevent() failed with error %d\n", num_events);
  return Status();
}

It works on FreeBSD and MacOSX, however it broke on NetBSD.

Culrpit line:
   EV_SET(&in_events[i++], fd.first, EVFILT_READ, EV_ADD, 0, 0, 0);

FreeBSD defined EV_SET() as a macro this way:
#define EV_SET(kevp_, a, b, c, d, e, f) do {    \
        struct kevent *kevp = (kevp_);          \
        (kevp)->ident = (a);                    \
        (kevp)->filter = (b);                   \
        (kevp)->flags = (c);                    \
        (kevp)->fflags = (d);                   \
        (kevp)->data = (e);                     \
        (kevp)->udata = (f);                    \
} while(0)

NetBSD version was different:
#define EV_SET(kevp, a, b, c, d, e, f)                                  \
do {                                                                    \
        (kevp)->ident = (a);                                            \
        (kevp)->filter = (b);                                           \
        (kevp)->flags = (c);                                            \
        (kevp)->fflags = (d);                                           \
        (kevp)->data = (e);                                             \
        (kevp)->udata = (f);                                            \
} while (/* CONSTCOND */ 0)

This resulted in heap damage, as keyp was incremented every time value was
assigned to (keyp)->.

As suggested by Joerg, convert this macro on NetBSD to static __inline
function.

Credit to <coypu> for asan+ubsan research wiki entry that helped to narrow
down the bug.
Credit to <joerg> for peer-review

Sponsored by <The NetBSD Foundation>

Revision 1.23.30.3 / (download) - annotate - [select for diffs], Sat Mar 19 11:30:39 2016 UTC (6 years, 10 months ago) by skrll
Branch: nick-nhusb
Changes since 1.23.30.2: +2 -1 lines
Diff to previous 1.23.30.2 (colored) to branchpoint 1.23 (colored)

Sync with HEAD

Revision 1.26 / (download) - annotate - [select for diffs], Sun Jan 31 04:40:01 2016 UTC (7 years ago) by christos
Branch: MAIN
CVS Tags: prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, pgoyette-localcount-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, pgoyette-localcount, nick-nhusb-base-20170204, nick-nhusb-base-20161204, nick-nhusb-base-20161004, nick-nhusb-base-20160907, nick-nhusb-base-20160529, nick-nhusb-base-20160422, nick-nhusb-base-20160319, localcount-20160914, jdolecek-ncq-base, jdolecek-ncq, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan
Changes since 1.25: +2 -1 lines
Diff to previous 1.25 (colored)

PR/50730: Benny Siegert: Go kqueue test panics kernel.
- use a marker knote from the stack instead of allocating and freeing on
  each scan.
- add more KASSERTS
- introduce a KN_BUSY bit that indicates that the knote is currently being
  scanned, so that knote_detach does not end up deleting it when the file
  descriptor gets closed and we don't end up using/trashing free memory from
  the scan.

Revision 1.23.30.2 / (download) - annotate - [select for diffs], Sun Dec 27 12:10:18 2015 UTC (7 years, 1 month ago) by skrll
Branch: nick-nhusb
Changes since 1.23.30.1: +3 -1 lines
Diff to previous 1.23.30.1 (colored) to branchpoint 1.23 (colored)

Sync with HEAD (as of 26th Dec)

Revision 1.25 / (download) - annotate - [select for diffs], Tue Dec 8 14:52:06 2015 UTC (7 years, 1 month ago) by christos
Branch: MAIN
CVS Tags: nick-nhusb-base-20151226
Changes since 1.24: +3 -1 lines
Diff to previous 1.24 (colored)

PR/50506: Tobias Nygren: kqueue(2) lacks EV_DISPATCH/EV_RECEIPT support

Revision 1.23.30.1 / (download) - annotate - [select for diffs], Mon Apr 6 15:18:32 2015 UTC (7 years, 10 months ago) by skrll
Branch: nick-nhusb
Changes since 1.23: +42 -42 lines
Diff to previous 1.23 (colored)

Sync with HEAD

Revision 1.24 / (download) - annotate - [select for diffs], Wed Jan 14 22:21:00 2015 UTC (8 years ago) by christos
Branch: MAIN
CVS Tags: nick-nhusb-base-20150921, nick-nhusb-base-20150606, nick-nhusb-base-20150406
Changes since 1.23: +42 -42 lines
Diff to previous 1.23 (colored)

make unsigned constants that.

Revision 1.23 / (download) - annotate - [select for diffs], Sun Jun 26 16:43:12 2011 UTC (11 years, 7 months ago) by christos
Branch: MAIN
CVS Tags: yamt-pagecache-tag8, yamt-pagecache-base9, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, yamt-pagecache, tls-maxphys-base, tls-earlyentropy-base, tls-earlyentropy, rmind-smpnet-nbase, rmind-smpnet-base, rmind-smpnet, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, nick-nhusb-base, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, khorben-n900, jmcneill-usbmp-pre-base2, jmcneill-usbmp-base9, jmcneill-usbmp-base8, jmcneill-usbmp-base7, jmcneill-usbmp-base6, jmcneill-usbmp-base5, jmcneill-usbmp-base4, jmcneill-usbmp-base3, jmcneill-usbmp-base2, jmcneill-usbmp-base10, jmcneill-usbmp-base, jmcneill-usbmp, jmcneill-audiomp3-base, jmcneill-audiomp3, agc-symver-base, agc-symver
Branch point for: tls-maxphys, nick-nhusb, netbsd-7-1, netbsd-7-0, netbsd-7
Changes since 1.22: +2 -1 lines
Diff to previous 1.22 (colored)

* Arrange for interfaces that create new file descriptors to be able to
  set close-on-exec on creation (http://udrepper.livejournal.com/20407.html).

    - Add F_DUPFD_CLOEXEC to fcntl(2).
    - Add MSG_CMSG_CLOEXEC to recvmsg(2) for unix file descriptor passing.
    - Add dup3(2) syscall with a flags argument for O_CLOEXEC, O_NONBLOCK.
    - Add pipe2(2) syscall with a flags argument for O_CLOEXEC, O_NONBLOCK.
    - Add flags SOCK_CLOEXEC, SOCK_NONBLOCK to the socket type parameter
      for socket(2) and socketpair(2).
    - Add new paccept(2) syscall that takes an additional sigset_t to alter
      the sigmask temporarily and a flags argument to set SOCK_CLOEXEC,
      SOCK_NONBLOCK.
    - Add new mode character 'e' to fopen(3) and popen(3) to open pipes
      and file descriptors for close on exec.
    - Add new kqueue1(2) syscall with a new flags argument to open the
      kqueue file descriptor with O_CLOEXEC, O_NONBLOCK.

* Fix the system calls that take socklen_t arguments to actually do so.

* Don't include userland header files (signal.h) from system header files
  (rump_syscallargs.h).

* Bump libc version for the new syscalls.

Revision 1.21.8.1 / (download) - annotate - [select for diffs], Mon Jun 6 09:10:10 2011 UTC (11 years, 8 months ago) by jruoho
Branch: jruoho-x86intr
Changes since 1.21: +1 -4 lines
Diff to previous 1.21 (colored) next main 1.22 (colored)

Sync with HEAD.

Revision 1.21.6.1 / (download) - annotate - [select for diffs], Tue May 31 03:05:12 2011 UTC (11 years, 8 months ago) by rmind
Branch: rmind-uvmplock
Changes since 1.21: +1 -4 lines
Diff to previous 1.21 (colored) next main 1.22 (colored)

sync with head

Revision 1.22 / (download) - annotate - [select for diffs], Sun Apr 24 18:46:24 2011 UTC (11 years, 9 months ago) by rmind
Branch: MAIN
CVS Tags: rmind-uvmplock-nbase, rmind-uvmplock-base, cherry-xenmp-base, cherry-xenmp
Changes since 1.21: +1 -4 lines
Diff to previous 1.21 (colored)

- Replace few malloc(9) uses with kmem(9).
- Rename buf_malloc() to buf_alloc(), fix comments.
- Remove some unnecessary inclusions.

Revision 1.20.6.1 / (download) - annotate - [select for diffs], Mon May 4 08:14:35 2009 UTC (13 years, 9 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.20: +12 -5 lines
Diff to previous 1.20 (colored) next main 1.21 (colored)

sync with head.

Revision 1.20.14.1 / (download) - annotate - [select for diffs], Mon Jan 19 13:20:29 2009 UTC (14 years ago) by skrll
Branch: nick-hppapmap
Changes since 1.20: +12 -5 lines
Diff to previous 1.20 (colored) next main 1.21 (colored)

Sync with HEAD.

Revision 1.19.14.2 / (download) - annotate - [select for diffs], Sat Jan 17 13:29:40 2009 UTC (14 years ago) by mjf
Branch: mjf-devfs2
Changes since 1.19.14.1: +11 -4 lines
Diff to previous 1.19.14.1 (colored) to branchpoint 1.19 (colored) next main 1.20 (colored)

Sync with HEAD.

Revision 1.21 / (download) - annotate - [select for diffs], Sun Jan 11 02:45:55 2009 UTC (14 years ago) by christos
Branch: MAIN
CVS Tags: yamt-nfs-mp-base9, yamt-nfs-mp-base8, yamt-nfs-mp-base7, yamt-nfs-mp-base6, yamt-nfs-mp-base5, yamt-nfs-mp-base4, yamt-nfs-mp-base3, yamt-nfs-mp-base11, yamt-nfs-mp-base10, uebayasi-xip-base7, uebayasi-xip-base6, uebayasi-xip-base5, uebayasi-xip-base4, uebayasi-xip-base3, uebayasi-xip-base2, uebayasi-xip-base1, uebayasi-xip-base, uebayasi-xip, nick-hppapmap-base4, nick-hppapmap-base3, nick-hppapmap-base2, nick-hppapmap-base, mjf-devfs2-base, matt-premerge-20091211, matt-mips64-premerge-20101231, jymxensuspend-base, jym-xensuspend-nbase, jym-xensuspend-base, jym-xensuspend, jruoho-x86intr-base, bouyer-quota2-nbase, bouyer-quota2-base, bouyer-quota2
Branch point for: rmind-uvmplock, jruoho-x86intr
Changes since 1.20: +12 -5 lines
Diff to previous 1.20 (colored)

merge christos-time_t

Revision 1.20.2.2 / (download) - annotate - [select for diffs], Sun Nov 9 21:37:14 2008 UTC (14 years, 2 months ago) by christos
Branch: christos-time_t
Changes since 1.20.2.1: +3 -1 lines
Diff to previous 1.20.2.1 (colored) to branchpoint 1.20 (colored) next main 1.21 (colored)

fix kevent

Revision 1.19.14.1 / (download) - annotate - [select for diffs], Thu Apr 3 12:43:11 2008 UTC (14 years, 10 months ago) by mjf
Branch: mjf-devfs2
Changes since 1.19: +25 -19 lines
Diff to previous 1.19 (colored)

Sync with HEAD.

Revision 1.20.2.1 / (download) - annotate - [select for diffs], Sat Mar 29 20:47:03 2008 UTC (14 years, 10 months ago) by christos
Branch: christos-time_t
Changes since 1.20: +10 -5 lines
Diff to previous 1.20 (colored)

Welcome to the time_t=long long dev_t=uint64_t branch.

Revision 1.15.4.4 / (download) - annotate - [select for diffs], Mon Mar 24 09:39:10 2008 UTC (14 years, 10 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.15.4.3: +25 -19 lines
Diff to previous 1.15.4.3 (colored) to branchpoint 1.15 (colored) next main 1.16 (colored)

sync with head.

Revision 1.20 / (download) - annotate - [select for diffs], Fri Mar 21 21:53:35 2008 UTC (14 years, 10 months ago) by ad
Branch: MAIN
CVS Tags: yamt-pf42-baseX, yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, yamt-pf42-base, yamt-pf42, yamt-nfs-mp-base2, yamt-nfs-mp-base, yamt-lazymbuf-base15, yamt-lazymbuf-base14, wrstuden-revivesa-base-4, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, wrstuden-revivesa-base-1, wrstuden-revivesa-base, wrstuden-revivesa, simonb-wapbl-nbase, simonb-wapbl-base, simonb-wapbl, netbsd-5-base, netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, netbsd-5, matt-nb5-pq3-base, matt-nb5-pq3, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb5-mips64, matt-nb4-mips64-k7-u2a-k9b, matt-mips64-base2, hpcarm-cleanup-nbase, haad-nbase2, haad-dm-base2, haad-dm-base1, haad-dm-base, haad-dm, christos-time_t-nbase, christos-time_t-base, ad-socklock-base1, ad-audiomp2-base, ad-audiomp2
Branch point for: yamt-nfs-mp, nick-hppapmap, christos-time_t
Changes since 1.19: +25 -19 lines
Diff to previous 1.19 (colored)

File descriptor changes, discussed on tech-kern:

- Redo reference counting to be sane.  LWPs accessing files take a short
  term reference on the local file descriptor.  This is the most common
  case.  While a file is in a process descriptor table, a reference is
  held to the file.  The file reference count only changes during control
  operations like open() or close().  Code that comes at files from an
  unusual direction (i.e. foreign to the process) like procfs or sysctl
  takes a reference on the file (f_count), and not on a descriptor.

- Remove knowledge of reference counting and locking from most code that
  deals with files.

- Make the usual case of file descriptor lookup lockless.

- Make kqueue MP and MT safe. PR kern/38098, PR kern/38137.

- Fix numerous file handling bugs, and bugs in the descriptor code that
  affected multithreaded processes.

- Split descriptor system calls out into sys_descrip.c.

- A few stylistic changes: KNF, remove unused casts now that caddr_t is
  gone. Replace dumb gotos with loop control in a few places.

- Don't do redundant pointer passing (struct proc, lwp, filedesc *) unless
  the routine is likely to be inlined.  Most of the time it's about the
  current process.

Revision 1.18.6.1 / (download) - annotate - [select for diffs], Wed Jan 9 01:58:07 2008 UTC (15 years ago) by matt
Branch: matt-armv6
Changes since 1.18: +2 -1 lines
Diff to previous 1.18 (colored) next main 1.19 (colored)

sync with HEAD

Revision 1.18.4.1 / (download) - annotate - [select for diffs], Sun Dec 9 19:38:47 2007 UTC (15 years, 1 month ago) by jmcneill
Branch: jmcneill-pm
Changes since 1.18: +2 -1 lines
Diff to previous 1.18 (colored) next main 1.19 (colored)

Sync with HEAD.

Revision 1.18.12.1 / (download) - annotate - [select for diffs], Sat Dec 8 18:21:30 2007 UTC (15 years, 1 month ago) by mjf
Branch: mjf-devfs
Changes since 1.18: +2 -1 lines
Diff to previous 1.18 (colored) next main 1.19 (colored)

Sync with HEAD.

Revision 1.15.4.3 / (download) - annotate - [select for diffs], Fri Dec 7 17:34:53 2007 UTC (15 years, 2 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.15.4.2: +2 -1 lines
Diff to previous 1.15.4.2 (colored) to branchpoint 1.15 (colored)

sync with head

Revision 1.19 / (download) - annotate - [select for diffs], Mon Dec 3 15:21:57 2007 UTC (15 years, 2 months ago) by pooka
Branch: MAIN
CVS Tags: yamt-kmem-base3, yamt-kmem-base2, yamt-kmem-base, yamt-kmem, vmlocking2-base3, vmlocking2-base2, vmlocking2-base1, vmlocking2, vmlocking-nbase, reinoud-bufcleanup-nbase, reinoud-bufcleanup-base, nick-net80211-sync-base, nick-net80211-sync, mjf-devfs-base, matt-armv6-nbase, matt-armv6-base, keiichi-mipv6-nbase, keiichi-mipv6-base, keiichi-mipv6, jmcneill-pm-base, hpcarm-cleanup-base, cube-autoconf-base, cube-autoconf, bouyer-xeni386-nbase, bouyer-xeni386-merge1, bouyer-xeni386-base, bouyer-xeni386
Branch point for: mjf-devfs2
Changes since 1.18: +2 -1 lines
Diff to previous 1.18 (colored)

Some boys take a beautiful seltrue_filtops and hide her away from
the rest of the world - but let's not.

Revision 1.15.4.2 / (download) - annotate - [select for diffs], Mon Sep 3 14:46:10 2007 UTC (15 years, 5 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.15.4.1: +1 -2 lines
Diff to previous 1.15.4.1 (colored) to branchpoint 1.15 (colored)

sync with head.

Revision 1.17.30.1 / (download) - annotate - [select for diffs], Mon Aug 20 21:28:16 2007 UTC (15 years, 5 months ago) by ad
Branch: vmlocking
Changes since 1.17: +1 -2 lines
Diff to previous 1.17 (colored) next main 1.18 (colored)

Sync with HEAD.

Revision 1.17.40.1 / (download) - annotate - [select for diffs], Wed Aug 15 13:50:55 2007 UTC (15 years, 5 months ago) by skrll
Branch: nick-csl-alignment
Changes since 1.17: +1 -2 lines
Diff to previous 1.17 (colored) next main 1.18 (colored)

Sync with HEAD.

Revision 1.18.14.2 / (download) - annotate - [select for diffs], Sat Jul 21 19:20:41 2007 UTC (15 years, 6 months ago) by ad
Branch: matt-mips64
Changes since 1.18.14.1: +247 -0 lines
Diff to previous 1.18.14.1 (colored) to branchpoint 1.18 (colored) next main 1.19 (colored)

Move declaration of seltrue_kqfilter() to conf.h, where it's needed.

Revision 1.18.14.1, Sat Jul 21 19:20:40 2007 UTC (15 years, 6 months ago) by ad
Branch: matt-mips64
Changes since 1.18: +0 -247 lines
FILE REMOVED

file event.h was added on branch matt-mips64 on 2007-07-21 19:20:41 +0000

Revision 1.18 / (download) - annotate - [select for diffs], Sat Jul 21 19:20:40 2007 UTC (15 years, 6 months ago) by ad
Branch: MAIN
CVS Tags: yamt-x86pmap-base4, yamt-x86pmap-base3, yamt-x86pmap-base2, yamt-x86pmap-base, yamt-x86pmap, vmlocking-base, nick-csl-alignment-base5, matt-mips64-base, matt-armv6-prevmlocking, jmcneill-base, hpcarm-cleanup, bouyer-xenamd64-base2, bouyer-xenamd64-base, bouyer-xenamd64
Branch point for: mjf-devfs, matt-mips64, matt-armv6, jmcneill-pm
Changes since 1.17: +1 -2 lines
Diff to previous 1.17 (colored)

Move declaration of seltrue_kqfilter() to conf.h, where it's needed.

Revision 1.15.4.1 / (download) - annotate - [select for diffs], Wed Jun 21 15:12:03 2006 UTC (16 years, 7 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.15: +24 -5 lines
Diff to previous 1.15 (colored)

sync with head.

Revision 1.17 / (download) - annotate - [select for diffs], Sun Dec 11 12:25:20 2005 UTC (17 years, 1 month ago) by christos
Branch: MAIN
CVS Tags: yamt-uio_vmspace-base5, yamt-uio_vmspace, yamt-splraiseipl-base5, yamt-splraiseipl-base4, yamt-splraiseipl-base3, yamt-splraiseipl-base2, yamt-splraiseipl-base, yamt-splraiseipl, yamt-pdpolicy-base9, yamt-pdpolicy-base8, yamt-pdpolicy-base7, yamt-pdpolicy-base6, yamt-pdpolicy-base5, yamt-pdpolicy-base4, yamt-pdpolicy-base3, yamt-pdpolicy-base2, yamt-pdpolicy-base, yamt-pdpolicy, yamt-idlelwp-base8, yamt-idlelwp, wrstuden-fixsa-newbase, wrstuden-fixsa-base-1, wrstuden-fixsa-base, wrstuden-fixsa, thorpej-atomic-base, thorpej-atomic, simonb-timecounters-base, simonb-timecounters, simonb-timcounters-final, rpaulo-netinet-merge-pcb-base, rpaulo-netinet-merge-pcb, reinoud-bufcleanup, post-newlock2-merge, peter-altq-base, peter-altq, nick-csl-alignment-base, newlock2-nbase, newlock2-base, newlock2, netbsd-4-base, netbsd-4-0-RELEASE, netbsd-4-0-RC5, netbsd-4-0-RC4, netbsd-4-0-RC3, netbsd-4-0-RC2, netbsd-4-0-RC1, netbsd-4-0-1-RELEASE, netbsd-4-0, netbsd-4, mjf-ufs-trans-base, mjf-ufs-trans, matt-nb4-arm-base, matt-nb4-arm, gdamore-uart-base, gdamore-uart, elad-kernelauth-base, elad-kernelauth, chap-midi-nbase, chap-midi-base, chap-midi, ad-audiomp-base, ad-audiomp, abandoned-netbsd-4-base, abandoned-netbsd-4
Branch point for: vmlocking, nick-csl-alignment
Changes since 1.16: +5 -5 lines
Diff to previous 1.16 (colored)

merge ktrace-lwp.

Revision 1.10.2.8 / (download) - annotate - [select for diffs], Thu Nov 10 14:12:12 2005 UTC (17 years, 2 months ago) by skrll
Branch: ktrace-lwp
Changes since 1.10.2.7: +20 -1 lines
Diff to previous 1.10.2.7 (colored) next main 1.11 (colored)

Sync with HEAD. Here we go again...

Revision 1.15.6.1 / (download) - annotate - [select for diffs], Wed Oct 26 08:32:52 2005 UTC (17 years, 3 months ago) by yamt
Branch: yamt-vop
Changes since 1.15: +20 -1 lines
Diff to previous 1.15 (colored) next main 1.16 (colored)

sync with head

Revision 1.16 / (download) - annotate - [select for diffs], Sun Oct 23 01:33:32 2005 UTC (17 years, 3 months ago) by cube
Branch: MAIN
CVS Tags: yamt-vop-base3, yamt-vop-base2, yamt-readahead-pervnode, yamt-readahead-perfile, yamt-readahead-base3, yamt-readahead-base2, yamt-readahead-base, yamt-readahead, thorpej-vnode-attr-base, thorpej-vnode-attr, ktrace-lwp-base
Changes since 1.15: +20 -1 lines
Diff to previous 1.15 (colored)

- Split sys_kevent into kevent1 so that it can be used by COMPAT_NETBSD32
  code.

- To achieve COMPAT_NETBSD32 compatibility, introduce a parameter to
  kevent1 that points to functions that do the actual copyin/copyout
  operations.  This is similar to what was done in FreeBSD by Paul Saab.

- Add the COMPAT_NETBSD32 definitions and hooks.

Revision 1.13.4.1 / (download) - annotate - [select for diffs], Fri Apr 29 11:29:37 2005 UTC (17 years, 9 months ago) by kent
Branch: kent-audio2
Changes since 1.13: +9 -9 lines
Diff to previous 1.13 (colored) next main 1.14 (colored)

sync with -current

Revision 1.13.6.2 / (download) - annotate - [select for diffs], Sat Mar 19 08:36:52 2005 UTC (17 years, 10 months ago) by yamt
Branch: yamt-km
Changes since 1.13.6.1: +3 -3 lines
Diff to previous 1.13.6.1 (colored) to branchpoint 1.13 (colored) next main 1.14 (colored)

sync with head.  xen and whitespace.  xen part is not finished.

Revision 1.10.2.7 / (download) - annotate - [select for diffs], Fri Mar 4 16:54:22 2005 UTC (17 years, 11 months ago) by skrll
Branch: ktrace-lwp
Changes since 1.10.2.6: +3 -3 lines
Diff to previous 1.10.2.6 (colored)

Sync with HEAD.

Hi Perry!

Revision 1.15 / (download) - annotate - [select for diffs], Sat Feb 26 22:25:34 2005 UTC (17 years, 11 months ago) by perry
Branch: MAIN
CVS Tags: yamt-vop-base, yamt-km-base4, yamt-km-base3, netbsd-3-base, netbsd-3-1-RELEASE, netbsd-3-1-RC4, netbsd-3-1-RC3, netbsd-3-1-RC2, netbsd-3-1-RC1, netbsd-3-1-1-RELEASE, netbsd-3-1, netbsd-3-0-RELEASE, netbsd-3-0-RC6, netbsd-3-0-RC5, netbsd-3-0-RC4, netbsd-3-0-RC3, netbsd-3-0-RC2, netbsd-3-0-RC1, netbsd-3-0-3-RELEASE, netbsd-3-0-2-RELEASE, netbsd-3-0-1-RELEASE, netbsd-3-0, netbsd-3, kent-audio2-base
Branch point for: yamt-vop, yamt-lazymbuf
Changes since 1.14: +3 -3 lines
Diff to previous 1.14 (colored)

nuke trailing whitespace

Revision 1.13.6.1 / (download) - annotate - [select for diffs], Sat Feb 12 18:17:55 2005 UTC (17 years, 11 months ago) by yamt
Branch: yamt-km
Changes since 1.13: +7 -7 lines
Diff to previous 1.13 (colored)

sync with head.

Revision 1.10.2.6 / (download) - annotate - [select for diffs], Fri Feb 4 11:48:05 2005 UTC (18 years ago) by skrll
Branch: ktrace-lwp
Changes since 1.10.2.5: +7 -7 lines
Diff to previous 1.10.2.5 (colored)

Sync with HEAD.

Revision 1.14 / (download) - annotate - [select for diffs], Thu Feb 3 19:20:01 2005 UTC (18 years ago) by perry
Branch: MAIN
CVS Tags: yamt-km-base2
Changes since 1.13: +7 -7 lines
Diff to previous 1.13 (colored)

de-__P

Revision 1.10.2.5 / (download) - annotate - [select for diffs], Sat Oct 30 09:21:37 2004 UTC (18 years, 3 months ago) by skrll
Branch: ktrace-lwp
Changes since 1.10.2.4: +2 -2 lines
Diff to previous 1.10.2.4 (colored)

Forward declare struct lwp instead of struct proc.

Revision 1.10.2.4 / (download) - annotate - [select for diffs], Tue Sep 21 13:38:45 2004 UTC (18 years, 4 months ago) by skrll
Branch: ktrace-lwp
Changes since 1.10.2.3: +4 -4 lines
Diff to previous 1.10.2.3 (colored)

Fix the sync with head I botched.

Revision 1.10.2.3 / (download) - annotate - [select for diffs], Sat Sep 18 14:56:30 2004 UTC (18 years, 4 months ago) by skrll
Branch: ktrace-lwp
Changes since 1.10.2.2: +4 -4 lines
Diff to previous 1.10.2.2 (colored)

Sync with HEAD.

Revision 1.10.2.2 / (download) - annotate - [select for diffs], Tue Aug 3 10:56:26 2004 UTC (18 years, 6 months ago) by skrll
Branch: ktrace-lwp
Changes since 1.10.2.1: +21 -20 lines
Diff to previous 1.10.2.1 (colored)

Sync with HEAD

Revision 1.13 / (download) - annotate - [select for diffs], Sun Apr 25 16:42:43 2004 UTC (18 years, 9 months ago) by simonb
Branch: MAIN
CVS Tags: yamt-km-base, kent-audio1-beforemerge, kent-audio1-base, kent-audio1
Branch point for: yamt-km, kent-audio2
Changes since 1.12: +1 -3 lines
Diff to previous 1.12 (colored)

Initialise (most) pools from a link set instead of explicit calls
to pool_init.  Untouched pools are ones that either in arch-specific
code, or aren't initialiased during initial system startup.

 Convert struct session, ucred and lockf to pools.

Revision 1.12 / (download) - annotate - [select for diffs], Sun Feb 22 17:45:26 2004 UTC (18 years, 11 months ago) by jdolecek
Branch: MAIN
CVS Tags: netbsd-2-base, netbsd-2-1-RELEASE, netbsd-2-1-RC6, netbsd-2-1-RC5, netbsd-2-1-RC4, netbsd-2-1-RC3, netbsd-2-1-RC2, netbsd-2-1-RC1, netbsd-2-1, netbsd-2-0-base, netbsd-2-0-RELEASE, netbsd-2-0-RC5, netbsd-2-0-RC4, netbsd-2-0-RC3, netbsd-2-0-RC2, netbsd-2-0-RC1, netbsd-2-0-3-RELEASE, netbsd-2-0-2-RELEASE, netbsd-2-0-1-RELEASE, netbsd-2-0, netbsd-2
Changes since 1.11: +8 -2 lines
Diff to previous 1.11 (colored)

add internal kernel NOTE_SUBMIT; this will be used by some kqueue code
to skip some steps on initial knote submission

Revision 1.11 / (download) - annotate - [select for diffs], Tue Jul 8 06:18:00 2003 UTC (19 years, 7 months ago) by itojun
Branch: MAIN
Changes since 1.10: +15 -18 lines
Diff to previous 1.10 (colored)

prototype must not have variable name

Revision 1.10.2.1 / (download) - annotate - [select for diffs], Wed Jul 2 15:27:14 2003 UTC (19 years, 7 months ago) by darrenr
Branch: ktrace-lwp
Changes since 1.10: +4 -4 lines
Diff to previous 1.10 (colored)

Apply the aborted ktrace-lwp changes to a specific branch.  This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it.  This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.

Revision 1.10 / (download) - annotate - [select for diffs], Sun Jun 29 22:32:22 2003 UTC (19 years, 7 months ago) by fvdl
Branch: MAIN
Branch point for: ktrace-lwp
Changes since 1.9: +3 -3 lines
Diff to previous 1.9 (colored)

Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.

Revision 1.9 / (download) - annotate - [select for diffs], Sat Jun 28 14:22:20 2003 UTC (19 years, 7 months ago) by darrenr
Branch: MAIN
Changes since 1.8: +4 -4 lines
Diff to previous 1.8 (colored)

Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records.  The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V

Revision 1.8 / (download) - annotate - [select for diffs], Mon Apr 28 23:16:28 2003 UTC (19 years, 9 months ago) by bjh21
Branch: MAIN
Changes since 1.7: +3 -2 lines
Diff to previous 1.7 (colored)

Add a new feature-test macro, _NETBSD_SOURCE.  If this is defined
by the application, all NetBSD interfaces are made visible, even
if some other feature-test macro (like _POSIX_C_SOURCE) is defined.
<sys/featuretest.h> defined _NETBSD_SOURCE if none of _ANSI_SOURCE,
_POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve
existing behaviour.

This has two major advantages:
+ Programs that require non-POSIX facilities but define _POSIX_C_SOURCE
  can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS.
+ It makes most of the #ifs simpler, in that they're all now ORs of the
  various macros, rather than having checks for (!defined(_ANSI_SOURCE) ||
  !defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place.

I've tried not to change the semantics of the headers in any case where
_NETBSD_SOURCE wasn't defined, but there were some places where the
current semantics were clearly mad, and retaining them was harder than
correcting them.  In particular, I've mostly normalised things so that
_ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE,
_XOPEN_SOURCE and _NETBSD_SOURCE in that order.

Tested by building for vax, encouraged by thorpej, and uncontested in
tech-userlevel for a week.

Revision 1.7 / (download) - annotate - [select for diffs], Sun Feb 16 09:30:23 2003 UTC (19 years, 11 months ago) by tron
Branch: MAIN
Changes since 1.6: +2 -1 lines
Diff to previous 1.6 (colored)

Include "sys/types.h" to get the definition of "size_t".

Revision 1.6 / (download) - annotate - [select for diffs], Tue Feb 4 09:02:04 2003 UTC (20 years ago) by jdolecek
Branch: MAIN
Changes since 1.5: +3 -2 lines
Diff to previous 1.5 (colored)

Introduce EVFILT_TIMER, which allows a process to establish an
arbitrary number of timers, both oneshot and periodic.

from FreeBSD, only adapted to NetBSD kernel API - mstohz() instead
of tvtohz(), and takes advantage of callout_schedule() in filt_timerexpire()

Revision 1.5 / (download) - annotate - [select for diffs], Sun Feb 2 02:22:14 2003 UTC (20 years ago) by christos
Branch: MAIN
Changes since 1.4: +2 -2 lines
Diff to previous 1.4 (colored)

only include mallocvar.h if _KERNEL is defined [hi thorpej]

Revision 1.4 / (download) - annotate - [select for diffs], Sat Feb 1 06:23:50 2003 UTC (20 years ago) by thorpej
Branch: MAIN
Changes since 1.3: +4 -1 lines
Diff to previous 1.3 (colored)

Add extensible malloc types, adapted from FreeBSD.  This turns
malloc types into a structure, a pointer to which is passed around,
instead of an int constant.  Allow the limit to be adjusted when the
malloc type is defined, or with a function call, as suggested by
Jonathan Stone.

Revision 1.3.2.2 / (download) - annotate - [select for diffs], Mon Nov 11 22:16:23 2002 UTC (20 years, 2 months ago) by nathanw
Branch: nathanw_sa
CVS Tags: nathanw_sa_end
Changes since 1.3.2.1: +222 -0 lines
Diff to previous 1.3.2.1 (colored) to branchpoint 1.3 (colored) next main 1.4 (colored)

Catch up to -current

Revision 1.3.2.1, Wed Oct 23 09:14:55 2002 UTC (20 years, 3 months ago) by nathanw
Branch: nathanw_sa
Changes since 1.3: +0 -222 lines
FILE REMOVED

file event.h was added on branch nathanw_sa on 2002-11-11 22:16:23 +0000

Revision 1.3 / (download) - annotate - [select for diffs], Wed Oct 23 09:14:55 2002 UTC (20 years, 3 months ago) by jdolecek
Branch: MAIN
CVS Tags: nathanw_sa_before_merge, nathanw_sa_base, kqueue-aftermerge, gmcgarry_ucred_base, gmcgarry_ucred, gmcgarry_ctxsw_base, gmcgarry_ctxsw, fvdl_fs64_base
Branch point for: nathanw_sa
Changes since 1.2: +105 -64 lines
Diff to previous 1.2 (colored)

merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe

Revision 1.1.1.1.2.13 / (download) - annotate - [select for diffs], Wed Oct 16 19:50:08 2002 UTC (20 years, 3 months ago) by jdolecek
Branch: kqueue
Changes since 1.1.1.1.2.12: +2 -2 lines
Diff to previous 1.1.1.1.2.12 (colored) to branchpoint 1.1.1.1 (colored) next main 1.2 (colored)

make KNOTE() a bit more useful; rather than checking list != NULL
(which is currently always true for all calls), check whether the list
is nonempty

Revision 1.1.1.1.2.12 / (download) - annotate - [select for diffs], Thu Oct 10 18:44:44 2002 UTC (20 years, 3 months ago) by jdolecek
Branch: kqueue
Changes since 1.1.1.1.2.11: +2 -1 lines
Diff to previous 1.1.1.1.2.11 (colored) to branchpoint 1.1.1.1 (colored)

sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work

Revision 1.1.1.1.2.11 / (download) - annotate - [select for diffs], Wed Oct 2 19:09:36 2002 UTC (20 years, 4 months ago) by jdolecek
Branch: kqueue
Changes since 1.1.1.1.2.10: +2 -2 lines
Diff to previous 1.1.1.1.2.10 (colored) to branchpoint 1.1.1.1 (colored)

make 'udata' field of struct kevent intptr_t (was 'void *')

Revision 1.1.1.1.2.10 / (download) - annotate - [select for diffs], Wed Oct 2 19:07:05 2002 UTC (20 years, 4 months ago) by jdolecek
Branch: kqueue
Changes since 1.1.1.1.2.9: +2 -2 lines
Diff to previous 1.1.1.1.2.9 (colored) to branchpoint 1.1.1.1 (colored)

make 'data' field of struct kevent 64bit
change briefly discussed on bsd-api-discuss list

Revision 1.1.1.1.2.9 / (download) - annotate - [select for diffs], Sun Sep 29 09:29:26 2002 UTC (20 years, 4 months ago) by jdolecek
Branch: kqueue
Changes since 1.1.1.1.2.8: +2 -2 lines
Diff to previous 1.1.1.1.2.8 (colored) to branchpoint 1.1.1.1 (colored)

make field 'kn_hook' of struct knote 'void *' instead of caddr_t; this tracks
rev. 1.20 of FreeBSD version of this file

Revision 1.1.1.1.2.8 / (download) - annotate - [select for diffs], Thu Sep 19 07:18:32 2002 UTC (20 years, 4 months ago) by jdolecek
Branch: kqueue
Changes since 1.1.1.1.2.7: +2 -2 lines
Diff to previous 1.1.1.1.2.7 (colored) to branchpoint 1.1.1.1 (colored)

fix botch in rev 1.1.1.1.2.1 - the struct kevent's 'data' need to be signed,
negative return values are valid return data

Revision 1.1.1.1.2.7 / (download) - annotate - [select for diffs], Wed Jun 26 20:42:48 2002 UTC (20 years, 7 months ago) by jdolecek
Branch: kqueue
Changes since 1.1.1.1.2.6: +8 -8 lines
Diff to previous 1.1.1.1.2.6 (colored) to branchpoint 1.1.1.1 (colored)

drop 'extern' from function prototypes

Revision 1.1.1.1.2.6 / (download) - annotate - [select for diffs], Fri Jun 7 08:22:37 2002 UTC (20 years, 8 months ago) by jdolecek
Branch: kqueue
Changes since 1.1.1.1.2.5: +3 -3 lines
Diff to previous 1.1.1.1.2.5 (colored) to branchpoint 1.1.1.1 (colored)

kevent(2): change type of 'nchanges' and 'nevents' from int to size_t
change discussed on bsd-api list

Revision 1.1.1.1.2.5 / (download) - annotate - [select for diffs], Tue Apr 9 06:19:51 2002 UTC (20 years, 10 months ago) by jdolecek
Branch: kqueue
Changes since 1.1.1.1.2.4: +3 -15 lines
Diff to previous 1.1.1.1.2.4 (colored) to branchpoint 1.1.1.1 (colored)

g/c KFILTER_UNREGISTER, KFILTER_REGISTER

Revision 1.1.1.1.2.4 / (download) - annotate - [select for diffs], Sat Sep 8 16:48:17 2001 UTC (21 years, 5 months ago) by thorpej
Branch: kqueue
Changes since 1.1.1.1.2.3: +3 -1 lines
Diff to previous 1.1.1.1.2.3 (colored) to branchpoint 1.1.1.1 (colored)

Add a filter which simulates seltrue() by setting kn->kn_data to 0,
and then saying "event is active".

Revision 1.1.1.1.2.3 / (download) - annotate - [select for diffs], Fri Sep 7 22:01:55 2001 UTC (21 years, 5 months ago) by thorpej
Branch: kqueue
Changes since 1.1.1.1.2.2: +4 -4 lines
Diff to previous 1.1.1.1.2.2 (colored) to branchpoint 1.1.1.1 (colored)

More const.

Revision 1.1.1.1.2.2 / (download) - annotate - [select for diffs], Fri Sep 7 15:54:14 2001 UTC (21 years, 5 months ago) by thorpej
Branch: kqueue
Changes since 1.1.1.1.2.1: +3 -1 lines
Diff to previous 1.1.1.1.2.1 (colored) to branchpoint 1.1.1.1 (colored)

Use a pool for kqueue structures.

Revision 1.1.1.1.2.1 / (download) - annotate - [select for diffs], Tue Jul 10 13:18:34 2001 UTC (21 years, 6 months ago) by lukem
Branch: kqueue
Changes since 1.1.1.1: +104 -57 lines
Diff to previous 1.1.1.1 (colored)

* change various struct elements from short, u_short, int or u_int to uint32_t
* change data to uintptr_t
* change EVFILT* from -1..-6 -> 0..5
* add p_opaque element to struct knote.union kn_ptr
* add more comments, cleanup whitespace
* add struct kfilter_mapping, and ioctls which use it:
	KFILTER_BYNAME		map name -> filter
	KFILTER_BYFILTER	map filter -> name
  as well as two temporary debugging ioctls
	KFILTER_REGISTER	register name to given filter
	KFILTER_UNREGISTER	unregister name
* prototype kfilter_register(9) and kfilter_unregister(9)

Revision 1.2, Tue Jul 10 12:02:14 2001 UTC (21 years, 6 months ago) by lukem
Branch: MAIN
CVS Tags: thorpej-mips-cache-base, thorpej-mips-cache, thorpej-devvp-base, thorpej-devvp, newlock-base, newlock, kqueue-base, ifpoll-base, gehenna-devsw-base, gehenna-devsw, eeh-devprop-base, eeh-devprop
Changes since 1.1: +0 -0 lines
FILE REMOVED

move to kqueue branch for now

Revision 1.1.1.1 / (download) - annotate - [select for diffs] (vendor branch), Sat Feb 24 11:11:36 2001 UTC (21 years, 11 months ago) by lukem
Branch: FreeBSD
CVS Tags: FreeBSD-20010710
Branch point for: kqueue
Changes since 1.1: +0 -0 lines
Diff to previous 1.1 (colored)

freebsd kqueue implementation

Revision 1.1 / (download) - annotate - [select for diffs], Sat Feb 24 11:11:36 2001 UTC (21 years, 11 months ago) by lukem
Branch: MAIN

Initial revision

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>