I'm hacking pthreads to allow placing stacks anywhere in memory. For the thread specific data I'm using a segment register as suggest some months ago on this list. The mach functions i386_get_ldt() and i386_set_ldt() are used to modify the LDT. Should those i386-specific functions go into libmachuser or should they go somewhere else?
I'm proposing to change the members of struct descriptor used by i386_[gs]et_ldt() to allow easy modification of the contents. I got the member names from paragraph 3.4.3 "Segment Descriptors" of the "IA-32 Architecture Software Developer's Manual Volume 3." The size of the structure is the same and the members of the structure are nowhere used so this change shouldn't break anything AFAICS. 2001-12-23 Jeroen Dekkers <[EMAIL PROTECTED]> * i386/include/mach/i386/mach_i386_types.h (struct descriptor): Change the members to match the contents of the structure. Index: i386/include/mach/i386/mach_i386_types.h =================================================================== RCS file: /cvsroot/hurd/gnumach/i386/include/mach/i386/mach_i386_types.h,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 mach_i386_types.h --- i386/include/mach/i386/mach_i386_types.h 25 Feb 1997 21:27:00 -0000 1.1.1.1 +++ i386/include/mach/i386/mach_i386_types.h 23 Dec 2001 12:25:28 -0000 @@ -39,9 +39,20 @@ typedef device_t *device_list_t; * i386 segment descriptor. */ struct descriptor { - unsigned int low_word; - unsigned int high_word; -}; + unsigned limit_low:16; + unsigned base_low:16; + unsigned base_med:8; + unsigned type:4; + unsigned desc_type:1; + unsigned dpl:2; + unsigned present:1; + unsigned limit_high:4; + unsigned available:1; + unsigned reserved:1; + unsigned operationsize:1; + unsigned granularity:1; + unsigned base_high:8; +} __attribute__ ((packed)); typedef struct descriptor descriptor_t; typedef struct descriptor *descriptor_list_t; -- Jabber supporter - http://www.jabber.org Jabber ID: [EMAIL PROTECTED] Debian GNU supporter - http://www.debian.org http://www.gnu.org IRC: [EMAIL PROTECTED]
msg02470/pgp00000.pgp
Description: PGP signature