… | |
… | |
610 | Newz (0, req, 1, aio_cb); |
610 | Newz (0, req, 1, aio_cb); |
611 | |
611 | |
612 | req->type = REQ_QUIT; |
612 | req->type = REQ_QUIT; |
613 | req->pri = PRI_MAX + PRI_BIAS; |
613 | req->pri = PRI_MAX + PRI_BIAS; |
614 | |
614 | |
615 | req_send (req); |
615 | LOCK (reqlock); |
|
|
616 | reqq_push (&req_queue, req); |
|
|
617 | pthread_cond_signal (&reqwait); |
|
|
618 | UNLOCK (reqlock); |
616 | |
619 | |
617 | LOCK (wrklock); |
620 | LOCK (wrklock); |
618 | --started; |
621 | --started; |
619 | UNLOCK (wrklock); |
622 | UNLOCK (wrklock); |
620 | } |
623 | } |
… | |
… | |
1179 | PROTOTYPES: ENABLE |
1182 | PROTOTYPES: ENABLE |
1180 | |
1183 | |
1181 | BOOT: |
1184 | BOOT: |
1182 | { |
1185 | { |
1183 | HV *stash = gv_stashpv ("IO::AIO", 1); |
1186 | HV *stash = gv_stashpv ("IO::AIO", 1); |
|
|
1187 | |
1184 | newCONSTSUB (stash, "EXDEV", newSViv (EXDEV)); |
1188 | newCONSTSUB (stash, "EXDEV", newSViv (EXDEV)); |
1185 | newCONSTSUB (stash, "O_RDONLY", newSViv (O_RDONLY)); |
1189 | newCONSTSUB (stash, "O_RDONLY", newSViv (O_RDONLY)); |
1186 | newCONSTSUB (stash, "O_WRONLY", newSViv (O_WRONLY)); |
1190 | newCONSTSUB (stash, "O_WRONLY", newSViv (O_WRONLY)); |
1187 | newCONSTSUB (stash, "O_CREAT", newSViv (O_CREAT)); |
1191 | newCONSTSUB (stash, "O_CREAT", newSViv (O_CREAT)); |
1188 | newCONSTSUB (stash, "O_TRUNC", newSViv (O_TRUNC)); |
1192 | newCONSTSUB (stash, "O_TRUNC", newSViv (O_TRUNC)); |
|
|
1193 | newCONSTSUB (stash, "S_IFIFO", newSViv (S_IFIFO)); |
1189 | |
1194 | |
1190 | create_pipe (); |
1195 | create_pipe (); |
1191 | pthread_atfork (atfork_prepare, atfork_parent, atfork_child); |
1196 | pthread_atfork (atfork_prepare, atfork_parent, atfork_child); |
1192 | |
1197 | |
1193 | start_thread (); |
1198 | start_thread (); |