1 /*  START OF:       kst.incl.pl1                              *  *  *  *  *  */
 2 
 3 /*
 4 Modified March 1976 by R. Bratt
 5 Modified November 1984 to remove hdr, Keith Loepere. */
 6 
 7 
 8 /****^  HISTORY COMMENTS:
 9   1) change(86-08-08,GDixon), approve(86-08-08,MCR7388),
10      audit(86-09-02,Farley), install(86-09-08,MR12.0-1150):
11      Add warning on use of kste.entryp.
12                                                    END HISTORY COMMENTS */
13 
14 
15 dcl  pds$kstp ext ptr,
16     (kstp, kstep) ptr;
17 
18 dcl 1 kst aligned based (kstp),                             /* KST header declaration */
19     2 lowseg fixed bin (17),                                /* lowest segment number described by kst */
20     2 highseg fixed bin (17),                               /* highest segment number described by kst */
21     2 highest_used_segno fixed bin (17),                    /* highest segment number yet used  */
22     2 lvs fixed bin (8),                                    /* number of private LVs this process is connected to */
23     2 time_of_bootload fixed bin (71),                      /* bootload time during prelinking */
24     2 garbage_collections fixed bin (17) unaligned,         /* KST garbage collections */
25     2 entries_collected fixed bin (17) unaligned,           /* KST entries recovered by garbage collection */
26     2 free_list bit (18) unaligned,                         /* relative pointer to first free kste */
27     2 prelinked_ring (7) bit (1) unaligned,                 /* rings prelinked in process */
28     2 template bit (1) unaligned,                           /* this is a template kst if set */
29     2 allow_256K_connect bit (1) unaligned,                 /* can use 256K segments */
30     2 unused_2 bit (9) unaligned,
31     2 uid_hash_bucket (0 : 127) bit (18) unaligned,         /* hash buckets */
32     2 kst_entry (0 refer (kst.lowseg):0 refer (kst.highseg)) aligned like kste, /* kst entries */
33     2 lv (1:256) bit (36),                                  /* private logical volume connection list */
34     2 end_of_kst bit (36);
35 
36 dcl 1 kste based (kstep) aligned,                           /* KST entry declaration */
37     2 fp bit (18) unaligned,                                /* forward rel pointer */
38     2 segno fixed bin (17) unaligned,                       /* segment number of this kste */
39     2 usage_count (0:7) fixed bin (8) unaligned,            /* outstanding initiates/ring */
40     2 entryp ptr unaligned,                                 /* branch pointer */
41                                                             /* See WARNING below for requirements to use entryp. */
42     2 uid bit (36) aligned,                                 /* unique identifier */
43     2 access_information unaligned,
44       3 dtbm bit (36),                                      /* date time branch modified */
45       3 extended_access bit (33),                           /* extended access from the branch */
46       3 access bit (3),                                     /* rew */
47       3 ex_rb (3) bit (3),                                  /* ring brackets from branch */
48     2 pad1 bit (3) unaligned,
49     2 flags unaligned,
50       3 dirsw bit (1),                                      /* directory switch */
51       3 allow_write bit (1),                                /* set if initiated with write permission */
52       3 priv_init bit (1),                                  /* privileged initiation */
53       3 tms bit (1),                                        /* transparent modification switch */
54       3 tus bit (1),                                        /* transparent usage switch */
55       3 tpd bit (1),                                        /* transparent paging device switch */
56       3 audit bit (1),                                      /* audit switch */
57       3 explicit_deact_ok bit (1),                          /* set if I am willing to have a user force deactivate */
58       3 pad bit (3),
59     2 infcount fixed bin (12) unaligned;                    /* _^Hi_^Hf dirsw _^Ht_^Hh_^He_^Hn inferior count _^He_^Hl_^Hs_^He lv index */
60 
61 
62 /* *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
63 /*                                                                           */
64 /* WARNING: Before using kste.entryp to get a pointer to the directory       */
65 /* entry associated with the kst entry, you must first validate its value    */
66 /* by calling sum$getbranch or sum$getbranch_root_my.  This call also locks  */
67 /* the containing directory.  The containing directory must remain locked    */
68 /* during the entire period when kste.entryp and the directory entry are     */
69 /* being referenced.  Once the directory is unlocked, kste.entryp can no     */
70 /* longer be used to get a pointer to the entry within the unlocked          */
71 /* directory since the dir entry could have been moved within the directory  */
72 /* by another processor.                                                     */
73 /*                                                                           */
74 /* If you only need a pointer to the directory containing the associated     */
75 /* dir entry (but not to the dir entry itself), you can use:                 */
76 /*    pointer (kste.entryp, 0)                                               */
77 /* without calling sum to lock the directory and validate entryp.  GDixon    */
78 /*                                                                           */
79 /* *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
80 
81 /*  END OF:         kst.incl.pl1                              *  *  *  *  *  */