| /* |
| * Copyright (C) 2000-2005 SWsoft. All rights reserved. |
| * |
| * This file may be distributed under the terms of the Q Public License |
| * as defined by Trolltech AS of Norway and appearing in the file |
| * LICENSE.QPL included in the packaging of this file. |
| * |
| * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
| * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
| */ |
| #ifndef _UB_H_ |
| #define _UB_H_ |
| |
| #include "types.h" |
| |
| #define PROCUBC "/proc/user_beancounters" |
| |
| #ifndef UB_IPTENTRIES |
| #define UB_IPTENTRIES 23 /* Number of iptables rules */ |
| #endif |
| #define UB_DUMMY 255 |
| |
| /** Data structure for UBC parameter. |
| */ |
| typedef struct { |
| int res_id; /**< UBC resource id. */ |
| unsigned long limit[2]; /**< UBC resource barrier:limit. */ |
| } ub_res; |
| |
| /** Data structure for array of UBC parameters. |
| */ |
| typedef struct { |
| int num_res; /**< Number of resources in array. */ |
| ub_res *ub; /**< pointer on first element. */ |
| } ub_param; |
| |
| /** Static UBC structure |
| */ |
| struct ub_struct { |
| unsigned long *kmemsize; |
| unsigned long *lockedpages; |
| unsigned long *privvmpages; |
| unsigned long *shmpages; |
| unsigned long *numproc; |
| unsigned long *physpages; |
| unsigned long *vmguarpages; |
| unsigned long *oomguarpages; |
| unsigned long *numtcpsock; |
| unsigned long *numflock; |
| unsigned long *numpty; |
| unsigned long *numsiginfo; |
| unsigned long *tcpsndbuf; |
| unsigned long *tcprcvbuf; |
| unsigned long *othersockbuf; |
| unsigned long *dgramrcvbuf; |
| unsigned long *numothersock; |
| unsigned long *numfile; |
| unsigned long *dcachesize; |
| unsigned long *numiptent; |
| unsigned long *avnumproc; |
| }; |
| |
| /** Apply UBC resources. |
| * |
| * @param h VPS handler. |
| * @param veid VPS id. |
| * @param ubc UBC parameters |
| * @return 0 on success |
| */ |
| int vps_set_ublimit(vps_handler *h, envid_t veid, ub_param *ubc); |
| |
| int set_ublimit(vps_handler *h, envid_t veid, ub_param *ubc); |
| |
| /** Check that all required parameters are specified in ub. |
| * |
| * @param ub UBC parameters. |
| * @return 0 on success. |
| */ |
| int check_ub(ub_param *ub); |
| int get_ub_resid(char *name); |
| ub_res *get_ub_res(ub_param *ub, int res_id); |
| const char *get_ub_name(int res_id); |
| int add_ub_param(ub_param *ub, ub_res *res); |
| void free_ub_param(ub_param *ub); |
| void merge_ub(ub_param *dst, ub_param *src); |
| int vps_read_ubc(envid_t veid, ub_param *ub); |
| void ub2ubs(ub_param *ub, struct ub_struct *ubs); |
| void add_ubs_limit(struct ub_struct *ubs, int res_id, unsigned long *limit); |
| #endif |