Module Name:    src
Committed By:   kamil
Date:           Tue Jun  6 17:01:59 UTC 2017

Modified Files:
        src/lib/libc/sys: kqueue.2

Log Message:
Update the EV_SET() description with newer implementation.

EV_SET(2) is a macro again, that wraps an inline function which is still
new in NetBSD 8.0.

Sponsored by <The NetBSD Foundation>


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/lib/libc/sys/kqueue.2

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/sys/kqueue.2
diff -u src/lib/libc/sys/kqueue.2:1.41 src/lib/libc/sys/kqueue.2:1.42
--- src/lib/libc/sys/kqueue.2:1.41	Wed May 31 01:03:01 2017
+++ src/lib/libc/sys/kqueue.2	Tue Jun  6 17:01:59 2017
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kqueue.2,v 1.41 2017/05/31 01:03:01 kamil Exp $
+.\"	$NetBSD: kqueue.2,v 1.42 2017/06/06 17:01:59 kamil Exp $
 .\"
 .\" Copyright (c) 2000 Jonathan Lemon
 .\" All rights reserved.
@@ -155,10 +155,19 @@ and
 .Fa eventlist .
 .Pp
 .Fn EV_SET
-is a static inline function which is provided for ease of initializing a
-kevent structure.
-Its original form was a preprocessor macro,
-which caused bugs in third party code.
+is a macro which is provided for ease of initializing a kevent structure.
+It wraps an internal static inline function to prevent preprocessor misuse.
+In the past this code would behave incorrectly and damage process's memory,
+if incrementation or decrementation would be used as the first argument.
+This example has been taken from LLDB, that caused the memory corruption and
+inspired the
+.Nx
+developers for improving the implementation.
+.Bd -literal -offset indent
+EV_SET(&in_events[i++], fd.first, EVFILT_READ, EV_ADD, 0, 0, 0);
+.Ed
+.Pp
+This macro is now safe in all major BSDs.
 .Pp
 The
 .Va kevent
@@ -673,5 +682,5 @@ function first appeared in
 .Nx 6.0 .
 .Pp
 .Fn EV_SET
-was converted from a macro to a static inline function in
+was converted from a macro implementation to the macro wrapping a static inline function in
 .Nx 8.0 .

Reply via email to