blob: 282bd25e19ef4bf157bb6953c173a7e2bc8a0d9d [file] [log] [blame]
Paolo 'Blaisorblade' Giarrussoaa6758d2006-03-31 02:30:22 -08001#include <errno.h>
Jeff Dike1f6f6162006-11-02 22:07:23 -08002#include <unistd.h>
Paolo 'Blaisorblade' Giarrussoaa6758d2006-03-31 02:30:22 -08003#include <sys/ptrace.h>
Arnd Bergmann5f4c6bc2006-10-02 02:18:37 -07004#include <sys/syscall.h>
Paolo 'Blaisorblade' Giarrussoaa6758d2006-03-31 02:30:22 -08005#include <asm/ldt.h>
Paolo 'Blaisorblade' Giarrussodd77aec2006-03-31 02:30:23 -08006#include "sysdep/tls.h"
Paolo 'Blaisorblade' Giarrussoaa6758d2006-03-31 02:30:22 -08007#include "uml-config.h"
8
9/* TLS support - we basically rely on the host's one.*/
10
Paolo 'Blaisorblade' Giarrussoaa6758d2006-03-31 02:30:22 -080011#ifndef PTRACE_GET_THREAD_AREA
12#define PTRACE_GET_THREAD_AREA 25
13#endif
14
15#ifndef PTRACE_SET_THREAD_AREA
16#define PTRACE_SET_THREAD_AREA 26
17#endif
18
Paolo 'Blaisorblade' Giarrussodd77aec2006-03-31 02:30:23 -080019int os_set_thread_area(user_desc_t *info, int pid)
Paolo 'Blaisorblade' Giarrussoaa6758d2006-03-31 02:30:22 -080020{
Paolo 'Blaisorblade' Giarrussoaa6758d2006-03-31 02:30:22 -080021 int ret;
22
23 ret = ptrace(PTRACE_SET_THREAD_AREA, pid, info->entry_number,
24 (unsigned long) info);
25 if (ret < 0)
26 ret = -errno;
27 return ret;
28}
29
Paolo 'Blaisorblade' Giarrussodd77aec2006-03-31 02:30:23 -080030int os_get_thread_area(user_desc_t *info, int pid)
Paolo 'Blaisorblade' Giarrussoaa6758d2006-03-31 02:30:22 -080031{
Paolo 'Blaisorblade' Giarrussoaa6758d2006-03-31 02:30:22 -080032 int ret;
33
34 ret = ptrace(PTRACE_GET_THREAD_AREA, pid, info->entry_number,
35 (unsigned long) info);
36 if (ret < 0)
37 ret = -errno;
38 return ret;
39}