[Home] [Help]
PACKAGE BODY: SYS.USER_LOCK
Source
1 package body user_lock is
2
3 procedure psdlgt(id binary_integer, lockmode binary_integer,
4 maxholders binary_integer, timeout binary_integer,
5 rel_on_commit binary_integer, global binary_integer,
6 status in out binary_integer);
7 pragma interface (C, psdlgt);
8 procedure psdlcv(id binary_integer, lockmode binary_integer,
9 maxholders binary_integer, timeout binary_integer,
10 status in out binary_integer);
11 pragma interface (C, psdlcv);
12 procedure psdlrl(id binary_integer, status in out binary_integer);
13 pragma interface (C, psdlrl);
14 procedure psdwat(tens_of_millisecs binary_integer);
15 pragma interface (C, psdwat);
16
17 function request(id number, lockmode number, timeout number, global number)
18 return number is
19 arg1 binary_integer;
20 arg2 binary_integer;
21 arg3 binary_integer;
22 arg4 binary_integer;
23 arg5 binary_integer;
24 status binary_integer;
25 begin
26 arg1 := id;
27 arg2 := lockmode;
28 arg3 := 0;
29 arg4 := timeout;
30 arg5 := global;
31 /* this package does not support release_on_commit - so just enter 0 */
32 psdlgt(arg1, arg2, arg3, arg4, 0, arg5, status);
33 return(status);
34 end;
35
36 function convert(id number, lockmode number, timeout number) return number is
37 arg1 binary_integer;
38 arg2 binary_integer;
39 arg3 binary_integer;
40 arg4 binary_integer;
41 status binary_integer;
42 begin
43 arg1 := id;
44 arg2 := lockmode;
45 arg3 := 0;
46 arg4 := timeout;
47 psdlcv(arg1, arg2, arg3, arg4, status);
48 return (status);
49 end;
50
51 function release(id number) return number is
52 arg1 binary_integer;
53 status binary_integer;
54 begin
55 arg1 := id;
56 psdlrl(arg1, status);
57 return (status);
58 end;
59
60 procedure sleep(tens_of_millisecs number) is
61 arg1 binary_integer;
62 begin
63 arg1 := tens_of_millisecs;
64 psdwat(arg1);
65 end;
66
67 end;