Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/include/sys/project.h
Real path: /usr/include/sys/project.h
Zurück
/* * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_PROJECT_H #define _SYS_PROJECT_H #ifdef __cplusplus extern "C" { #endif /* * DO NOT CONSUME THESE INTERFACES. * Interfaces defined in this file do not constitute a public interface. */ #include <sys/types.h> /* project attributes */ typedef enum { PROJ_ATTR_INVALID = -1, PROJ_ATTR_INIT, /* Is this project initialized by libproject or not? */ PROJ_ATTR_MAX } proj_attr_t; #ifdef _KERNEL #include <sys/kstat.h> #include <sys/mutex.h> #include <sys/rctl.h> #include <sys/ipc_rctl.h> #include <sys/zone.h> #include <sys/credit.h> typedef struct kproject_kstat { kstat_named_t kpk_zonename; kstat_named_t kpk_usage; kstat_named_t kpk_value; } kproject_kstat_t; typedef struct kproject_data { /* Datum protected by: */ rctl_qty_t kpd_shmmax; /* shm's ipcs_lock */ ipc_rqty_t kpd_ipc; /* shm|sem|msg's ipcs lock */ rctl_qty_t kpd_locked_mem; /* zone_mem_lock */ credit_t *kpd_locked_mem_credit; /* credit for locked mem */ rctl_qty_t kpd_locked_mem_ctl; /* kpj_rctls->rcs_lock */ rctl_qty_t kpd_adi_metadata; /* zone_adi_metadata_lock */ credit_t *kpd_adi_metadata_credit; /* credit for named adi */ rctl_qty_t kpd_adi_metadata_ctl; /* kpj_rctls->rcs_lock */ rctl_qty_t kpd_contract; /* contract_lock */ kstat_t *kpd_lockedmem_kstat; /* locked memory kstat */ kstat_t *kpd_adi_metadata_kstat; /* named adi kstat */ kstat_t *kpd_nprocs_kstat; } kproject_data_t; struct cpucap; struct project_cpu_time; typedef struct project_cpu_time_ctl { struct project_cpu_time *pc_cpu_time_array; /* per-set cpu time array */ uint64_t pc_last; /* snapshot of cpu time */ size_t pc_offset; /* array alignment offset */ } project_cpu_time_ctl_t; /* * The first two fields of this structure must not be reordered. */ typedef struct kproject { projid_t kpj_id; /* project ID */ zoneid_t kpj_zoneid; /* zone ID */ struct zone *kpj_zone; /* zone pointer */ uint_t kpj_count; /* reference counter */ uint32_t kpj_shares; /* number of shares */ rctl_set_t *kpj_rctls; /* resource control set */ struct kproject *kpj_prev; /* previous project */ struct kproject *kpj_next; /* next project */ kproject_data_t kpj_data; /* subsystem-specfic data */ kmutex_t kpj_poolbind; /* synchronization with pools */ rctl_qty_t kpj_nlwps; /* protected by project's zone's */ /* zone_nlwps_lock */ rctl_qty_t kpj_nlwps_ctl; /* protected by kpj_rctls->rcs_lock */ rctl_qty_t kpj_ntasks; /* protected by project's zone's */ /* zone_nlwps_lock */ rctl_qty_t kpj_ntasks_ctl; /* protected by kpj_rctls->rcs_lock */ struct cpucap *kpj_cpucap; /* CPU cap data */ rctl_qty_t kpj_nprocs; /* protected by project's zone's */ /* zone_nlwps_lock */ rctl_qty_t kpj_nprocs_ctl; /* protected by kpj_rctls->rcs_lock */ project_cpu_time_ctl_t kpj_cpu_time_ctl; /* project cpu time */ rctl_qty_t kpj_nports; /* protected by port_control_mutex */ rctl_qty_t kpj_nports_ctl; /* protected by kpj_rctls->rcs_lock */ /* Is project initialized by libproject? */ boolean_t kpj_init; } kproject_t; /* * Flags for project_hold_by_id() */ #define PROJECT_HOLD_FIND 1 #define PROJECT_HOLD_INSERT 2 /* Default chunk for locked memory credit object */ #define PROJECT_LOCKED_MEM_CHUNK (32) /* Default chunk for named adi credit object */ #define PROJECT_ADI_METADATA_BYTES_CHUNK (16 * PAGESIZE) void project_init(void); kproject_t *project_hold(kproject_t *); kproject_t *project_hold_by_id(projid_t, struct zone *, int); void project_rele(kproject_t *); int project_walk_all(zoneid_t, int (*)(kproject_t *, void *), void *); projid_t curprojid(void); int project_ncpu_cb(kproject_t *, void *); extern void project_cpu_time_add(kproject_t *, kthread_t *, uint64_t); extern uint64_t project_cpu_time_delta(kproject_t *); extern kproject_t *proj0p; #else /* private project syscalls. */ extern int getnproc_prjid(projid_t); extern int projlist(id_t *, size_t idbufsz); extern int project_getattr(projid_t, proj_attr_t, void *, size_t); extern int project_setattr(projid_t, proj_attr_t, void *, size_t); #endif /* _KERNEL */ #ifdef __cplusplus } #endif #endif /* _SYS_PROJECT_H */