summaryrefslogtreecommitdiff
path: root/components/lwp/lwp_setsid.c
blob: d72363bde56a4e8d6c15e2658b7c33ac890c5ada (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <rthw.h>
#include <rtthread.h>

#include "lwp.h"
//#include "lwp_tid.h"
#include "lwp_pid.h"

int setsid(void)
{
    int err = -EPERM;
    struct rt_thread *current_thread = rt_thread_self();
    struct rt_lwp *current_lwp = (struct rt_lwp *)rt_thread_self()->lwp;

    if (current_lwp->session == current_thread->tid)
    {
        return err;
    }

    current_lwp->session = current_thread->tid;
    current_lwp->__pgrp = current_thread->tid;
    current_lwp->leader = 1;
    current_lwp->tty = RT_NULL;
    current_lwp->tty_old_pgrp = 0;

    err = current_lwp->session;
    return err;
}