Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
9849 | akron1 | 1 | MODULE drv; |
2 | |||
3 | IMPORT SYSTEM, API; |
||
4 | |||
5 | TYPE |
||
6 | ioctl_t = RECORD |
||
7 | handle, |
||
8 | io_code, |
||
9 | input, |
||
10 | inp_size, |
||
11 | output, |
||
12 | out_size: INTEGER |
||
13 | END; |
||
14 | |||
15 | |||
16 | PROCEDURE [stdcall-, "core.dll", ""] RegService (name, adr: INTEGER): INTEGER; |
||
17 | |||
18 | PROCEDURE [stdcall] service_proc (my_ctl: ioctl_t): INTEGER; |
||
19 | VAR |
||
20 | a, b, res: INTEGER; |
||
21 | BEGIN |
||
22 | IF my_ctl.io_code = 0 THEN |
||
23 | SYSTEM.GET(my_ctl.input, a); |
||
24 | SYSTEM.GET(my_ctl.input + SYSTEM.SIZE(INTEGER), b); |
||
25 | SYSTEM.PUT(my_ctl.output, a + b); |
||
26 | res := 0 |
||
27 | ELSE |
||
28 | res := -1 |
||
29 | END |
||
30 | RETURN res |
||
31 | END service_proc; |
||
32 | |||
33 | |||
34 | PROCEDURE [stdcall-] entry (action: INTEGER; cmdline: INTEGER): INTEGER; |
||
35 | VAR |
||
36 | res: INTEGER; |
||
37 | BEGIN |
||
38 | IF action = 1 THEN |
||
39 | res := RegService(SYSTEM.SADR("test_drv"), SYSTEM.ADR(service_proc)) |
||
40 | ELSE |
||
41 | res := 0 |
||
42 | END |
||
43 | RETURN res |
||
44 | END entry; |
||
45 | |||
46 | |||
47 | BEGIN |
||
48 | entry(API.action, API.cmdline); |
||
49 | SYSTEM.CODE( |
||
50 | 0C9H, (* leave *) |
||
51 | 0C3H (* ret *) |
||
52 | ) |
||
53 | END drv. |