project
static projid_t project;
struct project prj, *pprj;
project = pprj->pj_projid;
project);
project = pprj->pj_projid;
project);
struct project prj, *pprj;
(void) printf(": project: %d\n", project);
project = getprojid();
pprj = getprojbyid(project, &prj, pbuf, sizeof (pbuf));
(void) printf(": project: %d\n", project);
return (sproj == project ? 0 : 1);
struct project proj, *pproj = NULL;
set_user_cred(const struct usr *u, struct project *pproj)
static int set_user_cred(const struct usr *, struct project *);
putprojent(const struct project *proj, FILE *fp)
struct project proj;
struct project *pproj;
struct project proj;
struct project proj;
struct project data;
(void) memset(&data, 0, sizeof (struct project));
{ "project", NULL, "display kernel project(s)", project },
struct project project;
if (getprojbyid(prprojid, &project, &prbuf,
projname = project.pj_name;
if (getprojbyname(projname, &project, &prbuf,
error = set_ids(p, &project, passwd_entry);
set_ids(struct ps_prochandle *p, struct project *project,
if ((error = setproject_proc(project->pj_name,
passwd_entry->pw_name, 0, Pstatus(p)->pr_pid, p, project)) != 0) {
setproject_err(passwd_entry->pw_name, project->pj_name,
error, project);
struct project prj;
setproject_err(char *username, char *projname, int error, struct project *proj)
struct project local_proj;
struct ps_prochandle *, struct project *);
static int set_ids(struct ps_prochandle *, struct project *,
static void setproject_err(char *, char *, int, struct project *);
extern int valid_project(char *, struct project *, void *buf, size_t, int *);
extern int valid_projname(char *, struct project *, void *buf, size_t, int *);
putprojent(struct project *projstr, FILE *to)
valid_projid(projid_t, struct project *, void *, size_t);
valid_project(char *project, struct project *pptr, void *buf, size_t len,
if (isdigit(*project)) {
projid = (projid_t)strtol(project, &ptr, (int)10);
for (ptr = project; *ptr != '\0'; ptr++) {
return (valid_projname(project, pptr, buf, len, warning));
valid_projid(projid_t projid, struct project *pptr, void *buf, size_t len)
struct project pbuf;
struct project *t_pptr;
valid_projname(char *project, struct project *pptr, void *buf, size_t blen,
struct project *t_pptr;
char *ptr = project;
if (!project || !*project)
if ((t_pptr = getprojbyname(project, pptr, buf, blen)) != NULL)
struct project *p_ptr;
struct project p_work;
struct project p_ptr;
struct project projent;
struct project proj;
struct project projent;
print_projent(struct project *projent)
struct project projent;
struct project proj;
struct project proj;
struct project cproj;
project_walk_all(int(*cb)(const struct project *, void *), void *walk_data)
struct project proj;
lcollection_update_project_cb(const struct project *proj, void *walk_data)
struct project proj;
extern struct project *getprojent(struct project *, void *, size_t);
extern struct project *getprojbyname(const char *,
struct project *, void *, size_t);
extern struct project *getprojbyid(projid_t, struct project *, void *, size_t);
extern struct project *getdefaultproj(const char *,
struct project *, void *, size_t);
extern struct project *fgetprojent(FILE *, struct project *, void *, size_t);
settaskid(projid_t project, uint_t flags)
while ((newtaskid = syscall(SYS_tasksys, 0, project, flags, NULL, 0))
struct project proj;
extern taskid_t pr_settaskid(struct ps_prochandle *Pr, projid_t project,
pr_settaskid(struct ps_prochandle *Pr, projid_t project, int flags)
return (settaskid(project, flags));
adp->arg_value = project;
adp->arg_size = sizeof (project);
struct project *
_getprojbyid(projid_t projid, struct project *result,
return ((struct project *)NSS_XbyY_FINI(&arg));
struct project *
_getprojbyname(const char *name, struct project *result,
return ((struct project *)NSS_XbyY_FINI(&arg));
ismember(struct project *proj, const char *user, gid_t gid, int is_default)
struct project *
_getdefaultproj(const char *user, struct project *result,
struct project proj;
struct project proj;
struct project *project = ent;
project->pj_name = p;
project->pj_projid = (projid_t)strtol(p, NULL, 10);
if (project->pj_projid < 0) {
project->pj_projid = 0;
project->pj_comment = p;
project->pj_attr = next;
project->pj_users = uglist;
project->pj_groups = uglist;
static int ismember(struct project *, const char *, gid_t, int);
struct project *
_getprojent(struct project *result, void *buffer, size_t buflen)
return ((struct project *)NSS_XbyY_FINI(&arg));
struct project *
_fgetprojent(FILE *f, struct project *result, void *buffer, size_t buflen)
return ((struct project *)NSS_XbyY_FINI(&arg));
pid_t pid, struct ps_prochandle *Pr, struct project *proj)
struct project local_proj; /* space to store proj if not provided */
struct project proj, *pp;
cip->project = NULL;
cip->project = strdup(str);
return (cip->project != NULL ? 0 : ENOMEM);
cip->project = strdup(pp->pj_name);
return (cip->project != NULL ? 0 : ENOMEM);
if (cip->project == NULL) {
switch (setproject(cip->project, cip->pwd.pw_name,
free(mcp->project);
char *project; /* NULL for no change */
struct project *ptr;
ptr = (struct project *)data;
sizeof (struct project),
struct project proj, *pproj;
uint64_t flags, uint64_t user, uint64_t group, uint64_t project,
(void) sprintf(name, "%llx", (longlong_t)project);
uint64_t user, uint64_t group, uint64_t project, boolean_t subtract)
DMU_OBJACCT_PREFIX "%llx", (longlong_t)project);
uint64_t *project = NULL;
project = &dn->dn_oldprojid;
project = &dn->dn_newprojid;
user, group, project);
#define PROJECT_IS_CAPPED(project) \
(((project)->kpj_cpucap != NULL) && \
CAP_ENABLED((project)->kpj_cpucap))