summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_pipe.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* remove p arg from fdplocktedu2004-07-221-2/+2
|
* In pipe_read, when the pipelock fails (most likely because we catch aart2004-07-211-2/+2
| | | | | | | signal), don't jump to unlocked_error: and do things that we don't need to do (including messing up the internal state of the pipe). Just return. ok niklas@ miod@
* This moves access to wall and uptime variables in MI code,tholo2004-06-241-7/+7
| | | | | | | | | | | | | | encapsulating all such access into wall-defined functions that makes sure locking is done as needed. It also cleans up some uses of wall time vs. uptime some places, but there is sure to be more of these needed as well, particularily in MD code. Also, many current calls to microtime() should probably be changed to getmicrotime(), or to the {,get}microuptime() versions. ok art@ deraadt@ aaron@ matthieu@ beck@ sturm@ millert@ others "Oh, that is not your problem!" from miod@
* lock filedesc before manipulating. avoids some rare races.tedu2004-01-061-1/+7
| | | | testing for quite some time by brad + otto
* Bring several fixes from FreeBSD to our current pipe implementation:miod2003-10-031-82/+106
| | | | | | | | | | | | | | | | - when allocating or growing a pipe buffer is not possible, do not panic but report the error and handle it correctly. (1.73) - "The pipe_write() code was locking the pipe without busying it first in certain cases, and a close() by another process could potentially rip the pipe out from under the (blocked) locking operation." (from Al Viro, 1.81) - "Remove test in pipe_write() which causes write(2) to return EAGAIN on a non-blocking pipe in cases where select(2) returns the file descriptor as ready for write. This in turns causes libc_r, for one, to busy wait in such cases. Note: it is a quick performance fix, a more complex fix might be required in case this turns out to have unexpected side effects." (1.141)
* Replace select backends with poll backends. selscan() and pollscan()millert2003-09-231-36/+31
| | | | | | | now call the poll backend. With this change we implement greater poll(2) functionality instead of emulating it via the select backend. Adapted from NetBSD and including some changes from FreeBSD. Tested by many, deraadt@ OK
* First round of __P removal in sysmillert2002-03-141-14/+14
|
* - Rename FILE_{,UN}USE to FREF and FRELE. USE is a bad verb and we don't haveart2002-02-081-3/+5
| | | | | | | | | | | | | | the same semantics as NetBSD anyway, so it's good to avoid name collissions. - Always fdremove before freeing the file, not the other way around. - falloc FREFs the file. - have FILE_SET_MATURE FRELE the file (It feels like a good ortogonality to falloc FREFing the file). - Use closef as much as possible instead of ffree in error paths of falloc:ing functions. closef is much more careful with the fd and can deal with the fd being forcibly closed by dup2. Also try to avoid manually calling *fo_close when closef can do that for us (this makes some error paths mroe complicated (sys_socketpair and sys_pipe), but others become simpler (sys_open)).
* Pool deals fairly well with physical memory shortage, but it doesn't dealart2002-01-231-3/+2
| | | | | | | | | | | | | | | | | | well (not at all) with shortages of the vm_map where the pages are mapped (usually kmem_map). Try to deal with it: - group all information the backend allocator for a pool in a separate struct. The pool will only have a pointer to that struct. - change the pool_init API to reflect that. - link all pools allocating from the same allocator on a linked list. - Since an allocator is responsible to wait for physical memory it will only fail (waitok) when it runs out of its backing vm_map, carefully drain pools using the same allocator so that va space is freed. (see comments in code for caveats and details). - change pool_reclaim to return if it actually succeeded to free some memory, use that information to make draining easier and more efficient. - get rid of PR_URGENT, noone uses it.
* Replace inclusion of <vm/foo.h> with the correct <uvm/bar.h> when necessary.miod2001-11-061-2/+1
| | | | (Look ma, I might have broken the tree)
* - every new fd created by falloc() is marked as larval and should not be usedart2001-10-261-1/+3
| | | | | | | any anyone. Every caller of falloc matures the fd when it's usable. - Since every lookup in the fd table must now check this flag and all of them do the same thing, move all the necessary checks into a function - fd_getfile.
* merge vm/vm_kern.h into uvm/uvm_extern.h; art@ okmickey2001-09-191-3/+1
|
* Get rid of unnecessary includes.art2001-07-051-9/+2
|
* remove old vmart2001-06-271-36/+1
|
* pool_init, not pool_createart2001-06-231-6/+6
|
* pipe_stat isn't referenced from outside sys_pipe.c anymoreart2001-06-231-1/+2
|
* Add pipe_init, call it from main, move the pool initialization into it.art2001-06-231-6/+10
|
* fix kqueue EVFILT_WRITE; okay art@provos2001-06-051-3/+17
|
* Sync in some improvements from FreeBSD + my own improvements.art2001-05-261-101/+155
| | | | | | | | - use pool for allocating pipe structures. - use microtime instead of splhigh and time. - improve locking. - better handling of nonblocking. - various efficiency fixes.
* gc OLD_PIPE.art2001-05-141-4/+1
|
* Add a fo_stat member to struct fileops. Used soon.art2001-05-141-2/+2
| | | | Also add a stat function for kqueue from FreeBSD.
* More generic arguments to pipe_stat.art2001-05-141-3/+6
|
* We already have a prototype for pipe_stat in sys/pipe.hart2001-05-141-2/+1
|
* port kqueue changes from freebsd, plus all required openbsd glue.provos2001-03-011-9/+23
| | | | | | | okay deraadt@, millert@ from jlemon@freebsd.org: extend kqueue down to the device layer, backwards compatible approach suggested by peter@freebsd.org
* support kernel event queues, from FreeBSD by Jonathan Lemon,provos2000-11-161-1/+63
| | | | okay art@, millert@
* Change struct file interface methods read and write to pass file offset incsapuntz2000-04-191-5/+7
| | | | | | | and out. Make pread/pwrite in netbsd & linux thread safe - which is the whole point anyway.
* No need to include sys/vmmeter.hart2000-01-271-2/+1
|
* Annoying unnecessary space.art1999-11-251-2/+2
|
* if select returns writable on a pipe, the write should not returnderaadt1999-11-211-2/+3
| | | | | | EWOULDBLOCK. turns out the two checking conditions were not the same, and a certain use of rsync uncovered the bug by chewing all available cpu time; fix from art
* Use M_PIPE instead of M_TEMP.art1999-10-291-4/+4
|
* Remove the "Direct write" code.art1999-10-291-435/+28
| | | | | We never used it and some parts of it slowed the code down. Generally clean up the pipe code.
* Actually make ASYNC pipes generate SIGIO.niklas1999-10-271-1/+3
|
* vm_offset_t -> {v,p}addr_t ; vm_size_t -> {v,p}size_tart1999-07-151-10/+10
|
* introduce fdremove() to mark a file descriptor as unused. fdremove makesprovos1999-07-131-2/+2
| | | | | sure that the fd_freefile hints stay in sync, otherwise free file descriptors might not be overlooked by fdalloc(); ok millert@
* better fd leak preventionderaadt1999-06-081-29/+1
|
* need seperate sys_pipe() versions, for pipeclose() or soclose() callsderaadt1999-06-071-1/+29
|
* replacement pipe() system call; copies data into place inside kernel, soderaadt1999-06-071-2/+2
| | | | that EFAULT return value is possible
* oops, premature commitderaadt1999-06-071-2/+2
|
* store NULL in fd_ofilesderaadt1999-06-071-3/+3
|
* kmem allocation changes for uvmart1999-02-261-2/+21
|
* Move defining of PIPE_NODIRECT to pipe.h and conditionalize more code with it.art1999-02-161-10/+3
| | | | This allows this code to compile on sparc.
* Updates for VFS Lite 2 + soft update.csapuntz1997-11-061-2/+2
|
* back out vfs lite2 till after 2.2deraadt1997-10-061-2/+2
|
* VFS Lite2 Changescsapuntz1997-10-061-2/+2
|
* OpenBSD tagsniklas1997-02-241-2/+2
|
* Correct sys_pipe's 3rd arg type, alpha needs itniklas1996-10-121-1/+5
|
* compile!mickey1996-09-051-2/+3
|
* Stylistic cleanup, like removing "static"s, and removing warningsniklas1996-09-041-45/+47
| | | | given by -Wall -Wstrict-prototypes -Wmissing-prototypes
* New fast pipe(2) from freebsd without fancy vm stuff.shawn1996-08-271-0/+1131
The old pipes can be used with the "OLD_PIPE" config option.