ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Linux-AIO/AIO.pm
Revision: 1.2
Committed: Tue Aug 14 18:06:37 2001 UTC (22 years, 9 months ago) by root
Branch: MAIN
Changes since 1.1: +25 -4 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 =head1 NAME
2
3 Linux::AIO - linux-specific aio implemented using clone
4
5 =head1 SYNOPSIS
6
7 use Linux::AIO;
8
9 =head1 DESCRIPTION
10
11 =over 4
12
13 =cut
14
15 package Linux::AIO;
16
17 use base 'Exporter';
18
19 BEGIN {
20 $VERSION = 0.001;
21
22 @EXPORT = qw(aio_read aio_write);
23 @EXPORT_OK = qw(poll_fileno poll_cb min_parallel max_parallel nreqs);
24
25 require XSLoader;
26 XSLoader::load Linux::AIO, $VERSION;
27 }
28
29 =item Linux::AIO::min_parallel($nthreads)
30
31 Set the minimum number of AIO threads to $nthreads.
32
33 =cut
34
35 =item aio_read($fh,$offset,$length, $data,$dataoffset,$callback)
36 aio_write($fh,$offset,$length, $data,$dataoffset,$callback)
37
38 Reads or writes C<length> bytes from the specified C<fh> and C<offset>
39 into the scalar given by C<data> and offset C<dataoffset> and calls the
40 callback without the actual number of bytes read (or undef on error).
41
42 =item $fileno = Linux::AIO::poll_fileno
43
44 Return the request result pipe filehandle. This filehandle must be polled
45 for reading. If the pipe becomes readable you have to call C<poll_cb>.
46
47 =item Linux::AIO::poll_cb
48
49 Process all outstanding events on the result pipe. You have to call this
50 regularly. Returns the number of events processed.
51
52 =item Linux::AIO::nreqs
53
54 Returns the number of requests currently outstanding.
55
56 =cut
57
58 END {
59 max_parallel 0;
60 }
61
62 1;
63
64 =back
65
66 =head1 BUGS
67
68 This module has not yet been extensively tested. Watch out!
69
70 This module does not use the aio_* posix functions because a) linux does
71 not have aio, b) the existing aio_* functions use pthreads, which are too
72 buggy for my usage.
73
74 =head1 SEE ALSO
75
76 L<Coro>.
77
78 =head1 AUTHOR
79
80 Marc Lehmann <pcg@goof.com>
81 http://www.goof.com/pcg/marc/
82
83 =cut
84