Exemplo n.º 1
0
asmlinkage long sys_setsid(void)
{
	struct task_struct *group_leader = current->group_leader;
	pid_t session;
	int err = -EPERM;

	mutex_lock(&tty_mutex);
	write_lock_irq(&tasklist_lock);

	/* Fail if I am already a session leader */
	if (group_leader->signal->leader)
		goto out;

	session = group_leader->pid;
	/* Fail if a process group id already exists that equals the
	 * proposed session id.
	 *
	 * Don't check if session id == 1 because kernel threads use this
	 * session id and so the check will always fail and make it so
	 * init cannot successfully call setsid.
	 */
	if (session > 1 && find_task_by_pid_type(PIDTYPE_PGID, session))
		goto out;

	group_leader->signal->leader = 1;
	__set_special_pids(session, session);
	group_leader->signal->tty = NULL;
	group_leader->signal->tty_old_pgrp = 0;
	err = process_group(group_leader);
out:
	write_unlock_irq(&tasklist_lock);
	mutex_unlock(&tty_mutex);
	return err;
}
Exemplo n.º 2
0
static int __init ddump_mt_init(void)
{
	//int	ret;
	//int	index;

	ddump_nr_cpus = num_online_cpus();
	printk("James: cpu # is %d\n", ddump_nr_cpus);
	ddump_current_cpu = smp_processor_id();
	printk("James: current_cpu # is %d\n", ddump_current_cpu);
	printk("James: end_pfn is %lu, mem size is %lu\n", end_pfn, end_pfn * 4096);

	// init
	atomic64_set(&app_zero_pages, 0);
	atomic64_set(&app_non_zero_pages, 0);
	atomic64_set(&app_other_pages, 0);

	// create helper
	ddump_percpu_thread_create();

	// set up the target
	if (target_pid == -1) {
		printk("No pid addigned\n");
		return -1;
	}

	ddump_tp = find_task_by_pid_type(PIDTYPE_PID, target_pid);
	printk("James: panic_thread is %p, pid %d\n", ddump_tp, ddump_tp->pid);

	run_master_thread();

	return 0;
}
Exemplo n.º 3
0
struct task_struct *find_task_by_pid(int nr)
{
	return find_task_by_pid_type(0, nr);
}
Exemplo n.º 4
0
struct task_struct *find_task_by_pid_ns(int nr, struct pid_namespace *ns)
{
    /* we don't implement PID name spaces */
    return find_task_by_pid_type(0, nr);
}