… | |
… | |
254 | void *ptr1; /* all applicable requests: pathname, old name; readdir: optional eio_dirents */ |
254 | void *ptr1; /* all applicable requests: pathname, old name; readdir: optional eio_dirents */ |
255 | void *ptr2; /* all applicable requests: new name or memory buffer; readdir: name strings */ |
255 | void *ptr2; /* all applicable requests: new name or memory buffer; readdir: name strings */ |
256 | eio_tstamp nv1; /* utime, futime: atime; busy: sleep time */ |
256 | eio_tstamp nv1; /* utime, futime: atime; busy: sleep time */ |
257 | eio_tstamp nv2; /* utime, futime: mtime */ |
257 | eio_tstamp nv2; /* utime, futime: mtime */ |
258 | |
258 | |
259 | int type; /* EIO_xxx constant ETP */ |
|
|
260 | int int1; /* all applicable requests: file descriptor; sendfile: output fd; open, msync, mlockall, readdir: flags */ |
259 | int int1; /* all applicable requests: file descriptor; sendfile: output fd; open, msync, mlockall, readdir: flags */ |
261 | long int2; /* chown, fchown: uid; sendfile: input fd; open, chmod, mkdir, mknod: file mode, seek: whence, sync_file_range, fallocate: flags */ |
260 | long int2; /* chown, fchown: uid; sendfile: input fd; open, chmod, mkdir, mknod: file mode, seek: whence, sync_file_range, fallocate: flags */ |
262 | long int3; /* chown, fchown: gid; rename, link: working directory of new name */ |
261 | long int3; /* chown, fchown: gid; rename, link: working directory of new name */ |
263 | int errorno; /* errno value on syscall return */ |
262 | int errorno; /* errno value on syscall return */ |
264 | |
263 | |
|
|
264 | unsigned char flags; /* private */ |
|
|
265 | |
|
|
266 | signed char type;/* EIO_xxx constant ETP */ |
|
|
267 | signed char pri; /* the priority ETP */ |
265 | #if __i386 || __amd64 |
268 | #if __i386 || __amd64 |
266 | unsigned char cancelled; |
269 | unsigned char cancelled; /* ETP */ |
267 | #else |
270 | #else |
268 | sig_atomic_t cancelled; |
271 | sig_atomic_t cancelled; /* ETP */ |
269 | #endif |
272 | #endif |
270 | |
|
|
271 | unsigned char flags; /* private */ |
|
|
272 | signed char pri; /* the priority */ |
|
|
273 | |
273 | |
274 | void *data; |
274 | void *data; |
275 | eio_cb finish; |
275 | eio_cb finish; |
276 | void (*destroy)(eio_req *req); /* called when request no longer needed */ |
276 | void (*destroy)(eio_req *req); /* called when request no longer needed */ |
277 | void (*feed)(eio_req *req); /* only used for group requests */ |
277 | void (*feed)(eio_req *req); /* only used for group requests */ |
278 | |
278 | |
279 | EIO_REQ_MEMBERS |
279 | EIO_REQ_MEMBERS |
280 | |
280 | |
281 | eio_req *grp, *grp_prev, *grp_next, *grp_first; /* private */ |
281 | eio_req *grp, *grp_prev, *grp_next, *grp_first; /* private ETP */ |
282 | }; |
282 | }; |
283 | |
283 | |
284 | /* _private_ request flags */ |
284 | /* _private_ request flags */ |
285 | enum { |
285 | enum { |
286 | EIO_FLAG_PTR1_FREE = 0x01, /* need to free(ptr1) */ |
286 | EIO_FLAG_PTR1_FREE = 0x01, /* need to free(ptr1) */ |