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

Comparing libeio/eio.c (file contents):
Revision 1.53 by root, Sat Jan 9 10:03:09 2010 UTC vs.
Revision 1.55 by root, Wed Mar 31 00:46:18 2010 UTC

137/* used for struct dirent, AIX doesn't provide it */ 137/* used for struct dirent, AIX doesn't provide it */
138#ifndef NAME_MAX 138#ifndef NAME_MAX
139# define NAME_MAX 4096 139# define NAME_MAX 4096
140#endif 140#endif
141 141
142/* used for readlink etc. */
143#ifndef PATH_MAX
144# define PATH_MAX 4096
145#endif
146
142/* buffer size for various temporary buffers */ 147/* buffer size for various temporary buffers */
143#define EIO_BUFSIZE 65536 148#define EIO_BUFSIZE 65536
144 149
145#define dBUF \ 150#define dBUF \
146 char *eio_buf; \ 151 char *eio_buf; \
217static volatile unsigned int nreqs; /* reqlock */ 222static volatile unsigned int nreqs; /* reqlock */
218static volatile unsigned int nready; /* reqlock */ 223static volatile unsigned int nready; /* reqlock */
219static volatile unsigned int npending; /* reqlock */ 224static volatile unsigned int npending; /* reqlock */
220static volatile unsigned int max_idle = 4; 225static volatile unsigned int max_idle = 4;
221 226
222static mutex_t wrklock = X_MUTEX_INIT; 227static xmutex_t wrklock = X_MUTEX_INIT;
223static mutex_t reslock = X_MUTEX_INIT; 228static xmutex_t reslock = X_MUTEX_INIT;
224static mutex_t reqlock = X_MUTEX_INIT; 229static xmutex_t reqlock = X_MUTEX_INIT;
225static cond_t reqwait = X_COND_INIT; 230static xcond_t reqwait = X_COND_INIT;
226 231
227#if !HAVE_PREADWRITE 232#if !HAVE_PREADWRITE
228/* 233/*
229 * make our pread/pwrite emulation safe against themselves, but not against 234 * make our pread/pwrite emulation safe against themselves, but not against
230 * normal read/write by using a mutex. slows down execution a lot, 235 * normal read/write by using a mutex. slows down execution a lot,
231 * but that's your problem, not mine. 236 * but that's your problem, not mine.
232 */ 237 */
233static mutex_t preadwritelock = X_MUTEX_INIT; 238static xmutex_t preadwritelock = X_MUTEX_INIT;
234#endif 239#endif
235 240
236typedef struct etp_worker 241typedef struct etp_worker
237{ 242{
238 /* locked by wrklock */ 243 /* locked by wrklock */
239 struct etp_worker *prev, *next; 244 struct etp_worker *prev, *next;
240 245
241 thread_t tid; 246 xthread_t tid;
242 247
243 /* locked by reslock, reqlock or wrklock */ 248 /* locked by reslock, reqlock or wrklock */
244 ETP_REQ *req; /* currently processed request */ 249 ETP_REQ *req; /* currently processed request */
245 250
246 ETP_WORKER_COMMON 251 ETP_WORKER_COMMON
1608 case EIO_RENAME: req->result = rename (req->ptr1, req->ptr2); break; 1613 case EIO_RENAME: req->result = rename (req->ptr1, req->ptr2); break;
1609 case EIO_LINK: req->result = link (req->ptr1, req->ptr2); break; 1614 case EIO_LINK: req->result = link (req->ptr1, req->ptr2); break;
1610 case EIO_SYMLINK: req->result = symlink (req->ptr1, req->ptr2); break; 1615 case EIO_SYMLINK: req->result = symlink (req->ptr1, req->ptr2); break;
1611 case EIO_MKNOD: req->result = mknod (req->ptr1, (mode_t)req->int2, (dev_t)req->int3); break; 1616 case EIO_MKNOD: req->result = mknod (req->ptr1, (mode_t)req->int2, (dev_t)req->int3); break;
1612 1617
1613 case EIO_READLINK: ALLOC (NAME_MAX); 1618 case EIO_READLINK: ALLOC (PATH_MAX);
1614 req->result = readlink (req->ptr1, req->ptr2, NAME_MAX); break; 1619 req->result = readlink (req->ptr1, req->ptr2, PATH_MAX); break;
1615 1620
1616 case EIO_SYNC: req->result = 0; sync (); break; 1621 case EIO_SYNC: req->result = 0; sync (); break;
1617 case EIO_FSYNC: req->result = fsync (req->int1); break; 1622 case EIO_FSYNC: req->result = fsync (req->int1); break;
1618 case EIO_FDATASYNC: req->result = fdatasync (req->int1); break; 1623 case EIO_FDATASYNC: req->result = fdatasync (req->int1); break;
1619 case EIO_MSYNC: req->result = eio__msync (req->ptr2, req->size, req->int1); break; 1624 case EIO_MSYNC: req->result = eio__msync (req->ptr2, req->size, req->int1); break;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines