1 /* 2 * Thread attributes functions 3 * 4 * Copyright (C) 2012-2020, Joachim Metz <joachim.metz@gmail.com> 5 * 6 * Refer to AUTHORS for acknowledgements. 7 * 8 * This program is free software: you can redistribute it and/or modify 9 * it under the terms of the GNU Lesser General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with this program. If not, see <https://www.gnu.org/licenses/>. 20 */ 21 22 #if !defined( _LIBCTHREADS_THREAD_ATTRIBUTES_H ) 23 #define _LIBCTHREADS_THREAD_ATTRIBUTES_H 24 25 #include <common.h> 26 #include <types.h> 27 28 #if defined( HAVE_PTHREAD_H ) && !defined( WINAPI ) 29 #include <pthread.h> 30 #endif 31 32 #include "libcthreads_extern.h" 33 #include "libcthreads_libcerror.h" 34 #include "libcthreads_types.h" 35 36 #if defined( __cplusplus ) 37 extern "C" { 38 #endif 39 40 #if !defined( HAVE_LOCAL_LIBCTHREADS ) || defined( HAVE_MULTI_THREAD_SUPPORT ) 41 42 typedef struct libcthreads_internal_thread_attributes libcthreads_internal_thread_attributes_t; 43 44 struct libcthreads_internal_thread_attributes 45 { 46 #if defined( WINAPI ) 47 /* The security attributes 48 */ 49 SECURITY_ATTRIBUTES security_attributes; 50 51 #elif defined( HAVE_PTHREAD_H ) 52 /* The attributes 53 */ 54 pthread_attr_t attributes; 55 56 #else 57 #error Missing thread attributes type 58 #endif 59 }; 60 61 LIBCTHREADS_EXTERN \ 62 int libcthreads_thread_attributes_initialize( 63 libcthreads_thread_attributes_t **thread_attributes, 64 libcerror_error_t **error ); 65 66 LIBCTHREADS_EXTERN \ 67 int libcthreads_thread_attributes_free( 68 libcthreads_thread_attributes_t **thread_attributes, 69 libcerror_error_t **error ); 70 71 #endif /* !defined( HAVE_LOCAL_LIBCTHREADS ) || defined( HAVE_MULTI_THREAD_SUPPORT ) */ 72 73 #if defined( __cplusplus ) 74 } 75 #endif 76 77 #endif /* !defined( _LIBCTHREADS_THREAD_ATTRIBUTES_H ) */ 78 79