您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GROUP_AT函数代码示例

51自学网 2021-06-01 20:55:22
  C++
这篇教程C++ GROUP_AT函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中GROUP_AT函数的典型用法代码示例。如果您正苦于以下问题:C++ GROUP_AT函数的具体用法?C++ GROUP_AT怎么用?C++ GROUP_AT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了GROUP_AT函数的23个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: groups_sort

/* a simple Shell sort */static void groups_sort(struct group_info *group_info){	int base, max, stride;	int gidsetsize = group_info->ngroups;	for (stride = 1; stride < gidsetsize; stride = 3 * stride + 1)		; /* nothing */	stride /= 3;	while (stride) {		max = gidsetsize - stride;		for (base = 0; base < max; base++) {			int left = base;			int right = left + stride;			gid_t tmp = GROUP_AT(group_info, right);			while (left >= 0 && GROUP_AT(group_info, left) > tmp) {				GROUP_AT(group_info, right) =				    GROUP_AT(group_info, left);				right = left;				left -= stride;			}			GROUP_AT(group_info, right) = tmp;		}		stride /= 3;	}}
开发者ID:maraz,项目名称:linux-2.6,代码行数:28,


示例2: generic_match

static intgeneric_match(struct auth_cred *acred, struct rpc_cred *cred, int flags){	struct generic_cred *gcred = container_of(cred, struct generic_cred, gc_base);	int i;	if (gcred->acred.uid != acred->uid ||	    gcred->acred.gid != acred->gid ||	    gcred->acred.machine_cred != acred->machine_cred)		goto out_nomatch;	/* Optimisation in the case where pointers are identical... */	if (gcred->acred.group_info == acred->group_info)		goto out_match;	/* Slow path... */	if (gcred->acred.group_info->ngroups != acred->group_info->ngroups)		goto out_nomatch;	for (i = 0; i < gcred->acred.group_info->ngroups; i++) {		if (GROUP_AT(gcred->acred.group_info, i) !=				GROUP_AT(acred->group_info, i))			goto out_nomatch;	}out_match:	return 1;out_nomatch:	return 0;}
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:28,


示例3: generic_match

static intgeneric_match(struct auth_cred *acred, struct rpc_cred *cred, int flags){	struct generic_cred *gcred = container_of(cred, struct generic_cred, gc_base);	int i;	if (acred->machine_cred)		return machine_cred_match(acred, gcred, flags);	if (gcred->acred.uid != acred->uid ||	    gcred->acred.gid != acred->gid ||	    gcred->acred.machine_cred != 0)		goto out_nomatch;		if (gcred->acred.group_info == acred->group_info)		goto out_match;		if (gcred->acred.group_info->ngroups != acred->group_info->ngroups)		goto out_nomatch;	for (i = 0; i < gcred->acred.group_info->ngroups; i++) {		if (GROUP_AT(gcred->acred.group_info, i) !=				GROUP_AT(acred->group_info, i))			goto out_nomatch;	}out_match:	return 1;out_nomatch:	return 0;}
开发者ID:Albinoman887,项目名称:pyramid-3.4.10,代码行数:31,


示例4: cr_groups_search

cr_groups_search(const struct group_info *group_info, gid_t grp)#endif{	unsigned int left, right, mid;	int cmp;	if (!group_info)		return (0);	left = 0;	right = group_info->ngroups;	while (left < right) {		mid = (left + right) / 2;		cmp = KGID_TO_SGID(grp) -		    KGID_TO_SGID(GROUP_AT(group_info, mid));		if (cmp > 0)			left = mid + 1;		else if (cmp < 0)			right = mid;		else			return (1);	}	return (0);}
开发者ID:DeHackEd,项目名称:zfs,代码行数:25,


示例5: task_state

static inline void task_state(struct seq_file *m, struct pid_namespace *ns,                              struct pid *pid, struct task_struct *p){    struct user_namespace *user_ns = seq_user_ns(m);    struct group_info *group_info;    int g;    struct fdtable *fdt = NULL;    const struct cred *cred;    pid_t ppid, tpid;    rcu_read_lock();    ppid = pid_alive(p) ?           task_tgid_nr_ns(rcu_dereference(p->real_parent), ns) : 0;    tpid = 0;    if (pid_alive(p)) {        struct task_struct *tracer = ptrace_parent(p);        if (tracer)            tpid = task_pid_nr_ns(tracer, ns);    }    cred = get_task_cred(p);    seq_printf(m,               "State:/t%s/n"               "Tgid:/t%d/n"               "Pid:/t%d/n"               "PPid:/t%d/n"               "TracerPid:/t%d/n"               "Uid:/t%d/t%d/t%d/t%d/n"               "Gid:/t%d/t%d/t%d/t%d/n",               get_task_state(p),               task_tgid_nr_ns(p, ns),               pid_nr_ns(pid, ns),               ppid, tpid,               from_kuid_munged(user_ns, cred->uid),               from_kuid_munged(user_ns, cred->euid),               from_kuid_munged(user_ns, cred->suid),               from_kuid_munged(user_ns, cred->fsuid),               from_kgid_munged(user_ns, cred->gid),               from_kgid_munged(user_ns, cred->egid),               from_kgid_munged(user_ns, cred->sgid),               from_kgid_munged(user_ns, cred->fsgid));    task_lock(p);    if (p->files)        fdt = files_fdtable(p->files);    seq_printf(m,               "FDSize:/t%d/n"               "Groups:/t",               fdt ? fdt->max_fds : 0);    rcu_read_unlock();    group_info = cred->group_info;    task_unlock(p);    for (g = 0; g < group_info->ngroups; g++)        seq_printf(m, "%d ",                   from_kgid_munged(user_ns, GROUP_AT(group_info, g)));    put_cred(cred);    seq_putc(m, '/n');}
开发者ID:Runner85sx,项目名称:android_kernel_huawei_msm8909,代码行数:60,


示例6: unx_create_cred

static struct rpc_cred *unx_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags){	struct unx_cred	*cred;	unsigned int groups = 0;	unsigned int i;	dprintk("RPC:       allocating UNIX cred for uid %d gid %d/n",			acred->uid, acred->gid);	if (!(cred = kmalloc(sizeof(*cred), GFP_NOFS)))		return ERR_PTR(-ENOMEM);	rpcauth_init_cred(&cred->uc_base, acred, auth, &unix_credops);	cred->uc_base.cr_flags = 1UL << RPCAUTH_CRED_UPTODATE;	if (acred->group_info != NULL)		groups = acred->group_info->ngroups;	if (groups > NFS_NGROUPS)		groups = NFS_NGROUPS;	cred->uc_gid = acred->gid;	for (i = 0; i < groups; i++)		cred->uc_gids[i] = GROUP_AT(acred->group_info, i);	if (i < NFS_NGROUPS)		cred->uc_gids[i] = NOGROUP;	return &cred->uc_base;}
开发者ID:3sOx,项目名称:asuswrt-merlin,代码行数:29,


示例7: gssx_dec_linux_creds

static int gssx_dec_linux_creds(struct xdr_stream *xdr,				struct svc_cred *creds){	u32 length;	__be32 *p;	u32 tmp;	u32 N;	int i, err;	p = xdr_inline_decode(xdr, 4);	if (unlikely(p == NULL))		return -ENOSPC;	length = be32_to_cpup(p);	if (length > (3 + NGROUPS_MAX) * sizeof(u32))		return -ENOSPC;	/* uid */	err = get_host_u32(xdr, &tmp);	if (err)		return err;	creds->cr_uid = make_kuid(&init_user_ns, tmp);	/* gid */	err = get_host_u32(xdr, &tmp);	if (err)		return err;	creds->cr_gid = make_kgid(&init_user_ns, tmp);	/* number of additional gid's */	err = get_host_u32(xdr, &tmp);	if (err)		return err;	N = tmp;	if ((3 + N) * sizeof(u32) != length)		return -EINVAL;	creds->cr_group_info = groups_alloc(N);	if (creds->cr_group_info == NULL)		return -ENOMEM;	/* gid's */	for (i = 0; i < N; i++) {		kgid_t kgid;		err = get_host_u32(xdr, &tmp);		if (err)			goto out_free_groups;		err = -EINVAL;		kgid = make_kgid(&init_user_ns, tmp);		if (!gid_valid(kgid))			goto out_free_groups;		GROUP_AT(creds->cr_group_info, i) = kgid;	}	return 0;out_free_groups:	groups_free(creds->cr_group_info);	return err;}
开发者ID:19Dan01,项目名称:linux,代码行数:59,


示例8: task_state

static inline void task_state(struct seq_file *m, struct pid_namespace *ns,				struct pid *pid, struct task_struct *p){	struct group_info *group_info;	int g;	struct fdtable *fdt = NULL;	const struct cred *cred;	pid_t ppid, tpid, vpid;	rcu_read_lock();	ppid = pid_alive(p) ? ve_task_ppid_nr_ns(p, ns) : 0;	tpid = 0;	if (pid_alive(p)) {		struct task_struct *tracer = tracehook_tracer_task(p);		if (tracer)			tpid = task_pid_nr_ns(tracer, ns);	}	vpid = task_virtual_pid(p);	cred = get_task_cred(p);	seq_printf(m,		"State:/t%s/n"		"Tgid:/t%d/n"		"Pid:/t%d/n"		"PPid:/t%d/n"		"TracerPid:/t%d/n"		"Uid:/t%d/t%d/t%d/t%d/n"		"Gid:/t%d/t%d/t%d/t%d/n",		get_task_state(p),		task_tgid_nr_ns(p, ns),		pid_nr_ns(pid, ns),		ppid, tpid,		cred->uid, cred->euid, cred->suid, cred->fsuid,		cred->gid, cred->egid, cred->sgid, cred->fsgid);	task_utrace_proc_status(m, p);	task_lock(p);	if (p->files)		fdt = files_fdtable(p->files);	seq_printf(m,		"FDSize:/t%d/n"		"Groups:/t",		fdt ? fdt->max_fds : 0);	rcu_read_unlock();	group_info = cred->group_info;	task_unlock(p);	for (g = 0; g < min(group_info->ngroups, NGROUPS_SMALL); g++)		seq_printf(m, "%d ", GROUP_AT(group_info, g));	put_cred(cred);	seq_printf(m, "/n");	seq_printf(m, "envID:/t%d/nVPid:/t%d/n",			p->ve_task_info.owner_env->veid, vpid);	seq_printf(m, "StopState:/t%u/n", p->stopped_state);}
开发者ID:vps2fast,项目名称:openvz-kernel,代码行数:59,


示例9: groups_search

/* a simple bsearch */int groups_search(const struct group_info *group_info, kgid_t grp){	unsigned int left, right;	if (!group_info)		return 0;	left = 0;	right = group_info->ngroups;	while (left < right) {		unsigned int mid = (left+right)/2;		if (gid_gt(grp, GROUP_AT(group_info, mid)))			left = mid + 1;		else if (gid_lt(grp, GROUP_AT(group_info, mid)))			right = mid;		else			return 1;	}	return 0;}
开发者ID:020gzh,项目名称:linux,代码行数:21,


示例10: groups16_to_user

static int groups16_to_user(u16 __user *grouplist, struct group_info *group_info){	int i;	u16 group;	for (i = 0; i < group_info->ngroups; i++) {		group = (u16)GROUP_AT(group_info, i);		if (put_user(group, grouplist+i))			return -EFAULT;	}	return 0;}
开发者ID:cilynx,项目名称:dd-wrt,代码行数:13,


示例11: groups16_from_user

static int groups16_from_user(struct group_info *group_info, u16 __user *grouplist){	int i;	u16 group;	for (i = 0; i < group_info->ngroups; i++) {		if (get_user(group, grouplist+i))			return  -EFAULT;		GROUP_AT(group_info, i) = (gid_t)group;	}	return 0;}
开发者ID:cilynx,项目名称:dd-wrt,代码行数:13,


示例12: task_state

static inline void task_state(struct seq_file *m, struct pid_namespace *ns,				struct pid *pid, struct task_struct *p){	struct group_info *group_info;	int g;	struct fdtable *fdt = NULL;	pid_t ppid, tpid;	rcu_read_lock();	ppid = pid_alive(p) ?		task_tgid_nr_ns(rcu_dereference(p->real_parent), ns) : 0;	tpid = 0;	if (pid_alive(p)) {		struct task_struct *tracer = tracehook_tracer_task(p);		if (tracer)			tpid = task_pid_nr_ns(tracer, ns);	}	seq_printf(m,		"State:/t%s/n"		"Tgid:/t%d/n"		"Pid:/t%d/n"		"PPid:/t%d/n"		"TracerPid:/t%d/n"		"Uid:/t%d/t%d/t%d/t%d/n"		"Gid:/t%d/t%d/t%d/t%d/n",		get_task_state(p),		task_tgid_nr_ns(p, ns),		pid_nr_ns(pid, ns),		ppid, tpid,		p->uid, p->euid, p->suid, p->fsuid,		p->gid, p->egid, p->sgid, p->fsgid);	task_lock(p);	if (p->files)		fdt = files_fdtable(p->files);	seq_printf(m,		"FDSize:/t%d/n"		"Groups:/t",		fdt ? fdt->max_fds : 0);	rcu_read_unlock();	group_info = p->group_info;	get_group_info(group_info);	task_unlock(p);	for (g = 0; g < min(group_info->ngroups, NGROUPS_SMALL); g++)		seq_printf(m, "%d ", GROUP_AT(group_info, g));	put_group_info(group_info);	seq_printf(m, "/n");}
开发者ID:mikeberkelaar,项目名称:grhardened,代码行数:51,


示例13: groups16_to_user

static int groups16_to_user(old_gid_t __user *grouplist,    struct group_info *group_info){    int i;    old_gid_t group;    for (i = 0; i < group_info->ngroups; i++) {        group = high2lowgid(GROUP_AT(group_info, i));        if (put_user(group, grouplist+i))            return -EFAULT;    }    return 0;}
开发者ID:274914765,项目名称:C,代码行数:14,


示例14: groups16_from_user

static int groups16_from_user(struct group_info *group_info,    old_gid_t __user *grouplist){    int i;    old_gid_t group;    for (i = 0; i < group_info->ngroups; i++) {        if (get_user(group, grouplist+i))            return  -EFAULT;        GROUP_AT(group_info, i) = low2highgid(group);    }    return 0;}
开发者ID:274914765,项目名称:C,代码行数:14,


示例15: groups_to_user

/* export the group_info to a user-space array */static int groups_to_user(gid_t __user *grouplist,			  const struct group_info *group_info){	struct user_namespace *user_ns = current_user_ns();	int i;	unsigned int count = group_info->ngroups;	for (i = 0; i < count; i++) {		gid_t gid;		gid = from_kgid_munged(user_ns, GROUP_AT(group_info, i));		if (put_user(gid, grouplist+i))			return -EFAULT;	}	return 0;}
开发者ID:020gzh,项目名称:linux,代码行数:16,


示例16: task_state

static inline char * task_state(struct task_struct *p, char *buffer){	struct group_info *group_info;	int g;	struct fdtable *fdt = NULL;	read_lock(&tasklist_lock);	buffer += sprintf(buffer,		"State:/t%s/n"		"SleepAVG:/t%lu%%/n"		"Tgid:/t%d/n"		"Pid:/t%d/n"		"PPid:/t%d/n"		"TracerPid:/t%d/n"		"Uid:/t%d/t%d/t%d/t%d/n"		"Gid:/t%d/t%d/t%d/t%d/n",		get_task_state(p),		(p->sleep_avg/1024)*100/(1020000000/1024),	       	p->tgid,		p->pid, pid_alive(p) ? p->group_leader->real_parent->tgid : 0,		pid_alive(p) && p->ptrace ? p->parent->pid : 0,		p->uid, p->euid, p->suid, p->fsuid,		p->gid, p->egid, p->sgid, p->fsgid);	read_unlock(&tasklist_lock);	task_lock(p);	rcu_read_lock();	if (p->files)		fdt = files_fdtable(p->files);	buffer += sprintf(buffer,		"FDSize:/t%d/n"		"Groups:/t",		fdt ? fdt->max_fds : 0);	rcu_read_unlock();	group_info = p->group_info;	get_group_info(group_info);	task_unlock(p);	for (g = 0; g < min(group_info->ngroups,NGROUPS_SMALL); g++)		buffer += sprintf(buffer, "%d ", GROUP_AT(group_info,g));	put_group_info(group_info);	buffer += sprintf(buffer, "/n");	return buffer;}
开发者ID:liucx6312,项目名称:supermicro_ipmi_firmware,代码行数:45,


示例17: task_state

static inline void task_state(struct seq_file *m, struct pid *pid,				struct task_struct *p){	struct group_info *group_info;	int g;	struct fdtable *fdt = NULL;	rcu_read_lock();	seq_printf(m,		"State:/t%s/n"		"SleepAVG:/t%lu%%/n"		"Tgid:/t%d/n"		"Pid:/t%d/n"		"PPid:/t%d/n"		"TracerPid:/t%d/n"		"Uid:/t%d/t%d/t%d/t%d/n"		"Gid:/t%d/t%d/t%d/t%d/n",		get_task_state(p),		(p->sleep_avg/1024)*100/(1020000000/1024),	       	p->tgid, p->pid,	       	pid_alive(p) ? rcu_dereference(p->real_parent)->tgid : 0,		pid_alive(p) && p->ptrace ? rcu_dereference(p->parent)->pid : 0,		p->uid, p->euid, p->suid, p->fsuid,		p->gid, p->egid, p->sgid, p->fsgid);	task_lock(p);	if (p->files)		fdt = files_fdtable(p->files);	seq_printf(m,		"FDSize:/t%d/n"		"Groups:/t",		fdt ? fdt->max_fds : 0);	rcu_read_unlock();	group_info = p->group_info;	get_group_info(group_info);	task_unlock(p);	for (g = 0; g < min(group_info->ngroups, NGROUPS_SMALL); g++)		seq_printf(m, "%d ", GROUP_AT(group_info, g));	put_group_info(group_info);	seq_printf(m, "/n");}
开发者ID:Mr-Aloof,项目名称:wl500g,代码行数:44,


示例18: unx_match

/* * Match credentials against current process creds. * The root_override argument takes care of cases where the caller may * request root creds (e.g. for NFS swapping). */static intunx_match(struct auth_cred *acred, struct rpc_cred *rcred, int flags){	struct unx_cred	*cred = container_of(rcred, struct unx_cred, uc_base);	unsigned int groups = 0;	unsigned int i;	if (cred->uc_uid != acred->uid || cred->uc_gid != acred->gid)		return 0;	if (acred->group_info != NULL)		groups = acred->group_info->ngroups;	if (groups > NFS_NGROUPS)		groups = NFS_NGROUPS;	for (i = 0; i < groups ; i++)		if (cred->uc_gids[i] != GROUP_AT(acred->group_info, i))			return 0;	return 1;}
开发者ID:3sOx,项目名称:asuswrt-merlin,代码行数:25,


示例19: groups_search

/* a simple bsearch */int groups_search(struct group_info *group_info, gid_t grp){	unsigned int left, right;	if (!group_info)		return 0;	left = 0;	right = group_info->ngroups;	while (left < right) {		unsigned int mid = (left+right)/2;		int cmp = grp - GROUP_AT(group_info, mid);		if (cmp > 0)			left = mid + 1;		else if (cmp < 0)			right = mid;		else			return 1;	}	return 0;}
开发者ID:maraz,项目名称:linux-2.6,代码行数:22,


示例20: groups_from_user

/* fill a group_info from a user-space array - it must be allocated already */static int groups_from_user(struct group_info *group_info,    gid_t __user *grouplist){	struct user_namespace *user_ns = current_user_ns();	int i;	unsigned int count = group_info->ngroups;	for (i = 0; i < count; i++) {		gid_t gid;		kgid_t kgid;		if (get_user(gid, grouplist+i))			return -EFAULT;		kgid = make_kgid(user_ns, gid);		if (!gid_valid(kgid))			return -EINVAL;		GROUP_AT(group_info, i) = kgid;	}	return 0;}
开发者ID:020gzh,项目名称:linux,代码行数:22,


示例21: unx_match

/* * Match credentials against current process creds. * The root_override argument takes care of cases where the caller may * request root creds (e.g. for NFS swapping). */static intunx_match(struct auth_cred *acred, struct rpc_cred *rcred, int flags){	struct unx_cred	*cred = container_of(rcred, struct unx_cred, uc_base);	unsigned int groups = 0;	unsigned int i;	if (!uid_eq(cred->uc_uid, acred->uid) || !gid_eq(cred->uc_gid, acred->gid))		return 0;	if (acred->group_info != NULL)		groups = acred->group_info->ngroups;	if (groups > NFS_NGROUPS)		groups = NFS_NGROUPS;	for (i = 0; i < groups ; i++)		if (!gid_eq(cred->uc_gids[i], GROUP_AT(acred->group_info, i)))			return 0;	if (groups < NFS_NGROUPS && gid_valid(cred->uc_gids[groups]))		return 0;	return 1;}
开发者ID:AK101111,项目名称:linux,代码行数:27,


示例22: task_state

static inline void task_state(struct seq_file *m, struct pid_namespace *ns,				struct pid *pid, struct task_struct *p){	struct user_namespace *user_ns = seq_user_ns(m);	struct group_info *group_info;	int g;	struct task_struct *tracer;	const struct cred *cred;	pid_t ppid, tpid = 0, tgid, ngid;	unsigned int max_fds = 0;	rcu_read_lock();	ppid = pid_alive(p) ?		task_tgid_nr_ns(rcu_dereference(p->real_parent), ns) : 0;	tracer = ptrace_parent(p);	if (tracer)		tpid = task_pid_nr_ns(tracer, ns);	tgid = task_tgid_nr_ns(p, ns);	ngid = task_numa_group_id(p);	cred = get_task_cred(p);	task_lock(p);	if (p->files)		max_fds = files_fdtable(p->files)->max_fds;	task_unlock(p);	rcu_read_unlock();	seq_printf(m,		"State:/t%s/n"		"Tgid:/t%d/n"		"Ngid:/t%d/n"		"Pid:/t%d/n"		"PPid:/t%d/n"		"TracerPid:/t%d/n"		"Uid:/t%d/t%d/t%d/t%d/n"		"Gid:/t%d/t%d/t%d/t%d/n"		"FDSize:/t%d/nGroups:/t",		get_task_state(p),		tgid, ngid, pid_nr_ns(pid, ns), ppid, tpid,		from_kuid_munged(user_ns, cred->uid),		from_kuid_munged(user_ns, cred->euid),		from_kuid_munged(user_ns, cred->suid),		from_kuid_munged(user_ns, cred->fsuid),		from_kgid_munged(user_ns, cred->gid),		from_kgid_munged(user_ns, cred->egid),		from_kgid_munged(user_ns, cred->sgid),		from_kgid_munged(user_ns, cred->fsgid),		max_fds);	group_info = cred->group_info;	for (g = 0; g < group_info->ngroups; g++)		seq_printf(m, "%d ",			   from_kgid_munged(user_ns, GROUP_AT(group_info, g)));	put_cred(cred);#ifdef CONFIG_PID_NS	seq_puts(m, "/nNStgid:");	for (g = ns->level; g <= pid->level; g++)		seq_printf(m, "/t%d",			task_tgid_nr_ns(p, pid->numbers[g].ns));	seq_puts(m, "/nNSpid:");	for (g = ns->level; g <= pid->level; g++)		seq_printf(m, "/t%d",			task_pid_nr_ns(p, pid->numbers[g].ns));	seq_puts(m, "/nNSpgid:");	for (g = ns->level; g <= pid->level; g++)		seq_printf(m, "/t%d",			task_pgrp_nr_ns(p, pid->numbers[g].ns));	seq_puts(m, "/nNSsid:");	for (g = ns->level; g <= pid->level; g++)		seq_printf(m, "/t%d",			task_session_nr_ns(p, pid->numbers[g].ns));#endif	seq_putc(m, '/n');}
开发者ID:020gzh,项目名称:linux,代码行数:77,


示例23: nfsd_setuser

int nfsd_setuser(struct svc_rqst *rqstp, struct svc_export *exp){	struct svc_cred	cred = rqstp->rq_cred;	int i;	int flags = nfsexp_flags(rqstp, exp);	int ret;	if (flags & NFSEXP_ALLSQUASH) {		cred.cr_uid = exp->ex_anon_uid;		cred.cr_gid = exp->ex_anon_gid;		cred.cr_group_info = groups_alloc(0);	} else if (flags & NFSEXP_ROOTSQUASH) {		struct group_info *gi;		if (!cred.cr_uid)			cred.cr_uid = exp->ex_anon_uid;		if (!cred.cr_gid)			cred.cr_gid = exp->ex_anon_gid;		gi = groups_alloc(cred.cr_group_info->ngroups);		if (gi)			for (i = 0; i < cred.cr_group_info->ngroups; i++) {				if (!GROUP_AT(cred.cr_group_info, i))					GROUP_AT(gi, i) = exp->ex_anon_gid;				else					GROUP_AT(gi, i) = GROUP_AT(cred.cr_group_info, i);			}		cred.cr_group_info = gi;	} else		get_group_info(cred.cr_group_info);	if (cred.cr_uid != (uid_t) -1)		current->fsuid = cred.cr_uid;	else		current->fsuid = exp->ex_anon_uid;	if (cred.cr_gid != (gid_t) -1)		current->fsgid = cred.cr_gid;	else		current->fsgid = exp->ex_anon_gid;	if (!cred.cr_group_info)		return -ENOMEM;	ret = set_current_groups(cred.cr_group_info);	put_group_info(cred.cr_group_info);	if ((cred.cr_uid)) {		current->cap_effective =			cap_drop_nfsd_set(current->cap_effective);	} else {		current->cap_effective =			cap_raise_nfsd_set(current->cap_effective,					   current->cap_permitted);	}	return ret;}
开发者ID:LouZiffer,项目名称:m900_kernel_cupcake-SDX,代码行数:52,



注:本文中的GROUP_AT函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ GROUP_FILTER_SIZE函数代码示例
C++ GRN_TEXT_VALUE函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。