21 * questions. 22 * 23 */ 24 25 #ifndef OS_LINUX_OS_LINUX_HPP 26 #define OS_LINUX_OS_LINUX_HPP 27 28 // Linux_OS defines the interface to Linux operating systems 29 30 // Information about the protection of the page at address '0' on this os. 31 static bool zero_page_read_protected() { return true; } 32 33 class Linux { 34 friend class os; 35 friend class OSContainer; 36 friend class TestReserveMemorySpecial; 37 38 static bool libjsig_is_loaded; // libjsig that interposes sigaction(), 39 // __sigaction(), signal() is loaded 40 static struct sigaction *(*get_signal_action)(int); 41 static struct sigaction *get_preinstalled_handler(int); 42 static void save_preinstalled_handler(int, struct sigaction&); 43 44 static void check_signal_handler(int sig); 45 46 static int (*_pthread_getcpuclockid)(pthread_t, clockid_t *); 47 static int (*_pthread_setname_np)(pthread_t, const char*); 48 49 static address _initial_thread_stack_bottom; 50 static uintptr_t _initial_thread_stack_size; 51 52 static const char *_glibc_version; 53 static const char *_libpthread_version; 54 55 static bool _supports_fast_thread_cpu_time; 56 57 static GrowableArray<int>* _cpu_to_node; 58 static GrowableArray<int>* _nindex_to_node; 59 60 // 0x00000000 = uninitialized, 61 // 0x01000000 = kernel version unknown, 62 // otherwise a 32-bit number: | 21 * questions. 22 * 23 */ 24 25 #ifndef OS_LINUX_OS_LINUX_HPP 26 #define OS_LINUX_OS_LINUX_HPP 27 28 // Linux_OS defines the interface to Linux operating systems 29 30 // Information about the protection of the page at address '0' on this os. 31 static bool zero_page_read_protected() { return true; } 32 33 class Linux { 34 friend class os; 35 friend class OSContainer; 36 friend class TestReserveMemorySpecial; 37 38 static bool libjsig_is_loaded; // libjsig that interposes sigaction(), 39 // __sigaction(), signal() is loaded 40 static struct sigaction *(*get_signal_action)(int); 41 42 static void check_signal_handler(int sig); 43 44 static int (*_pthread_getcpuclockid)(pthread_t, clockid_t *); 45 static int (*_pthread_setname_np)(pthread_t, const char*); 46 47 static address _initial_thread_stack_bottom; 48 static uintptr_t _initial_thread_stack_size; 49 50 static const char *_glibc_version; 51 static const char *_libpthread_version; 52 53 static bool _supports_fast_thread_cpu_time; 54 55 static GrowableArray<int>* _cpu_to_node; 56 static GrowableArray<int>* _nindex_to_node; 57 58 // 0x00000000 = uninitialized, 59 // 0x01000000 = kernel version unknown, 60 // otherwise a 32-bit number: |