summaryrefslogtreecommitdiff
path: root/sys/kern/sys_pipe.c
AgeCommit message (Collapse)Author
2004-07-22remove p arg from fdplockTed Unangst
2004-07-21In pipe_read, when the pipelock fails (most likely because we catch aArtur Grabowski
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@
2004-06-24This moves access to wall and uptime variables in MI code,Thorsten Lockert
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@
2004-01-06lock filedesc before manipulating. avoids some rare races.Ted Unangst
testing for quite some time by brad + otto
2003-10-03Bring several fixes from FreeBSD to our current pipe implementation:Miod Vallat
- 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)
2003-09-23Replace select backends with poll backends. selscan() and pollscan()Todd C. Miller
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
2002-03-14First round of __P removal in sysTodd C. Miller
2002-02-08- Rename FILE_{,UN}USE to FREF and FRELE. USE is a bad verb and we don't haveArtur Grabowski
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)).
2002-01-23Pool deals fairly well with physical memory shortage, but it doesn't dealArtur Grabowski
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.
2001-11-06Replace inclusion of <vm/foo.h> with the correct <uvm/bar.h> when necessary.Miod Vallat
(Look ma, I might have broken the tree)
2001-10-26 - every new fd created by falloc() is marked as larval and should not be usedArtur Grabowski
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.
2001-09-19merge vm/vm_kern.h into uvm/uvm_extern.h; art@ okMichael Shalayeff
2001-07-05Get rid of unnecessary includes.Artur Grabowski
2001-06-27remove old vmArtur Grabowski
2001-06-23pool_init, not pool_createArtur Grabowski
2001-06-23pipe_stat isn't referenced from outside sys_pipe.c anymoreArtur Grabowski
2001-06-23Add pipe_init, call it from main, move the pool initialization into it.Artur Grabowski
2001-06-05fix kqueue EVFILT_WRITE; okay art@Niels Provos
2001-05-26Sync in some improvements from FreeBSD + my own improvements.Artur Grabowski
- use pool for allocating pipe structures. - use microtime instead of splhigh and time. - improve locking. - better handling of nonblocking. - various efficiency fixes.
2001-05-14gc OLD_PIPE.Artur Grabowski
2001-05-14Add a fo_stat member to struct fileops. Used soon.Artur Grabowski
Also add a stat function for kqueue from FreeBSD.
2001-05-14More generic arguments to pipe_stat.Artur Grabowski
2001-05-14We already have a prototype for pipe_stat in sys/pipe.hArtur Grabowski
2001-03-01port kqueue changes from freebsd, plus all required openbsd glue.Niels Provos
okay deraadt@, millert@ from jlemon@freebsd.org: extend kqueue down to the device layer, backwards compatible approach suggested by peter@freebsd.org
2000-11-16support kernel event queues, from FreeBSD by Jonathan Lemon,Niels Provos
okay art@, millert@
2000-04-19Change struct file interface methods read and write to pass file offset inConstantine Sapuntzakis
and out. Make pread/pwrite in netbsd & linux thread safe - which is the whole point anyway.
2000-01-27No need to include sys/vmmeter.hArtur Grabowski
1999-11-25Annoying unnecessary space.Artur Grabowski
1999-11-21if select returns writable on a pipe, the write should not returnTheo de Raadt
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
1999-10-29Use M_PIPE instead of M_TEMP.Artur Grabowski
1999-10-29Remove the "Direct write" code.Artur Grabowski
We never used it and some parts of it slowed the code down. Generally clean up the pipe code.
1999-10-27Actually make ASYNC pipes generate SIGIO.Niklas Hallqvist
1999-07-15vm_offset_t -> {v,p}addr_t ; vm_size_t -> {v,p}size_tArtur Grabowski
1999-07-13introduce fdremove() to mark a file descriptor as unused. fdremove makesNiels Provos
sure that the fd_freefile hints stay in sync, otherwise free file descriptors might not be overlooked by fdalloc(); ok millert@
1999-06-08better fd leak preventionTheo de Raadt
1999-06-07need seperate sys_pipe() versions, for pipeclose() or soclose() callsTheo de Raadt
1999-06-07replacement pipe() system call; copies data into place inside kernel, soTheo de Raadt
that EFAULT return value is possible
1999-06-07oops, premature commitTheo de Raadt
1999-06-07store NULL in fd_ofilesTheo de Raadt
1999-02-26kmem allocation changes for uvmArtur Grabowski
1999-02-16Move defining of PIPE_NODIRECT to pipe.h and conditionalize more code with it.Artur Grabowski
This allows this code to compile on sparc.
1997-11-06Updates for VFS Lite 2 + soft update.Constantine Sapuntzakis
1997-10-06back out vfs lite2 till after 2.2Theo de Raadt
1997-10-06VFS Lite2 ChangesConstantine Sapuntzakis
1997-02-24OpenBSD tagsNiklas Hallqvist
1996-10-12Correct sys_pipe's 3rd arg type, alpha needs itNiklas Hallqvist
1996-09-05compile!Michael Shalayeff
1996-09-04Stylistic cleanup, like removing "static"s, and removing warningsNiklas Hallqvist
given by -Wall -Wstrict-prototypes -Wmissing-prototypes
1996-08-27New fast pipe(2) from freebsd without fancy vm stuff.shawn
The old pipes can be used with the "OLD_PIPE" config option.