4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
* ~ lexi hale <lexi@hale.su>
* this header declares IO primitive functions and
* structures. it is the same for all platforms.
* platform-specific code is found in the *.platform.h
* files.
*/
#include <k/type.h>
typedef enum kiostream_kind {
kiostream_closed,
// this kiostream cannot be written to
kiostream_file,
// this kiostream represents a file
kiostream_sock,
................................................................................
typedef struct kiochan {
kiostream in;
// text can be read from this stream
kiostream out;
// text can be written to this stream
} kiochan;
unsigned long long kiosend(kiochan); // send data to a channel
unsigned long long kiorecv(kiochan); // receive data from a channel
typedef enum kiocond {
kiocond_ok,
// success
kiocond_fail,
// action failed
} kiocond;
#endif
|
|
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
..
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
* ~ lexi hale <lexi@hale.su>
* this header declares IO primitive functions and
* structures. it is the same for all platforms.
* platform-specific code is found in the *.platform.h
* files.
*/
#include <k/str.h>
#include <k/type.h>
#include <k/mem.h>
typedef enum kiostream_kind {
kiostream_closed,
// this kiostream cannot be written to
kiostream_file,
// this kiostream represents a file
kiostream_sock,
................................................................................
typedef struct kiochan {
kiostream in;
// text can be read from this stream
kiostream out;
// text can be written to this stream
} kiochan;
typedef enum kiocond {
kiocond_ok,
// success
kiocond_fail,
// action failed
} kiocond;
kiocond kiosend(kiochan, ksraw, sz*); // send data to a channel
kiocond kiorecv(kiochan, ksraw*); // receive data from a channel
kmptr kiorecvall(kiochan, kmcell*, kmkind); // automatically allocate a bufer for a channel
// kmkind is only used if kmcell* is NULL
kiocond kiocon(kiochan, kiochan); // connect one channel to another
#endif
|