ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/AIO.xs
(Generate patch)

Comparing IO-AIO/AIO.xs (file contents):
Revision 1.67 by root, Tue Oct 24 03:17:39 2006 UTC vs.
Revision 1.70 by root, Tue Oct 24 15:15:56 2006 UTC

1/* solaris */
2#define _POSIX_PTHREAD_SEMANTICS 1
3
1#if __linux 4#if __linux
2# define _GNU_SOURCE 5# define _GNU_SOURCE
3#endif 6#endif
4 7
5#define _REENTRANT 1 8#define _REENTRANT 1
73 REQ_FSYNC, REQ_FDATASYNC, 76 REQ_FSYNC, REQ_FDATASYNC,
74 REQ_UNLINK, REQ_RMDIR, REQ_RENAME, 77 REQ_UNLINK, REQ_RMDIR, REQ_RENAME,
75 REQ_READDIR, 78 REQ_READDIR,
76 REQ_LINK, REQ_SYMLINK, 79 REQ_LINK, REQ_SYMLINK,
77 REQ_GROUP, REQ_NOP, 80 REQ_GROUP, REQ_NOP,
78 REQ_SLEEP, 81 REQ_BUSY,
79}; 82};
80 83
81#define AIO_REQ_KLASS "IO::AIO::REQ" 84#define AIO_REQ_KLASS "IO::AIO::REQ"
82#define AIO_GRP_KLASS "IO::AIO::GRP" 85#define AIO_GRP_KLASS "IO::AIO::GRP"
83 86
361 PUSHs (*av_fetch (av, i, 0)); 364 PUSHs (*av_fetch (av, i, 0));
362 } 365 }
363 break; 366 break;
364 367
365 case REQ_NOP: 368 case REQ_NOP:
366 case REQ_SLEEP: 369 case REQ_BUSY:
367 break; 370 break;
368 371
369 default: 372 default:
370 PUSHs (sv_2mortal (newSViv (req->result))); 373 PUSHs (sv_2mortal (newSViv (req->result)));
371 break; 374 break;
905 908
906 case REQ_FDATASYNC: req->result = fdatasync (req->fd); break; 909 case REQ_FDATASYNC: req->result = fdatasync (req->fd); break;
907 case REQ_FSYNC: req->result = fsync (req->fd); break; 910 case REQ_FSYNC: req->result = fsync (req->fd); break;
908 case REQ_READDIR: req->result = scandir_ (req->dataptr, &req->data2ptr); break; 911 case REQ_READDIR: req->result = scandir_ (req->dataptr, &req->data2ptr); break;
909 912
910 case REQ_SLEEP: 913 case REQ_BUSY:
911 { 914 {
912 struct timeval tv; 915 struct timeval tv;
913 916
914 tv.tv_sec = req->fd; 917 tv.tv_sec = req->fd;
915 tv.tv_usec = req->fd2; 918 tv.tv_usec = req->fd2;
1262 1265
1263 REQ_SEND; 1266 REQ_SEND;
1264} 1267}
1265 1268
1266void 1269void
1267aio_sleep (delay,callback=&PL_sv_undef) 1270aio_busy (delay,callback=&PL_sv_undef)
1268 double delay 1271 double delay
1269 SV * callback 1272 SV * callback
1270 PPCODE: 1273 PPCODE:
1271{ 1274{
1272 dREQ; 1275 dREQ;
1273 1276
1274 req->type = REQ_SLEEP; 1277 req->type = REQ_BUSY;
1275 req->fd = delay < 0. ? 0 : delay; 1278 req->fd = delay < 0. ? 0 : delay;
1276 req->fd2 = delay < 0. ? 0 : 1000. * (delay - req->fd); 1279 req->fd2 = delay < 0. ? 0 : 1000. * (delay - req->fd);
1277 1280
1278 REQ_SEND; 1281 REQ_SEND;
1279} 1282}
1304 REQ_SEND; 1307 REQ_SEND;
1305} 1308}
1306 1309
1307void 1310void
1308aioreq_pri (int pri = DEFAULT_PRI) 1311aioreq_pri (int pri = DEFAULT_PRI)
1309 CODE: 1312 CODE:
1310 if (pri < PRI_MIN) pri = PRI_MIN; 1313 if (pri < PRI_MIN) pri = PRI_MIN;
1311 if (pri > PRI_MAX) pri = PRI_MAX; 1314 if (pri > PRI_MAX) pri = PRI_MAX;
1312 next_pri = pri + PRI_BIAS; 1315 next_pri = pri + PRI_BIAS;
1316
1317void
1318aioreq_nice (int nice = 0)
1319 CODE:
1320 nice = next_pri - nice;
1321 if (nice < PRI_MIN) nice = PRI_MIN;
1322 if (nice > PRI_MAX) nice = PRI_MAX;
1323 next_pri = nice + PRI_BIAS;
1313 1324
1314void 1325void
1315flush () 1326flush ()
1316 PROTOTYPE: 1327 PROTOTYPE:
1317 CODE: 1328 CODE:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines