/* * * LIB - agent rights block defintions [not in Starlet] * (aks access rights block) */ #ifndef _ARBDEF_H #define _ARBDEF_H /* Agent Rights Block - structure defining process access rights and privileges. Currently part of the PCB (meaning that the size of the ARB declared here must track in the PCB). */ #define ARB$S_PRIV 8 #define ARB$S_CLASS 20 #define ARB$S_RIGHTSLIST 20 #define ARB$S_RIGHTSDESC 8 #define ARB$S_LOCALRIGHTS 64 #define ARB$C_HEADER 52 /* Length of header */ #define ARB$K_HEADER 52 #define ARB$K_LENGTH 124 /* Structure length */ #define ARB$C_LENGTH 124 #define ARB$S_ARBDEF 124 struct arbdef { long arb$q_priv[2]; /* current privilege mask */ unsigned short arb$w_size; /* structure size */ unsigned char arb$b_type; /* structure type */ unsigned char arb$b_flags; /* process flags */ struct { unsigned char arb$b_class[20]; /* security classification mask */ } arb$r_class; struct { /* rights list descriptors */ unsigned long arb$l_process; /* process rights */ unsigned long arb$l_system; /* system rights */ unsigned long arb$l_extended; /* extended process rights */ unsigned long arb$l_image; /* image rights */ unsigned long arb$l_reserved; /* reserved */ } arb$r_rightslist; struct { unsigned long arb$l_rightsdesc[2]; /* descriptor for local rights list */ } arb$r_rightsdesc; struct { /* process local rights list */ unsigned char arb$b_localrights[60]; union { unsigned long arb$l_uic; /* process UID */ struct { unsigned short arb$w_mem; /* member number */ unsigned short arb$w_grp; /* group number */ } arb$r_uic_fields; } arb$r_uic_overlay; } arb$r_localrights; }; #endif /*_ARBDEF_H*/