From nobody  Mon Sep 21 08:36:01 1998
Received: (from nobody@localhost)
          by hub.freebsd.org (8.8.8/8.8.8) id IAA29850;
          Mon, 21 Sep 1998 08:36:01 -0700 (PDT)
          (envelope-from nobody)
Message-Id: <199809211536.IAA29850@hub.freebsd.org>
Date: Mon, 21 Sep 1998 08:36:01 -0700 (PDT)
From: info@highwind.com
To: freebsd-gnats-submit@freebsd.org
Subject: libc_r does not have pread() or pwrite() interfaces
X-Send-Pr-Version: www-1.0

>Number:         8011
>Category:       kern
>Synopsis:       libc_r does not have pread() or pwrite() interfaces
>Confidential:   no
>Severity:       non-critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Sep 21 08:40:01 PDT 1998
>Closed-Date:    Wed Aug 4 04:28:10 PDT 1999
>Last-Modified:  Wed Aug  4 04:33:17 PDT 1999
>Originator:     Robert M. Fleischman
>Release:        3.0
>Organization:
HighWind Software, Inc.
>Environment:
% uname -a
FreeBSD zonda.highwind.com 3.0-19980831-SNAP FreeBSD 3.0-19980831-SNAP #0: Mon Aug 31 14:03:19 GMT 1998     root@make.ican.net:/usr/src/sys/compile/GENERIC  i386

>Description:
libc_r has no "pread()" or "pwrite()" interfaces.

Without these calls, it is difficult to do threaded offset based reads
and writes. Adding these two interfaces would be a HUGE win for threaded
applications.
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:

From: "Richard Seaman, Jr." <lists@tar.com>
To: "freebsd-gnats-submit@freebsd.org" <freebsd-gnats-submit@freebsd.org>,
        "info@highwind.com" <info@highwind.com>,
        "Steve Price" <sprice@hiwaay.net>
Cc: "hackers@freebsd.org" <hackers@freebsd.org>
Subject: Re: kern/8011: libc_r does not have pread() or pwrite() interfaces
Date: Fri, 11 Dec 98 10:29:14 -0600

 --_=_=_=IMA.BOUNDARY.F3T4CP138764=_=_=_
 Content-Type: text/plain; charset="us-ascii"
 Content-Transfer-Encoding: 7bit
 
 On Thu, 10 Dec 1998 16:42:13 -0600 (CST), Steve Price wrote:
 
 >Can you send this patch as a followup to kern/8011?  Seems
 >someone else has an interest in this too and may be able
 >to help you test it.
 
 Ok. Done.
 
 The original patch did not implement pread/pwrite in libc_r,
 which was what kern/8011 requested.  The attached patch
 also adds a libc_r implementation, which is less tested than
 the first patch.
 
 
 
 --_=_=_=IMA.BOUNDARY.F3T4CP138764=_=_=_
 Content-Type: application/octet-stream; name="preaddiffs.gz"
 Content-Transfer-Encoding: base64
 
 H4sICBJGcTYAA3ByZWFkZGlmZnMA7Vt5c9tGlv+b/hRtZysrUuABkJREOnKVLNFeVmRSRUpxUtkU
 CsJBYkQCGACUosnou+97r7uBBgTqSCwnMzssUWj0+fqdvz44Dhz31yHzA3u1cdz2JvCT1GktXx3+
 8c+r2fGcef7KHbL2Mly77cC+TtpJbLfLo2nXr2I3jX332g8WLIZH4ocB01uG8crxPY81bdaM8ZVl
 BDYajeylpg8GB+3OflvXmd4dGv1hZ1Cj1s1ms1RLN9p6hxn6sGcMO13sRv1Qt3pnoOl6j1EG9sAz
 BgzSzVeMub+mbhwAz1IWRqkfOBo+3TimJ/y9hUpQWmMLF1+ZaZ7t7ECGxuylFbMGs8MgSdnPv2gi
 xbPrdWz4apd943sgFo9NpubFZDw/PzHPZqMj+P95Nj4fQYUk8f/hmjBAFLuWw5QBrkPfYQ2N8QpA
 kOeZKXasNrqJ/dRVqSIiHmj6jRuAHCAB9AniaubZdD7+0ZxPL2bHI55P2SbQe2yakJOk8cZOWeqv
 3Wtr9bYGn3aDJe7KtdMdo84a7Vdjrn4r/7INX7ud3CbtT9aVi2rTAjV5WT3cOuxWhezvFxSyv88K
 1KL2qBlC5fS20WOdg6EOinlQo15QrSpqSuUEFdaNauU0DE03DrhyMvbpdDz5fr57uF6F9lXLYOtN
 wFNqWbgJ0hbajkgpZZGVLkH8HhR7efrV66wCKhgU4uO60DJ27WsqsK+9OFyLpHisk0WhcgIKBEX4
 oCKmZKRhqWoaLXxeCKk4anEzlhMXRviVJ87Ea8SffxIfKhWi29X07qCsEKDStrVaQXPTzNJKOdhm
 YFupi/PP00qFG8tH3uGjK57i0Su+RkikwjjyLliGT64zLd9jr8E7+IHr7IBXO9M7na6pv6+rBNtL
 1zHBY5pR7IfQ9tZcW7/i9CsK/AAK/hda1x5pFsdUBm7OjcEJSV0SPCvp0l+HZ0xmRCLxF2Nild8W
 lvH1PDYfcLuvLrpqYcFkMzyJPne/3dHbXfC5xrA7GHbJO5OK5FW4WwZk0Rv2B+DDK62w19f6nRwx
 4Ksh1av1IZXBl94C6py9QQDhvGFveOC93HiQ5tVYcHmbusmbUuNdahw9tTV7QyEcAzm4kDfUvIqS
 67wzjgRE4PbDa9dmDXi84TUgZQcpUTVfspPR/Hg2PjsfTyeisxl0VsmdwYGmd/rSRUVh4qcgoxZj
 50uXgUZtXCCSpfAShaRlzEqS0PbBvhx246dLlmzsJbMCaB1e/s1F4hJw68IaWjj+WQT2dBGB6KGu
 7SaJt1kBsllHKxcH05QJQ9IKHJUDkAYl2gCqQyKCzfoSaACSiJHMstMN+IJbLjdoyqKVZQNpPq8P
 zPfcuCWwYgew4p6U/QvOFfuDR6YSkPbAJ+FoLHJjL4zXCY2TWGsX54AFVqLyYZdpgGZtFzBqurRg
 oJTyE4aRjNou/Gs3yGZBKmQJhYIXJDfcEH4NFmh+2AQNV86thXAWyd19UDS7GUmaquQvJafKMNrv
 aXp/oID+vb6mD7q5EeckcKhBnPzBYg5rZZMcC8LCoJkusToMDv4qtuLbwsR2UaY+MmDtBih4i0SF
 daBHWUfGoHL35a617W1xHNAvd325gvppKKgweRcY5UzZAln9GI1WrmI3Sx/UlDOCD41NQOt4c6Ip
 YEhDsm1QYtyYGwMR+yB9N+Fm5bBLHFEDQsBVpbASYwkoIRACtAqlBxth711IuUJXQDG10sykBHcz
 CXKfNhudX8wm7Iej04vRHPKAuFxlOZvZI2oHhPBhkQ5SesxG4wCM1wy9JtqHVq2DewBx9zJsj6TB
 qjIIcTmZIAwEBoEuOz4CD+IaFIexJH40m01nc+ESZtvs58YHRtOkQKTAB5jbkCv8YE8zOrnC/9HR
 tYJzejIpVYwx9I5m6P3cOA0IsMZeRuuZFafCq9IQFoYq8r7ghRIGLirxHU5zFIcozv8Gsa1AB8jr
 Wo4TQx5LIvAWZG2jVWZzR6sk1FhJf9bWrXREYZA5dC+ELm9I1MgZmAy0er9izdRasOaN74BzH8WY
 OU7Z+79Dmo3GE1A2yDrnFqx6VytebND0yA4DCB0AGouN52fjs5FoJgy2HEzAI/gRUBizD+MPUxIW
 TI6LbD4asaPT+RRff4yZs4mYwbRKcCdh6NdDd2LErfBurwDv9iRiJn0R6fsAr9epYUtUIaVOhvBg
 fd4Z9va+AMLjWywlXPVcoPfMTp6C9/gC40sBvs/YW7Ur0yF6Ggq/dH0fllwdyTE0ID49z70BZ8o9
 KYAQ9A5/37gJKDDuhqFZCUPj2Gm9AXovMcRCDY27FVFrbYF34o4ZM0KIBxaFqmTJQwd1BaoEprHk
 qCbxIS7m8ZUglcp8jGhPwVS7OXOrQBUVoBGDB/0yqIpLZPzp7HT0aTQ5P0KhsMn0nKIWToY9iEW2
 R599RWT7BgSEjoqAuPr8UQgk+fQgBpKVfhcIKjV+CgqSTRQYtJ3OJ+GgDIVSP48BIm4NT0NEkrAv
 AolkZ0/FRNuBfCUo5/wBG3eJD6kbcECRgyQ2hXbxjZ+ARbGmrhZm1r1YhZfWCnxA7FsgxC0KPND0
 fWXf3uigAmfbPM9AMap7A3suskqFMplBEJbxLH+VkaxaLC/mLgoYTZaN6xJvC94xDjSj21VmstfV
 jANdzoRcYSKWNQXEY8UxeFbw47EHUAQZyLpG8xJ8ENKxwNXPQ/CGK+G/K8DxIJitqiCOGWfb/18H
 4SgDbgU4ereAcPRudmBAOiJfxOHXXlvvQZDFk4Ner0at1TOG8uFXd9jZr1a9gdbNdmpq66sgdFoh
 C6wgTFauG2HaS5JrGxIQYAN4RKAU8KANs1Dsl4f5fnjItxjlbngo9hRvfXeF9flxECX4nngoN8NF
 Q1AVEPhVGFGl5SZ1whscNvEXPP6K9CpNUsu+omavoZm/UInGLtw0S0SWH8ML35kNBRYM5fYrLnlo
 w5WfU7I3//Vb6/hidjKe3bVbLQ5R1cObN9sqr62gVJGMGVicbRD9f2Ux7yISUxLb3C/IeGHxuLK4
 cuMAlxjmwg3c2LdbL3zMWD3mVrvvFe2+12VFWtFKCzmqbXf0Yb87NPZq1A9q29aqDx8zdgEMdlUw
 2MVY2pdqe8cl1W6AU2YNsScNQ6Xumkm4hge8+WG2Of9pjt+z2fR8av6PieiMLzuosQnBIGG/QW4N
 j849B8+da7jYqeFih97EATYtdzBDfviyh4nAgiV3hVPrdoMdzT7OL+ajE04TjAD/adydSGMbK6pT
 /5KeEFZBEQ0Zuws/wQB+n9YGNMM6v1XVo+Df8Ko7wULHTWAQz4nYIYua7yJTzFhU2fghs+CfmseX
 ZxY8KHcVgt7YeH5PwRj66VC+5Ia9iSH5losAJfD9+ezoeHSvwytQQt5lfsyPUvDYzs7OBk996jDT
 5jvPqbN3hwxIxrQZ4CwS9s9/YmWUwo6Hc5HFIRX/LFr+UmeHh2xycXpabABlprcC8PAt+4BXHKha
 h4RRE/BjZ/T+6OQDXUMgmnij9BZi/utDdnL+09nI/GEyPRmVWhF04M2QZS34mpcWYMxDtmPjjo8p
 5iW1K6u1Aph+yKgsU7UaCqMFXxNqQOm3mRjUApAGlOnFfK6VkN/Us0nknbN3bDw5Nz8d/Viin3BT
 vdhV7Caw+N9OW3wDhRfjqYm8LBYl7sJbLUQxWMJsfgbKUKyDik/6WKk0ZOs1MHaYQBpbNq4hYB18
 7dLKI7pFkEgaxau15Vyhh7MpzBEtDdLmx9FkPK3z2XLdgyGtsgrWOC9LM+U6jWpGWpAbfE3NkO2U
 YtJmaSc7DVE7SuCBbLWcOiiWBmIFPmiidzt2nbogFNuXxADahzR++y2THR/C8mE0Pz+anQstJzXP
 C4EJMyhRcj5PL05P3p9Oj78X49SKtowDNA9ZceSq+T5g7NtlgLRntHQyiUC08MMdckooZ5d7SDRj
 LVMuYBWXnaa4oOJdoRr1APoMwP7nzi+M2CX8IdfxvNEddzptBJ2gYXNYnKG/vB9VGEUVtj2qVGLa
 /T6snpTNqG6vq/XyC13A9ojAzAr5Mx9/FK4DSjDObZfCy/OabnxpmS69ENN5DOeLP4Xdz4nh1Lg6
 iJf2Lf9QKBeRm0Z7buhWSPxrx+5/tchNSvqf0P1lQjcx8z+x+6mxm4x6e/DmFv5nhW8aN69Oas3r
 VcabXYw3vyfqs5LE2XMiEXtWJKpYR9OWdmttoZv8eitpddTtd8BKl8D6rEyvWE2redmtXTwSNIY9
 WCTjjlq/L9fTFZUfX1H39nWtt6/s6fKMbEXd7e7V5ucntffzk9pvdLkcN2mQDXhJm6EYKFNczBYR
 Ul7XFmeAGt/QgY8IFIlnLp00Zg38L5s2ElGZOgYnntTf0oq+290v0XC1cpLbNacASPEFFfbakXfN
 HSu1qPkuND+g5nQzHDoQR49ioS1nkQGBIu3FeWU9Dqp75ABAdllCGI92LJR4k8StSz9op34kvy/9
 04fKIbdvBRV3ghgnELWJUuJ8+6Bt9FmnP+wYQx3Pt3ukXlmNJ2ln39D6ym4Pvmbw+Bu5w/ZdskjT
 29byHWZyZ89/r8Dvpm3/vUKxE/J8opc8N3XA293PXPmXmHt/w37DD8TkkxZxL72T9+jwT76tUKIa
 RVDMyrf16e6CcTDsdbO7C1VV80uqvWGvem9/0NMGipAHeOMtu8PAlzoSw8RoKbTPR5gyv5jwJFsu
 Oam6RNq4KIhlVIc0QsG3ArW2G4ysHGDJbYKHdE7I/oaH/enST4YKJuEjVKDNTl3p6zS0r/JjOETs
 sR+lEPTkyazaJU4Xwqn54cTEYL6DU4M0X+gi9q0LdCvgBPT/EU8S6doBKAFfOa1DvGMEU5Jd0/yw
 XyEuANcpnl7+DLAaAis6XoDPU/Po+PgToGBJPXZ/vHSBft/Lp+AneOeBTgTuzYEmIXE1LNBPppPT
 nzDOq3mfZ5J8HODDo33W6PYXkE8onuOZGrLoYlJmUl2USkk0dZFzp0zpjJ9FA+LEuwF0aM2NhK/x
 MahmY98skbxMLuXbgDQ2aZ2ibqhodfZdLiUu2seYP5lOOIIjCQPTeFta5ggOFJCeQIAi/+jj0XiS
 wUzgj7TMTdB8h6Gx5TnwR8urt6U6iGQA26cm/kIq3KQ7pGmZFhDTZm4iFI3OkeNNhAef+dUWnEcu
 seLwaguBSCspoMOiJLUgoJ7NQcAz8/PR+FwTdZERpvlhfDoyTQ1Sp+MJpIpkyqolvc3JvKE7MqKO
 StflLegDjwhZBTkZFN+2CeUcz9UU8bnkcS1W1234uYR+ruTbHX/eMXcFy0rZlVrlLtPfh5X+Tt1b
 4V5T7KxkMfLx2MVPv/684CXG334U3SkeRXdYmXI1gIk8EcEG7c4+Yo8+ABS9Rn2pIaxQOY9hUH+w
 5WBK1/Su+uNMyDCMveeGsWcAyIeimXRj90JaTULVoPi2WWerQ/mDTBERv3YQJA48IQryhd9fNQwW
 ZlGKg59nvzMOFjt9YiDku2BPiYTZrGhGmZdMmBW7KHRSKjl6FigPnx3M6gor+X4GqkQYMR5eYU58
 HyC07U2c0MWlTZD6K34t6tfItdFF8wtdsn1+6z2/0IVTETfNkFCLZTRzRoq2hdBOuqbo0gMIIduX
 LkCEWlBGBtykBTRgu0i4BAisyd/EzgmVKSFMlQldd4pBi2F+4gabcnctH56skL2T9lcMg9+7bkRb
 a5tAXkwvX4zLK8uu7wVAdBa7h9yDSEIFOmngLcEHeI4/Nc9NJ2vEWcmvDS5x+49aIaKIsWoCAUOl
 Dlsokwe+krVDDko/SfFSGzGKrikqQwzlq8KsjEDccgPWfUdoayvIymHYfbQFEAx5z/Ea+dTvhKDr
 /2ZY7PO/FhYjLpHnswLuXBSG3MNkd0/R6wpXwJXVCrI2ihuLXbB/CpnCBd8sgZnXYHjIBXnXlTeT
 t4Md3ykrrECGOO3X2eigdkFhgYHzPSpSSB2u/cUyI+AfbhwqXOBMCCQPMsx53xNlBIOpJvKarass
 0BQi0QbAHoQRqDq79ddy9zyaJG2zzkNWJfjFEPpU8Pt/Nzeki2FEAAA=
 
 --_=_=_=IMA.BOUNDARY.F3T4CP138764=_=_=_--

From: John Plevyak <jplevyak@inktomi.com>
To: freebsd-gnats-submit@freebsd.org, info@highwind.com
Cc:  
Subject: Re: kern/8011: libc_r does not have pread() or pwrite() interfaces
Date: Wed, 03 Mar 1999 20:44:16 +0000

 The pread/pwrite patch is flawed as it sets fp->f_offset which can cause
 problems
 in multithreaded programs.
 
 Here is a patch for the patch:
 
 *** sys_generic.c.save  Wed Mar  3 12:23:55 1999
 --- sys_generic.c       Wed Mar  3 12:23:58 1999
 ***************
 *** 153,159 ****
         struct uio auio;        struct iovec aiov;
         long cnt, error = 0;
 -       off_t   curoff;
   #ifdef KTRACE
         struct iovec ktriov;
   #endif
 --- 153,158 ----
 ***************
 *** 168,174 ****
         aiov.iov_len = uap->nbyte;
         auio.uio_iov = &aiov;
         auio.uio_iovcnt = 1;
 !       auio.uio_offset = -1;
         if (uap->nbyte > INT_MAX)
                 return (EINVAL);
         auio.uio_resid = uap->nbyte;
 --- 167,173 ----
         aiov.iov_len = uap->nbyte;
         auio.uio_iov = &aiov;
         auio.uio_iovcnt = 1;
 !       auio.uio_offset = uap->offse;
         if (uap->nbyte > INT_MAX)
                 return (EINVAL);
         auio.uio_resid = uap->nbyte;
                 return (EINVAL);
         auio.uio_resid = uap->nbyte;
 ***************
 *** 183,196 ****
                 ktriov = aiov;  #endif
         cnt = uap->nbyte;
 -       curoff = fp->f_offset;
 -       fp->f_offset = uap->offset;
         if ((error = (*fp->f_ops->fo_read)(fp, &auio, fp->f_cred)))
                 if (auio.uio_resid != cnt && (error == ERESTART ||
                     error == EINTR || error == EWOULDBLOCK))
                         error = 0;
         cnt -= auio.uio_resid;
 -       fp->f_offset = curoff;
   #ifdef KTRACE
         if (KTRPOINT(p, KTR_GENIO) && error == 0)
                 ktrgenio(p->p_tracep, uap->fd, UIO_READ, &ktriov, cnt,
 error);
 --- 182,192 ----
 ***************
 *** 373,379 ****
         struct uio auio;
         struct iovec aiov;
         long cnt, error = 0;
 -       off_t curoff;
   #ifdef KTRACE
         struct iovec ktriov;
   #endif
 --- 369,374 ----
   #endif
 --- 369,374 ----
 ***************
 *** 388,394 ****
         aiov.iov_len = uap->nbyte;        auio.uio_iov = &aiov;
         auio.uio_iovcnt = 1;
 !       auio.uio_offset = -1;
         if (uap->nbyte > INT_MAX)
                 return (EINVAL);
         auio.uio_resid = uap->nbyte;
 --- 383,389 ----
         aiov.iov_len = uap->nbyte;
         auio.uio_iov = &aiov;
         auio.uio_iovcnt = 1;
 !       auio.uio_offset = uap->offset;
         if (uap->nbyte > INT_MAX)
                 return (EINVAL);
         auio.uio_resid = uap->nbyte;
 ***************
 *** 403,410 ****
                 ktriov = aiov;
   #endif
         cnt = uap->nbyte;
 -       curoff = fp->f_offset;
 -       fp->f_offset = uap->offset;
         if ((error = (*fp->f_ops->fo_write)(fp, &auio, fp->f_cred))) {
                 if (auio.uio_resid != cnt && (error == ERESTART ||
                     error == EINTR || error == EWOULDBLOCK))
                 if (auio.uio_resid != cnt && (error == ERESTART ||
                     error == EINTR || error == EWOULDBLOCK))
 --- 398,403 ----
 ***************
 *** 413,419 ****                        psignal(p, SIGPIPE);
         }
         cnt -= auio.uio_resid;
 -       fp->f_offset = curoff;
   #ifdef KTRACE
         if (KTRPOINT(p, KTR_GENIO) && error == 0)
                 ktrgenio(p->p_tracep, uap->fd, UIO_WRITE,
 --- 406,411 ----
 
 
 

From: John Plevyak <jplevyak@inktomi.com>
To: freebsd-gnats-submit@freebsd.org, info@highwind.com
Cc:  
Subject: Re: kern/8011: libc_r does not have pread() or pwrite() interfaces
Date: Fri, 05 Mar 1999 01:09:12 +0000

 pread and pwrite under FreeBSD  3.1+ also require patching vfs_vnops.c
 because
 vn_read/vn_write mess with fp->f_offset as well:
 
 Index: sys/kern/vfs_vnops.c
 ===================================================================
 RCS file: /usr/cvsroot/src/sys/kern/vfs_vnops.c,v
 retrieving revision 1.62
 diff -c -r1.62 vfs_vnops.c
 *** vfs_vnops.c 1999/01/20 14:49:11     1.62
 --- vfs_vnops.c 1999/03/04 16:09:40
 ***************
 *** 284,296 ****
 
         VOP_LEASE(vp, p, cred, LEASE_READ);
         vn_lock(vp, LK_SHARED | LK_NOPAUSE | LK_RETRY, p);
 !       if (uio->uio_offset == -1)
 !               uio->uio_offset = fp->f_offset;
 !       count = uio->uio_resid;
         flag = 0;
         if (fp->f_flag & FNONBLOCK)
                 flag |= IO_NDELAY;
 
         /*
          * Sequential read heuristic.
          * If we have been doing sequential input,
 --- 284,306 ----
 
         VOP_LEASE(vp, p, cred, LEASE_READ);
         vn_lock(vp, LK_SHARED | LK_NOPAUSE | LK_RETRY, p);
 !
         flag = 0;
         if (fp->f_flag & FNONBLOCK)
                 flag |= IO_NDELAY;
 
 +       if (uio->uio_offset != -1) {
 +               flag = 0;
 +               if (fp->f_flag & FNONBLOCK)
 +                       flag |= IO_NDELAY;
 +               error = VOP_READ(vp, uio, flag, cred);
 +               VOP_UNLOCK(vp, 0, p);
 +               return error;
 +       }
 +
 +       uio->uio_offset = fp->f_offset;
 +       count = uio->uio_resid;
 +
         /*
          * Sequential read heuristic.
          * If we have been doing sequential input,
 ***************
 *** 347,352 ****
 --- 357,367 ----
                 ioflag |= IO_SYNC;
         VOP_LEASE(vp, p, cred, LEASE_WRITE);
         vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
 +       if (uio->uio_offset != -1) {
 +               error = VOP_WRITE(vp, uio, ioflag, cred);
 +               VOP_UNLOCK(vp, 0, p);
 +               return error;
 +       }
         uio->uio_offset = fp->f_offset;
         count = uio->uio_resid;
         error = VOP_WRITE(vp, uio, ioflag, cred);
 
 
 

From: "Robert M. Fleischman" <rmf@highwind.com>
To: freebsd-gnats-submit@freebsd.org
Cc:  
Subject: Re: kern/8011: libc_r does not have pread() or pwrite() interfaces
Date: Fri, 2 Apr 1999 00:59:29 -0500 (EST)

 It appears someone has commit'ed, (as in just a few days ago), pread()
 and pwrite() interfaces to the 4.0 kernel.
 
 That is great... HOWEVER... They didn't add man pages or prototypes to 
 the headers.
 
 Without the prototypes in the headers, it is very difficult to use
 those functions in a nice way.
 
 Can someone please do this?
 
 Probably just means adding the following to "unistd.h":
 
 ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset);
 ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset);
 
 -Rob
 
 -- 
 support@highwind.com - "Every time, All the time"
 
State-Changed-From-To: open->closed 
State-Changed-By: steve 
State-Changed-When: Sun Apr 4 14:52:11 PDT 1999 
State-Changed-Why:  
dt@freebsd.org added the missing prototypes to unistd.h earlier today. 
State-Changed-From-To: closed->open 
State-Changed-By: steve 
State-Changed-When: Sun Apr 4 15:18:39 PDT 1999 
State-Changed-Why:  
*smack* I jumped the gun here.  For some reason I thought all we were 
waiting was the header file additions, but alas there is much more 
unresolved issues to be undertaken.  I think I heard the originator 
volunteer to write the manpages to go along with his patches. :) :) 
State-Changed-From-To: open->feedback 
State-Changed-By: deischen 
State-Changed-When: Thu Jul 29 05:03:29 PDT 1999 
State-Changed-Why:  
Well, it looks like pread has all the necessary interfaces now, both 
prototypes and manpages.  I'll close this PR out in about a week 
or so if I don't hear back from the originator or other concerned 
parties. 
State-Changed-From-To: feedback->closed 
State-Changed-By: deischen 
State-Changed-When: Wed Aug 4 04:28:10 PDT 1999 
State-Changed-Why:  
pread and pwrite are now implemented complete with prototypes and 
manpages.  Assumed lack of response while in the feedback state 
indicates satisfactory resolution of problem. 
>Unformatted:
