ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/libeio/eio.c
(Generate patch)

Comparing cvsroot/libeio/eio.c (file contents):
Revision 1.16 by root, Fri May 30 04:50:21 2008 UTC vs.
Revision 1.20 by root, Thu Jun 19 09:05:43 2008 UTC

371 371
372 pthread_once (&doinit, etp_once_init); 372 pthread_once (&doinit, etp_once_init);
373 373
374 want_poll_cb = want_poll; 374 want_poll_cb = want_poll;
375 done_poll_cb = done_poll; 375 done_poll_cb = done_poll;
376
377 return 0;
376} 378}
377 379
378X_THREAD_PROC (etp_proc); 380X_THREAD_PROC (etp_proc);
379 381
380static void etp_start_thread (void) 382static void etp_start_thread (void)
775 777
776#if !HAVE_READAHEAD 778#if !HAVE_READAHEAD
777# define readahead(fd,offset,count) eio__readahead (fd, offset, count, self) 779# define readahead(fd,offset,count) eio__readahead (fd, offset, count, self)
778 780
779static ssize_t 781static ssize_t
780eio__readahead (int fd, off_t offset, size_t count, worker *self) 782eio__readahead (int fd, off_t offset, size_t count, etp_worker *self)
781{ 783{
782 size_t todo = count; 784 size_t todo = count;
783 dBUF; 785 dBUF;
784 786
785 while (todo > 0) 787 while (todo > 0)
901 int memlen = 4096; 903 int memlen = 4096;
902 int memofs = 0; 904 int memofs = 0;
903 int res = 0; 905 int res = 0;
904 906
905 X_LOCK (wrklock); 907 X_LOCK (wrklock);
908 /* the corresponding closedir is in ETP_WORKER_CLEAR */
906 self->dirp = dirp = opendir (req->ptr1); 909 self->dirp = dirp = opendir (req->ptr1);
907 req->flags |= EIO_FLAG_PTR2_FREE; 910 req->flags |= EIO_FLAG_PTR2_FREE;
908 req->ptr2 = names = malloc (memlen); 911 req->ptr2 = names = malloc (memlen);
909 X_UNLOCK (wrklock); 912 X_UNLOCK (wrklock);
910 913
1039 1042
1040/*****************************************************************************/ 1043/*****************************************************************************/
1041 1044
1042int eio_init (void (*want_poll)(void), void (*done_poll)(void)) 1045int eio_init (void (*want_poll)(void), void (*done_poll)(void))
1043{ 1046{
1044 etp_init (want_poll, done_poll); 1047 return etp_init (want_poll, done_poll);
1045} 1048}
1046 1049
1047static void eio_api_destroy (eio_req *req) 1050static void eio_api_destroy (eio_req *req)
1048{ 1051{
1049 free (req); 1052 free (req);
1111 case EIO_RMDIR: req->result = rmdir (req->ptr1); break; 1114 case EIO_RMDIR: req->result = rmdir (req->ptr1); break;
1112 case EIO_MKDIR: req->result = mkdir (req->ptr1, (mode_t)req->int2); break; 1115 case EIO_MKDIR: req->result = mkdir (req->ptr1, (mode_t)req->int2); break;
1113 case EIO_RENAME: req->result = rename (req->ptr1, req->ptr2); break; 1116 case EIO_RENAME: req->result = rename (req->ptr1, req->ptr2); break;
1114 case EIO_LINK: req->result = link (req->ptr1, req->ptr2); break; 1117 case EIO_LINK: req->result = link (req->ptr1, req->ptr2); break;
1115 case EIO_SYMLINK: req->result = symlink (req->ptr1, req->ptr2); break; 1118 case EIO_SYMLINK: req->result = symlink (req->ptr1, req->ptr2); break;
1116 case EIO_MKNOD: req->result = mknod (req->ptr1, (mode_t)req->int2, (dev_t)req->offs); break; 1119 case EIO_MKNOD: req->result = mknod (req->ptr1, (mode_t)req->int2, (dev_t)req->int3); break;
1117 1120
1118 case EIO_READLINK: ALLOC (NAME_MAX); 1121 case EIO_READLINK: ALLOC (NAME_MAX);
1119 req->result = readlink (req->ptr1, req->ptr2, NAME_MAX); break; 1122 req->result = readlink (req->ptr1, req->ptr2, NAME_MAX); break;
1120 1123
1121 case EIO_SYNC: req->result = 0; sync (); break; 1124 case EIO_SYNC: req->result = 0; sync (); break;
1328 return eio__1path (EIO_READDIR, path, pri, cb, data); 1331 return eio__1path (EIO_READDIR, path, pri, cb, data);
1329} 1332}
1330 1333
1331eio_req *eio_mknod (const char *path, mode_t mode, dev_t dev, int pri, eio_cb cb, void *data) 1334eio_req *eio_mknod (const char *path, mode_t mode, dev_t dev, int pri, eio_cb cb, void *data)
1332{ 1335{
1333 REQ (EIO_MKNOD); PATH; req->int2 = (long)mode; req->int2 = (long)dev; SEND; 1336 REQ (EIO_MKNOD); PATH; req->int2 = (long)mode; req->int3 = (long)dev; SEND;
1334} 1337}
1335 1338
1336static eio_req * 1339static eio_req *
1337eio__2path (int type, const char *path, const char *new_path, int pri, eio_cb cb, void *data) 1340eio__2path (int type, const char *path, const char *new_path, int pri, eio_cb cb, void *data)
1338{ 1341{

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines