Subversion Repositories Kolibri OS

Rev

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.