DBA Data[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;