Date: Sun, 07 Nov 2004 08:45:59 +0100 From: "Poul-Henning Kamp" <phk@phk.freebsd.dk> To: Garrett Wollman <wollman@khavrinen.lcs.mit.edu> Cc: arch@FreeBSD.org Subject: Re: Multi-threading access to device drivers. Message-ID: <18154.1099813559@critter.freebsd.dk> In-Reply-To: Your message of "Sat, 06 Nov 2004 19:15:13 EST." <200411070015.iA70FDxm015465@khavrinen.lcs.mit.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <200411070015.iA70FDxm015465@khavrinen.lcs.mit.edu>, Garrett Wollman writes: >In article <10847.1099784360@critter.freebsd.dk> you write: >>Assume a process with two threads on two CPUs, both >>doing read(fd, buf, len) at the same time. >> >>Should we let both reads into the driver at the same time ? >> >>If so, which uio_offset do we hand them ? > >POSIX is quite clear on the matter: > >> All of the functions chmod (), close (), fchmod (), fcntl (), fstat >> (), ftruncate (), lseek (), open (), read (), readlink (), stat (), >> symlink ( ), and write ( ) shall be atomic with respect to each other >> in the effects specified in IEEE Std 1003.1-2001 when they operate on >> regular files. If two threads each call one of these functions, each >> call shall either see all of the specified effects of the other call, >> or none of them. > >(One of the "specified effects" is advancing the file offset.) Yes, but notice the "... when they operate on regular files." bit. It doesn't say anything about devices. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?18154.1099813559>