Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 24871
b: refs/heads/master
c: dd77aec
h: refs/heads/master
i:
  24869: 279b88c
  24867: 7a1b38c
  24863: bbfb9e3
v: v3
  • Loading branch information
Paolo 'Blaisorblade' Giarrusso authored and Linus Torvalds committed Mar 31, 2006
1 parent 29cab3a commit dcc381c
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: aa6758d4867cd07bd76105ade6177fe6148e559a
refs/heads/master: dd77aec07aec5cb81aed3b4ef79c1ff8bd0e2a68
7 changes: 4 additions & 3 deletions trunk/arch/um/include/os.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "kern_util.h"
#include "skas/mm_id.h"
#include "irq_user.h"
#include "sysdep/tls.h"

#define OS_TYPE_FILE 1
#define OS_TYPE_DIR 2
Expand Down Expand Up @@ -238,10 +239,10 @@ extern int helper_wait(int pid);


/* tls.c */
extern int os_set_thread_area(void *data, int pid);
extern int os_get_thread_area(void *data, int pid);
/* umid.c */
extern int os_set_thread_area(user_desc_t *info, int pid);
extern int os_get_thread_area(user_desc_t *info, int pid);

/* umid.c */
extern int umid_file_name(char *name, char *buf, int len);
extern int set_umid(char *name);
extern char *get_umid(void);
Expand Down
28 changes: 28 additions & 0 deletions trunk/arch/um/include/sysdep-i386/tls.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#ifndef _SYSDEP_TLS_H
#define _SYSDEP_TLS_H

# ifndef __KERNEL__

/* Change name to avoid conflicts with the original one from <asm/ldt.h>, which
* may be named user_desc (but in 2.4 and in header matching its API was named
* modify_ldt_ldt_s). */

typedef struct um_dup_user_desc {
unsigned int entry_number;
unsigned int base_addr;
unsigned int limit;
unsigned int seg_32bit:1;
unsigned int contents:2;
unsigned int read_exec_only:1;
unsigned int limit_in_pages:1;
unsigned int seg_not_present:1;
unsigned int useable:1;
} user_desc_t;

# else /* __KERNEL__ */

# include <asm/ldt.h>
typedef struct user_desc user_desc_t;

# endif /* __KERNEL__ */
#endif /* _SYSDEP_TLS_H */
29 changes: 29 additions & 0 deletions trunk/arch/um/include/sysdep-x86_64/tls.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#ifndef _SYSDEP_TLS_H
#define _SYSDEP_TLS_H

# ifndef __KERNEL__

/* Change name to avoid conflicts with the original one from <asm/ldt.h>, which
* may be named user_desc (but in 2.4 and in header matching its API was named
* modify_ldt_ldt_s). */

typedef struct um_dup_user_desc {
unsigned int entry_number;
unsigned int base_addr;
unsigned int limit;
unsigned int seg_32bit:1;
unsigned int contents:2;
unsigned int read_exec_only:1;
unsigned int limit_in_pages:1;
unsigned int seg_not_present:1;
unsigned int useable:1;
unsigned int lm:1;
} user_desc_t;

# else /* __KERNEL__ */

# include <asm/ldt.h>
typedef struct user_desc user_desc_t;

# endif /* __KERNEL__ */
#endif /* _SYSDEP_TLS_H */
15 changes: 7 additions & 8 deletions trunk/arch/um/os-Linux/tls.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include <errno.h>
#include <sys/ptrace.h>
#include <asm/ldt.h>
#include "sysdep/tls.h"
#include "uml-config.h"

/* TLS support - we basically rely on the host's one.*/
Expand All @@ -18,9 +19,8 @@
#define PTRACE_SET_THREAD_AREA 26
#endif

int os_set_thread_area(void *data, int pid)
int os_set_thread_area(user_desc_t *info, int pid)
{
struct user_desc *info = data;
int ret;

ret = ptrace(PTRACE_SET_THREAD_AREA, pid, info->entry_number,
Expand All @@ -32,9 +32,8 @@ int os_set_thread_area(void *data, int pid)

#ifdef UML_CONFIG_MODE_SKAS

int os_get_thread_area(void *data, int pid)
int os_get_thread_area(user_desc_t *info, int pid)
{
struct user_desc *info = data;
int ret;

ret = ptrace(PTRACE_GET_THREAD_AREA, pid, info->entry_number,
Expand All @@ -49,10 +48,10 @@ int os_get_thread_area(void *data, int pid)
#ifdef UML_CONFIG_MODE_TT
#include "linux/unistd.h"

_syscall1(int, get_thread_area, struct user_desc *, u_info);
_syscall1(int, set_thread_area, struct user_desc *, u_info);
_syscall1(int, get_thread_area, user_desc_t *, u_info);
_syscall1(int, set_thread_area, user_desc_t *, u_info);

int do_set_thread_area_tt(struct user_desc *info)
int do_set_thread_area_tt(user_desc_t *info)
{
int ret;

Expand All @@ -63,7 +62,7 @@ int do_set_thread_area_tt(struct user_desc *info)
return ret;
}

int do_get_thread_area_tt(struct user_desc *info)
int do_get_thread_area_tt(user_desc_t *info)
{
int ret;

Expand Down

0 comments on commit dcc381c

Please sign in to comment.