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

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

51自学网 2021-06-03 08:48:50
  C++
这篇教程C++ thread_group_leader函数代码示例写得很实用,希望能帮到您。

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

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

示例1: ERR_PTR

//.........这里部分代码省略.........	}	/* CLONE_PARENT re-uses the old parent */	if (clone_flags & CLONE_PARENT)		p->real_parent = current->real_parent;	else		p->real_parent = current;	p->parent = p->real_parent;	if (clone_flags & CLONE_THREAD) {		spin_lock(&current->sighand->siglock);		/*		 * Important: if an exit-all has been started then		 * do not create this new thread - the whole thread		 * group is supposed to exit anyway.		 */		if (current->signal->group_exit) {			spin_unlock(&current->sighand->siglock);			write_unlock_irq(&tasklist_lock);			retval = -EAGAIN;			goto bad_fork_cleanup_namespace;		}		p->tgid = current->tgid;		p->group_leader = current->group_leader;		if (current->signal->group_stop_count > 0) {			/*			 * There is an all-stop in progress for the group.			 * We ourselves will stop as soon as we check signals.			 * Make the new thread part of that group stop too.			 */			current->signal->group_stop_count++;			set_tsk_thread_flag(p, TIF_SIGPENDING);		}		spin_unlock(&current->sighand->siglock);	}	SET_LINKS(p);	if (p->ptrace & PT_PTRACED)		__ptrace_link(p, current->parent);	attach_pid(p, PIDTYPE_PID, p->pid);	if (thread_group_leader(p)) {		attach_pid(p, PIDTYPE_TGID, p->tgid);		attach_pid(p, PIDTYPE_PGID, process_group(p));		attach_pid(p, PIDTYPE_SID, p->signal->session);		if (p->pid)			__get_cpu_var(process_counts)++;	} else		link_pid(p, p->pids + PIDTYPE_TGID, &p->group_leader->pids[PIDTYPE_TGID].pid);	nr_threads++;	write_unlock_irq(&tasklist_lock);	retval = 0;fork_out:	if (retval)		return ERR_PTR(retval);	return p;bad_fork_cleanup_namespace:	exit_namespace(p);bad_fork_cleanup_mm:	exit_mm(p);	if (p->active_mm)		mmdrop(p->active_mm);bad_fork_cleanup_signal:	exit_signal(p);bad_fork_cleanup_sighand:	exit_sighand(p);bad_fork_cleanup_fs:	exit_fs(p); /* blocking */bad_fork_cleanup_files:	exit_files(p); /* blocking */bad_fork_cleanup_semundo:	exit_sem(p);bad_fork_cleanup_audit:	audit_free(p);bad_fork_cleanup_security:	security_task_free(p);bad_fork_cleanup_policy:#ifdef CONFIG_NUMA	mpol_free(p->mempolicy);#endifbad_fork_cleanup:	if (p->pid > 0)		free_pidmap(p->pid);	if (p->binfmt)		module_put(p->binfmt->module);bad_fork_cleanup_put_domain:	module_put(p->thread_info->exec_domain->module);bad_fork_cleanup_count:	put_group_info(p->group_info);	atomic_dec(&p->user->processes);	free_uid(p->user);bad_fork_free:	free_task(p);	goto fork_out;}
开发者ID:iPodLinux,项目名称:linux-2.6.7-ipod,代码行数:101,


示例2: sys_setpgid

asmlinkage long sys_setpgid(pid_t pid, pid_t pgid){	struct task_struct *p;	int err = -EINVAL;	if (!pid)		pid = current->pid;	if (!pgid)		pgid = pid;	if (pgid < 0)		return -EINVAL;	/* From this point forward we keep holding onto the tasklist lock	 * so that our parent does not change from under us. -DaveM	 */	write_lock_irq(&tasklist_lock);	err = -ESRCH;	p = find_task_by_pid(pid);	if (!p)		goto out;	err = -EINVAL;	if (!thread_group_leader(p))		goto out;	if (p->parent == current || p->real_parent == current) {		err = -EPERM;		if (p->signal->session != current->signal->session)			goto out;		err = -EACCES;		if (p->did_exec)			goto out;	} else {		err = -ESRCH;		if (p != current)			goto out;	}	err = -EPERM;	if (p->signal->leader)		goto out;	if (pgid != pid) {		struct task_struct *p;		do_each_task_pid(pgid, PIDTYPE_PGID, p) {			if (p->signal->session == current->signal->session)				goto ok_pgid;		} while_each_task_pid(pgid, PIDTYPE_PGID, p);		goto out;	}ok_pgid:	err = security_task_setpgid(p, pgid);	if (err)		goto out;	if (process_group(p) != pgid) {		detach_pid(p, PIDTYPE_PGID);		p->signal->pgrp = pgid;		attach_pid(p, PIDTYPE_PGID, pgid);	}	err = 0;out:	/* All paths lead to here, thus we are safe. -DaveM */	write_unlock_irq(&tasklist_lock);	return err;}
开发者ID:Antonio-Zhou,项目名称:Linux-2.6.11,代码行数:70,


示例3: ERR_PTR

//.........这里部分代码省略.........		write_lock_irq(&tasklist_lock);		if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) {		p->real_parent = current->real_parent;		p->parent_exec_id = current->parent_exec_id;	} else {		p->real_parent = current;		p->parent_exec_id = current->self_exec_id;	}	spin_lock(&current->sighand->siglock);	recalc_sigpending();	if (signal_pending(current)) {		spin_unlock(&current->sighand->siglock);		write_unlock_irq(&tasklist_lock);		retval = -ERESTARTNOINTR;		goto bad_fork_free_pid;	}	if (clone_flags & CLONE_THREAD) {		current->signal->nr_threads++;		atomic_inc(&current->signal->live);		atomic_inc(&current->signal->sigcnt);		p->group_leader = current->group_leader;		list_add_tail_rcu(&p->thread_group, &p->group_leader->thread_group);	}	if (likely(p->pid)) {		ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace);		if (thread_group_leader(p)) {			if (is_child_reaper(pid))				p->nsproxy->pid_ns->child_reaper = p;			p->signal->leader_pid = pid;			p->signal->tty = tty_kref_get(current->signal->tty);			attach_pid(p, PIDTYPE_PGID, task_pgrp(current));			attach_pid(p, PIDTYPE_SID, task_session(current));			list_add_tail(&p->sibling, &p->real_parent->children);			list_add_tail_rcu(&p->tasks, &init_task.tasks);			__this_cpu_inc(process_counts);		}		attach_pid(p, PIDTYPE_PID, pid);		nr_threads++;	}	total_forks++;	spin_unlock(&current->sighand->siglock);	write_unlock_irq(&tasklist_lock);	proc_fork_connector(p);	cgroup_post_fork(p);	if (clone_flags & CLONE_THREAD)		threadgroup_change_end(current);	perf_event_fork(p);	trace_task_newtask(p, clone_flags);	return p;bad_fork_free_pid:	if (pid != &init_struct_pid)		free_pid(pid);bad_fork_cleanup_io:
开发者ID:MiniBlu,项目名称:cm11_kernel_htc_msm8974a3ul,代码行数:67,


示例4: ERR_PTR

//.........这里部分代码省略.........		 */		if (current->signal->flags & SIGNAL_GROUP_EXIT) {			spin_unlock(&current->sighand->siglock);			write_unlock_irq(&tasklist_lock);			retval = -EAGAIN;			goto bad_fork_cleanup_namespace;		}		p->group_leader = current->group_leader;		if (current->signal->group_stop_count > 0) {			/*			 * There is an all-stop in progress for the group.			 * We ourselves will stop as soon as we check signals.			 * Make the new thread part of that group stop too.			 */			current->signal->group_stop_count++;			set_tsk_thread_flag(p, TIF_SIGPENDING);		}		if (!cputime_eq(current->signal->it_virt_expires,				cputime_zero) ||		    !cputime_eq(current->signal->it_prof_expires,				cputime_zero) ||		    current->signal->rlim[RLIMIT_CPU].rlim_cur != RLIM_INFINITY ||		    !list_empty(&current->signal->cpu_timers[0]) ||		    !list_empty(&current->signal->cpu_timers[1]) ||		    !list_empty(&current->signal->cpu_timers[2])) {			/*			 * Have child wake up on its first tick to check			 * for process CPU timers.			 */			p->it_prof_expires = jiffies_to_cputime(1);		}		spin_unlock(&current->sighand->siglock);	}	SET_LINKS(p);	if (unlikely(p->ptrace & PT_PTRACED))		__ptrace_link(p, current->parent);	cpuset_fork(p);	attach_pid(p, PIDTYPE_PID, p->pid);	attach_pid(p, PIDTYPE_TGID, p->tgid);	if (thread_group_leader(p)) {		attach_pid(p, PIDTYPE_PGID, process_group(p));		attach_pid(p, PIDTYPE_SID, p->signal->session);		if (p->pid)			__get_cpu_var(process_counts)++;	}	nr_threads++;	total_forks++;	write_unlock_irq(&tasklist_lock);	retval = 0;fork_out:	if (retval)		return ERR_PTR(retval);	return p;bad_fork_cleanup_namespace:	exit_namespace(p);bad_fork_cleanup_keys:	exit_keys(p);bad_fork_cleanup_mm:	if (p->mm)		mmput(p->mm);bad_fork_cleanup_signal:	exit_signal(p);bad_fork_cleanup_sighand:	exit_sighand(p);bad_fork_cleanup_fs:	exit_fs(p); /* blocking */bad_fork_cleanup_files:	exit_files(p); /* blocking */bad_fork_cleanup_semundo:	exit_sem(p);bad_fork_cleanup_audit:	audit_free(p);bad_fork_cleanup_security:	security_task_free(p);bad_fork_cleanup_policy:#ifdef CONFIG_NUMA	mpol_free(p->mempolicy);#endifbad_fork_cleanup:	if (p->binfmt)		module_put(p->binfmt->module);bad_fork_cleanup_put_domain:	module_put(p->thread_info->exec_domain->module);bad_fork_cleanup_count:	put_group_info(p->group_info);	atomic_dec(&p->user->processes);	free_uid(p->user);bad_fork_free:	free_task(p);	goto fork_out;}
开发者ID:Pating,项目名称:linux-2.6.12-rc2,代码行数:101,



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


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