815 (sizeof (mutex_t) + sizeof (void *) + sizeof (size_t))];
816 } bucket_t;
817
818 #ifdef _SYSCALL32
819 typedef struct {
820 mutex_t bucket_lock;
821 caddr32_t free_list;
822 size32_t chunks;
823 char pad64[64 - /* pad out to 64 bytes */
824 (sizeof (mutex_t) + sizeof (caddr32_t) + sizeof (size32_t))];
825 } bucket32_t;
826 #endif /* _SYSCALL32 */
827
828 #define NBUCKETS 10 /* sizes ranging from 64 to 32768 */
829
830
831 /*
832 * atexit() data structures.
833 * See port/gen/atexit.c for details.
834 */
835 typedef void (*_exithdlr_func_t) (void);
836
837 typedef struct _exthdlr {
838 struct _exthdlr *next; /* next in handler list */
839 _exithdlr_func_t hdlr; /* handler itself */
840 } _exthdlr_t;
841
842 typedef struct {
843 mutex_t exitfns_lock;
844 _exthdlr_t *head;
845 void *exit_frame_monitor;
846 char exit_pad[64 - /* pad out to 64 bytes */
847 (sizeof (mutex_t) + sizeof (_exthdlr_t *) + sizeof (void *))];
848 } atexit_root_t;
849
850 #ifdef _SYSCALL32
851 typedef struct {
852 mutex_t exitfns_lock;
853 caddr32_t head;
854 caddr32_t exit_frame_monitor;
855 char exit_pad[64 - /* pad out to 64 bytes */
856 (sizeof (mutex_t) + sizeof (caddr32_t) + sizeof (caddr32_t))];
857 } atexit_root32_t;
858 #endif /* _SYSCALL32 */
859
860
861 /*
862 * This is data that is global to all link maps (uberdata, aka super-global).
863 * Note: When changing this, please be sure to keep the 32-bit variant of
864 * this in sync. (see uberdata32_t below)
|
815 (sizeof (mutex_t) + sizeof (void *) + sizeof (size_t))];
816 } bucket_t;
817
818 #ifdef _SYSCALL32
819 typedef struct {
820 mutex_t bucket_lock;
821 caddr32_t free_list;
822 size32_t chunks;
823 char pad64[64 - /* pad out to 64 bytes */
824 (sizeof (mutex_t) + sizeof (caddr32_t) + sizeof (size32_t))];
825 } bucket32_t;
826 #endif /* _SYSCALL32 */
827
828 #define NBUCKETS 10 /* sizes ranging from 64 to 32768 */
829
830
831 /*
832 * atexit() data structures.
833 * See port/gen/atexit.c for details.
834 */
835 typedef void (*_exithdlr_func_t) (void*);
836
837 typedef struct _exthdlr {
838 struct _exthdlr *next; /* next in handler list */
839 _exithdlr_func_t hdlr; /* handler itself */
840 void *arg; /* argument to handler */
841 void *dso; /* DSO associated with handler */
842 } _exthdlr_t;
843
844 typedef struct {
845 mutex_t exitfns_lock;
846 _exthdlr_t *head;
847 /*
848 * exit_frame_monitor is part of a private contract between libc and
849 * the Sun C++ runtime.
850 *
851 * It should be NULL until exit() is called, and thereafter hold the
852 * frame pointer of the function implementing our exit processing.
853 */
854 void *exit_frame_monitor;
855 char exit_pad[64 - /* pad out to 64 bytes */
856 (sizeof (mutex_t) + sizeof (_exthdlr_t *) + sizeof (void *))];
857 } atexit_root_t;
858
859 #ifdef _SYSCALL32
860 typedef struct {
861 mutex_t exitfns_lock;
862 caddr32_t head;
863 caddr32_t exit_frame_monitor;
864 char exit_pad[64 - /* pad out to 64 bytes */
865 (sizeof (mutex_t) + sizeof (caddr32_t) + sizeof (caddr32_t))];
866 } atexit_root32_t;
867 #endif /* _SYSCALL32 */
868
869
870 /*
871 * This is data that is global to all link maps (uberdata, aka super-global).
872 * Note: When changing this, please be sure to keep the 32-bit variant of
873 * this in sync. (see uberdata32_t below)
|