|
|
1.1 root 1: /* 1.1.1.2 ! root 2: ** Structure for active shares. 1.1 root 3: ** 4: ** Used by the kernel and by programs such as "init" and "login". 5: */ 6: 7: typedef short uid_t; 8: 9: struct lnode 10: { 11: uid_t l_uid; /* real uid for owner of this node */ 12: u_short l_flags; /* (see below) */ 13: u_short l_shares; /* allocated shares */ 14: uid_t l_group; /* uid for this node's scheduling group */ 15: float l_usage; /* decaying accumulated costs */ 16: float l_charge; /* long term accumulated costs */ 17: }; 18: 19: /* 20: ** Values of limits "flags". 21: */ 22: 23: #define ACTIVELNODE 001 /* this lnode is on active list */ 24: #define LASTREF 002 /* set for L_DEADLIM if last reference to this lnode */ 25: #define DEADGROUP 004 /* group account is dead */ 26: #define CHNGDLIMITS 020 /* this lnode's limits have changed */ 27: #define NOTSHARED 040 /* this lnode does not get a share of the m/c */ 28: 29: /* 1.1.1.2 ! root 30: ** Kernel user share structure. 1.1 root 31: */ 32: 33: typedef struct kern_lnode * KL_p; 34: 35: struct kern_lnode 36: { 37: KL_p kl_next; /* next in active list */ 38: KL_p kl_prev; /* prev in active list */ 39: KL_p kl_parent; /* group parent */ 40: KL_p kl_gnext; /* next in parent's group */ 41: KL_p kl_ghead; /* start of this group */ 1.1.1.2 ! root 42: struct lnode kl; /* user parameters */ 1.1 root 43: float kl_gshares; /* total shares for this group */ 1.1.1.2 ! root 44: float kl_eshare; /* effective share for this group */ ! 45: float kl_norms; /* share**2 for this lnode */ ! 46: float kl_usage; /* kl.l_usage / kl_norms */ ! 47: float kl_rate; /* active process rate for this lnode */ 1.1 root 48: float kl_temp; /* temporary for scheduler */ 1.1.1.2 ! root 49: float kl_spare; /* <spare> */ 1.1 root 50: u_long kl_cost; /* cost accumulating in current period */ 1.1.1.2 ! root 51: u_long kl_muse; /* memory pages used */ 1.1 root 52: u_short kl_refcount; /* processes attached to this lnode */ 53: u_short kl_children; /* lnodes attached to this lnode */ 54: }; 55: 56: /* 57: ** Limits system call defines. 58: */ 59: 1.1.1.2 ! root 60: #define L_MYLIM 0 /* get own lnode structure */ ! 61: #define L_OTHLIM 1 /* get other user's lnode structure */ ! 62: #define L_ALLLIM 2 /* get all active lnode structures */ ! 63: #define L_SETLIM 3 /* set lnode for new user */ ! 64: #define L_DEADLIM 4 /* get zombie and lnode structure of child */ ! 65: #define L_CHNGLIM 5 /* change active lnode parameters */ ! 66: #define L_DEADGROUP 6 /* get lnode structure for dead group */ 1.1 root 67: #define L_GETCOSTS 7 /* get share constants */ 68: #define L_SETCOSTS 8 /* set share constants */ 1.1.1.2 ! root 69: #define L_MYKN 9 /* get own kern_lnode structure */ ! 70: #define L_OTHKN 10 /* get other user's kern_lnode structure */ ! 71: #define L_ALLKN 11 /* get all active kern_lnode structures */ 1.1 root 72: 73: /* 74: ** Kernel lnode table. 75: */ 76: 77: #ifdef KERNEL 78: extern KL_p lnodes; 79: extern KL_p lnodesMAXUSERS; 80: extern KL_p lastlnode; 81: extern int maxusers; 82: 83: extern float zerof; 84: extern float onef; 85: extern float twof; 86: #endif KERNEL 87: 88: #define _LNODE_ 1
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.