#
a6b242c3 |
| 10-Jul-2022 |
riastradh <riastradh@NetBSD.org> |
readv(2), writev(2): Avoid arithmetic overflow in bounds check.
|
#
a671e8d7 |
| 11-Sep-2021 |
riastradh <riastradh@NetBSD.org> |
sys/kern: Allow custom fileops to specify fo_seek method.
Previously only vnodes allowed lseek/pread[v]/pwrite[v], which meant converting a regular device to a cloning device doesn't always work.
S
sys/kern: Allow custom fileops to specify fo_seek method.
Previously only vnodes allowed lseek/pread[v]/pwrite[v], which meant converting a regular device to a cloning device doesn't always work.
Semantics is:
(*fp->f_ops->fo_seek)(fp, delta, whence, newoffp, flags)
1. Compute a new offset according to whence + delta -- that is, if whence is SEEK_CUR, add delta to fp->f_offset; if whence is SEEK_END, add delta to end of file; if whence is SEEK_CUR, use delta as is.
2. If newoffp is nonnull, return the new offset in *newoffp.
3. If flags & FOF_UPDATE_OFFSET, set fp->f_offset to the new offset.
Access to fp->f_offset, and *newoffp if newoffp = &fp->f_offset, must happen under the object lock (e.g., vnode lock), in order to synchronize fp->f_offset reads and writes.
This change has the side effect that every call to VOP_SEEK happens under the vnode lock now, when previously it didn't. However, from a review of all the VOP_SEEK implementations, it does not appear that any file system even examines the vnode, let alone locks it. So I think this is safe -- and essentially the only reasonable way to do things, given that it is used to validate a change from oldoff to newoff, and oldoff becomes stale the moment we unlock the vnode.
No kernel bump because this reuses a spare entry in struct fileops, and it is safe for the entry to be null, so all existing fileops will continue to work as before (rejecting seek).
show more ...
|
#
14b4bbb2 |
| 23-May-2020 |
ad <ad@NetBSD.org> |
Move proc_lock into the data segment. It was dynamically allocated because at the time we had mutex_obj_alloc() but not __cacheline_aligned.
|
#
d65a6a67 |
| 01-Jun-2017 |
chs <chs@NetBSD.org> |
remove checks for failure after memory allocation calls that cannot fail:
kmem_alloc() with KM_SLEEP kmem_zalloc() with KM_SLEEP percpu_alloc() pserialize_create() psref_class_create()
al
remove checks for failure after memory allocation calls that cannot fail:
kmem_alloc() with KM_SLEEP kmem_zalloc() with KM_SLEEP percpu_alloc() pserialize_create() psref_class_create()
all of these paths include an assertion that the allocation has not failed, so callers should not assert that again.
show more ...
|
#
11a55f5b |
| 05-Sep-2014 |
matt <matt@NetBSD.org> |
Try not to use f_data, use f_{vnode,socket,pipe,mqueue,kqueue,ksem} to get a correctly typed pointer.
|
#
6ea76d8b |
| 04-Apr-2013 |
martin <martin@NetBSD.org> |
Provide binary compatibility for architectures that (erroneously) had a larger MAXPARTITIONS value (and thus larger struct disklabel).
|
#
7e914c24 |
| 25-Jan-2012 |
christos <christos@NetBSD.org> |
As discussed in tech-kern, provide the means to prevent delivery of SIGPIPE on EPIPE for all file descriptor types:
- provide O_NOSIGPIPE for open,kqueue1,pipe2,dup3,fcntl(F_{G,S}ETFL) [NetBSD] - pr
As discussed in tech-kern, provide the means to prevent delivery of SIGPIPE on EPIPE for all file descriptor types:
- provide O_NOSIGPIPE for open,kqueue1,pipe2,dup3,fcntl(F_{G,S}ETFL) [NetBSD] - provide SOCK_NOSIGPIPE for socket,socketpair [NetBSD] - provide SO_NOSIGPIPE for {g,s}seckopt [NetBSD/FreeBSD/MacOSX] - provide F_{G,S}ETNOSIGPIPE for fcntl [MacOSX]
show more ...
|
#
e73e1472 |
| 27-Jul-2011 |
uebayasi <uebayasi@NetBSD.org> |
These don't need uvm/uvm_extern.h.
|
#
deb82c9f |
| 10-Apr-2011 |
christos <christos@NetBSD.org> |
- Add O_CLOEXEC to open(2) - Add fd_set_exclose() to encapsulate uses of FIO{,N}CLEX, O_CLOEXEC, F{G,S}ETFD - Add a pipe1() function to allow passing flags to the fd's that pipe(2) opens to ease im
- Add O_CLOEXEC to open(2) - Add fd_set_exclose() to encapsulate uses of FIO{,N}CLEX, O_CLOEXEC, F{G,S}ETFD - Add a pipe1() function to allow passing flags to the fd's that pipe(2) opens to ease implementation of linux pipe2(2) - Factor out fp handling code from open(2) and fhopen(2)
show more ...
|
#
c96af575 |
| 18-Jan-2011 |
matt <matt@NetBSD.org> |
Make struct disklabel 8 byte aligned. This increases its size by 4 bytes on IPL32 platforms so add code in sys_ioctl (and netbsd32_ioctl) to deal with the older/smaller diskabel size. This change m
Make struct disklabel 8 byte aligned. This increases its size by 4 bytes on IPL32 platforms so add code in sys_ioctl (and netbsd32_ioctl) to deal with the older/smaller diskabel size. This change makes disklabel the same for both IPL32 and LP64 platforms.
show more ...
|
#
5f6671a9 |
| 13-Aug-2009 |
haad <haad@NetBSD.org> |
Allow undescribed, direct ioctls as used by Unix. This capability was removed in BSD, presumably because nothing used it any more. Third party system software written for Unix (like ZFS) requires thi
Allow undescribed, direct ioctls as used by Unix. This capability was removed in BSD, presumably because nothing used it any more. Third party system software written for Unix (like ZFS) requires this to work without significant modifications.
Ok supremeleader@
show more ...
|
#
d991fcb3 |
| 24-May-2009 |
ad <ad@NetBSD.org> |
More changes to improve kern_descrip.c.
- Avoid atomics in more places. - Remove the per-descriptor mutex, and just use filedesc_t::fd_lock. It was only being used to synchronize close, and in any
More changes to improve kern_descrip.c.
- Avoid atomics in more places. - Remove the per-descriptor mutex, and just use filedesc_t::fd_lock. It was only being used to synchronize close, and in any case we needed to take fd_lock to free the descriptor slot. - Optimize certain paths for the <NDFDFILE case. - Sprinkle more comments and assertions. - Cache more stuff in filedesc_t. - Fix numerous minor bugs spotted along the way. - Restructure how the open files array is maintained, for clarity and so that we can eliminate the membar_consumer() call in fd_getfile(). This is mostly syntactic sugar; the main functional change is that fd_nfiles now lives alongside the open file array.
Some measurements with libmicro:
- simple file syscalls are like close() are between 1 to 10% faster. - some nice improvements, e.g. poll(1000) which is ~50% faster.
show more ...
|
#
92ee1731 |
| 17-May-2009 |
ad <ad@NetBSD.org> |
Updates to f_flag need to be made with atomics.
|
#
7e13bf31 |
| 17-May-2009 |
yamt <yamt@NetBSD.org> |
remove FILE_LOCK and FILE_UNLOCK.
|
#
7408df12 |
| 02-Jul-2008 |
matt <matt@NetBSD.org> |
Change {ff,fd}_exclose and ff_allocated to bool. Change exclose arg to fd_dup to bool. Switch assignments from 1/0 to true/false.
This make alpha kernels compile. Bump kern to 4.99.69 since struc
Change {ff,fd}_exclose and ff_allocated to bool. Change exclose arg to fd_dup to bool. Switch assignments from 1/0 to true/false.
This make alpha kernels compile. Bump kern to 4.99.69 since structure changed.
show more ...
|
#
ce099b40 |
| 28-Apr-2008 |
martin <martin@NetBSD.org> |
Remove clause 3 and 4 from TNF licenses
|
#
6d70f903 |
| 24-Apr-2008 |
ad <ad@NetBSD.org> |
Network protocol interrupts can now block on locks, so merge the globals proclist_mutex and proclist_lock into a single adaptive mutex (proc_lock). Implications:
- Inspecting process state requires
Network protocol interrupts can now block on locks, so merge the globals proclist_mutex and proclist_lock into a single adaptive mutex (proc_lock). Implications:
- Inspecting process state requires thread context, so signals can no longer be sent from a hardware interrupt handler. Signal activity must be deferred to a soft interrupt or kthread.
- As the proc state locking is simplified, it's now safe to take exit() and wait() out from under kernel_lock.
- The system spends less time at IPL_SCHED, and there is less lock activity.
show more ...
|
#
3acbed8e |
| 23-Mar-2008 |
ad <ad@NetBSD.org> |
Split select/poll into their own file.
|
#
40379c87 |
| 22-Mar-2008 |
ad <ad@NetBSD.org> |
Commit the "per-CPU" select patch. This is the result of much work and testing by rmind@ and myself.
Which approach to use is still being discussed, but I would like to get this out of my working tr
Commit the "per-CPU" select patch. This is the result of much work and testing by rmind@ and myself.
Which approach to use is still being discussed, but I would like to get this out of my working tree. If we decide to use a different approach there is no problem with revisiting this.
show more ...
|
#
a9ca7a37 |
| 21-Mar-2008 |
ad <ad@NetBSD.org> |
Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
#
c796b0c7 |
| 17-Mar-2008 |
ad <ad@NetBSD.org> |
Add a boolean parameter to syncobj_t::sobj_unsleep. If true we want the existing behaviour: the unsleep method unlocks and wakes the swapper if needs be. If false, the caller is doing a batch operati
Add a boolean parameter to syncobj_t::sobj_unsleep. If true we want the existing behaviour: the unsleep method unlocks and wakes the swapper if needs be. If false, the caller is doing a batch operation and will take care of that later. This is kind of ugly, but it's difficult for the caller to know which lock to release in some situations.
show more ...
|
#
89d4a459 |
| 05-Mar-2008 |
ad <ad@NetBSD.org> |
selclear() while exiting netsmb's custom copy of select(). PR kern/38123.
|
#
c6186fac |
| 01-Mar-2008 |
rmind <rmind@NetBSD.org> |
Welcome to 4.99.55:
- Add a lot of missing selinit() and seldestroy() calls.
- Merge selwakeup() and selnotify() calls into a single selnotify().
- Add an additional 'events' argument to selnotify
Welcome to 4.99.55:
- Add a lot of missing selinit() and seldestroy() calls.
- Merge selwakeup() and selnotify() calls into a single selnotify().
- Add an additional 'events' argument to selnotify() call. It will indicate which event (POLL_IN, POLL_OUT, etc) happen. If unknown, zero may be used.
Note: please pass appropriate value of 'events' where possible. Proposed on: <tech-kern>
show more ...
|
#
8a62c0f2 |
| 05-Jan-2008 |
dsl <dsl@NetBSD.org> |
Use FILE_LOCK() and FILE_UNLOCK()
|
#
7e2790cf |
| 20-Dec-2007 |
dsl <dsl@NetBSD.org> |
Convert all the system call entry points from: int foo(struct lwp *l, void *v, register_t *retval) to: int foo(struct lwp *l, const struct foo_args *uap, register_t *retval) Fixup compat code
Convert all the system call entry points from: int foo(struct lwp *l, void *v, register_t *retval) to: int foo(struct lwp *l, const struct foo_args *uap, register_t *retval) Fixup compat code to not write into 'uap' and (in some cases) to actually pass a correctly formatted 'uap' structure with the right name to the next routine. A few 'compat' routines that just call standard ones have been deleted. All the 'compat' code compiles (along with the kernels required to test build it). 98% done by automated scripts.
show more ...
|