Mercurial > repos > tabletprog
annotate modules/epoll.tp @ 375:f8d80c16abbd
Add epoll module and a basic epoll sample
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 14 Aug 2015 23:08:54 -0700 |
parents | |
children |
rev | line source |
---|---|
375
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 _helper <- #{ |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 includeSystemHeader: "sys/epoll.h" |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 llMessage: create withVars: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 efd <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 } andCode: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 efd <- make_object: (addr_of: obj_int32_meta) NULL 0 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 efd num!: (epoll_create: 8) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 efd |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 llMessage: ctl withVars: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 oepfd <- object ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 epfd <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 oop <- object ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 op <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 ofd <- object ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 fd <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 omask <- object ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 mask <- obj_uint32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 data <- object ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 res <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 event <- struct: epoll_event |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 } andCode: :oepfd oop ofd omask data { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 epfd <- (mcall: int32 1 oepfd) castTo: (obj_int32 ptr) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 op <- (mcall: int32 1 oop) castTo: (obj_int32 ptr) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 fd <- (mcall: int32 1 ofd) castTo: (obj_int32 ptr) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 mask <- (mcall: int32 1 omask) castTo: (obj_int32 ptr) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 res <- make_object: (addr_of: obj_int32_meta) NULL 0 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 event events!: (mask num) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 (addr_of: (event data)) ptr!: (data) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 res num!: (epoll_ctl: (epfd num) (op num) (fd num) (addr_of: event)) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 res |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 _constant <- macro: :name cname { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 quote: (llMessage: name withVars: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 uintret <- obj_uint32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 } andCode: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 uintret <- make_object: (addr_of: obj_uint32_meta) NULL 0 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 uintret num!: cname |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 uintret |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 }) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 _controlOps <- #{ |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 _constant: add EPOLL_CTL_ADD |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 _constant: mod EPOLL_CTL_MOD |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 _constant: del EPOLL_CTL_DEL |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 _events <- #{ |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 _constant: in EPOLLIN |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 _constant: out EPOLLOUT |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 _constant: rdhup EPOLLRDHUP |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 _constant: pri EPOLLPRI |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 _constant: err EPOLLERR |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 _constant: hup EPOLLHUP |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 _constant: et EPOLLET |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
58 _constant: oneshot EPOLLONESHOT |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 #{ |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 events <- { _events } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 create <- { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 efd <- _helper create |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 if: efd >= 0 { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
65 _pinData <- dict hash |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
66 eobj <- #{ |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
67 llProperty: _fd withType: int32_t |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
68 llMessage: _set_fd withVars: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
69 ofd <- object ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
70 ifd <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
71 } andCode: :ofd { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
72 ifd <- (mcall: int32 1 ofd) castTo: (obj_int32 ptr) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
73 _fd <- ifd num |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
74 self |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
75 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
76 llMessage: fd withVars: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
77 ifd <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
78 } andCode: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
79 ifd <- make_object: (addr_of: obj_int32_meta) NULL 0 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
80 ifd num!: _fd |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
81 ifd |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
82 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
83 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
84 addFD:withMask:data <- :nfd :mask :data { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
85 if: (_helper ctl: fd (_controlOps add) nfd mask data) = 0 { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
86 _pinData set: nfd data |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
87 true |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
88 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
89 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
90 deleteFD <- :dfd { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
91 if: (_helper ctl: fd (_controlOps del) dfd 0u32 false) = 0 { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
92 //HACK: replace data with false since we don't have a delete method on hashes yet |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
93 _pinData set: dfd false |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
94 true |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
95 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
96 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
97 modifyFD:setMask:data <- :mfd :mask :data { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
98 if: (_helper ctl: fd (_controlOps mod) mfd mask data) = 0 { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
99 _pinData set: mfd data |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
100 true |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
101 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
102 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
103 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
104 event:data <- :_event:_data { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
105 #{ |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
106 event <- { _event } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
107 data <- { _data } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
108 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
109 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
110 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
111 llMessage: wait:maxEvents withVars: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
112 otimeout <- object ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
113 omaxevents <- object ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
114 timeout <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
115 maxevents <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
116 events <- (struct: epoll_event) ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
117 retarr <- array ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
118 res <- obj_int32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
119 omask <- obj_uint32 ptr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
120 i <- int32_t |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
121 } andCode: :otimeout omaxevents { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
122 timeout <- (mcall: int32 1 otimeout) castTo: (obj_int32 ptr) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
123 maxevents <- (mcall: int32 1 omaxevents) castTo: (obj_int32 ptr) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
124 events <- GC_MALLOC_ATOMIC: (sizeof: (struct: epoll_event)) * (maxevents num) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
125 res <- make_object: (addr_of: obj_int32_meta) NULL 0 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
126 res num!: (epoll_wait: _fd events (maxevents num) (timeout num)) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
127 if: (res num) >= 0 { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
128 retarr <- make_array: 0 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
129 mcall: resize 2 retarr res |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
130 i <- 0 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
131 while: { i < (res num) } do: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
132 omask <- make_object: (addr_of: obj_uint32_meta) NULL 0 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
133 omask num!: ((addr_of: (events get: i)) events) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
134 mcall: append 2 retarr (mcall: event:data 3 self omask ((addr_of: ((addr_of: (events get: i)) data) ) ptr)) |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
135 i <- i + 1 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
136 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
137 mcall: value 2 option retarr |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
138 } else: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
139 mcall: none 1 option |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
140 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
141 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
142 |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
143 llMessage: close withVars: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
144 } andCode: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
145 if: (close: _fd) = 0 { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
146 true |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
147 } else: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
148 false |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
149 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
150 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
151 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
152 eobj _set_fd: efd |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
153 option value: eobj |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
154 } else: { |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
155 option none |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
156 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
157 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
158 } |
f8d80c16abbd
Add epoll module and a basic epoll sample
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
159 } |