1 /*  START OF:       dm_fast_lock_strucs.incl.pl1 ... June 1982   *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */
 2 
 3 /* DESCRIPTION:
 4    There is a fast_lock_block per segment to be locked.  There is a
 5    fast_lock_wakeup_block per waiter on the lock.  The fast*block's are
 6    taken from the fast_lock_data.list, which is a list of lock_list_block's.
 7 */
 8 
 9 /* HISTORY:
10 Written by J. Bongiovanni, 06/15/82.
11 Modified:
12 10/12/84 by Stanford S. Cox:  Added version constants.
13 11/14/84 by Stanford S. Cox:  Chg to make fast_lock_data.free_list_head
14    like lock_list_head.
15 */
16 
17 /* format: style2,^inddcls,ifthenstmt,ifthendo,^indnoniterdo,^inditerdo,ind3,idind32 */
18 dcl     fast_lock_ptr                   ptr;
19 dcl     fast_lock_block_ptr             ptr;
20 dcl     fast_lock_wakeup_block_ptr      ptr;
21 dcl     fast_lock_data_ptr              ptr;
22 
23 dcl     FAST_LOCK_DATA_VERSION_1        char (8) aligned init ("fastlk 1") int static options (constant);
24 
25 dcl     1 fast_lock                     aligned based (fast_lock_ptr),
26                                                             /* A fast lock */
27           2 lock_word                   bit (36) aligned,   /* "0"b (unlocked) or processid (locked) */
28           2 notify_sw                   bit (1) unal,       /* ON => notify on unlock */
29           2 pad                         bit (17) unal,
30           2 offset                      bit (18) unal;      /* Offset of block in fast_lock_data */
31 
32 
33 dcl     1 fast_lock_block               aligned based (fast_lock_block_ptr),
34                                                             /* Per-lock info, inner-ring */
35           2 uid                         bit (36) aligned,   /* Unique ID of segment */
36           2 offset                      bit (18) unal,      /* Offset of lock in segment */
37           2 pad                         bit (18) unal,
38           2 list_head                   bit (18) unal,      /* Thread pointer for wakeups */
39           2 mbz                         bit (18) unal,
40           2 pad1                        bit (36) aligned;
41 
42 
43 dcl     1 fast_lock_wakeup_block        aligned based (fast_lock_wakeup_block_ptr),
44                                                             /* Notify info */
45           2 event_channel               fixed bin (71),
46           2 processid                   bit (36) aligned,
47           2 message                     char (4);
48 
49 dcl     1 fast_lock_data                aligned based (fast_lock_data_ptr),
50           2 version                     char (8),
51           2 size                        fixed bin,
52           2 n_list_entries              fixed bin,
53           2 free_list_head              aligned like lock_list_head,
54           2 list                        fixed bin (71) aligned;
55 
56 /*  END OF:         dm_fast_lock_strucs.incl.pl1              *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */