Changeset f5f2768
- Timestamp:
- Feb 16, 2023, 4:37:25 PM (21 months ago)
- Branches:
- ADT, ast-experimental, master
- Children:
- fbdfcd8
- Parents:
- 1c80f20
- git-author:
- Peter A. Buhr <pabuhr@…> (02/16/23 16:34:37)
- git-committer:
- Peter A. Buhr <pabuhr@…> (02/16/23 16:37:25)
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
driver/cfa.cc
r1c80f20 rf5f2768 10 10 // Created On : Tue Aug 20 13:44:49 2002 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jul 14 21:55:12 202113 // Update Count : 4 6712 // Last Modified On : Tue Feb 14 22:46:38 2023 13 // Update Count : 470 14 14 // 15 15 … … 444 444 445 445 args[nargs++] = "-fexceptions"; // add exception flags (unconditionally) 446 args[nargs++] = "-D_GNU_SOURCE"; // force gnu libraries 446 447 447 448 // add flags based on the type of compile -
libcfa/src/concurrency/clib/cfathread.cfa
r1c80f20 rf5f2768 16 16 // #define EPOLL_FOR_SOCKETS 17 17 18 #include <sys/socket.h> // first include because of anonymous types __SOCKADDR_ARG, __CONST_SOCKADDR_ARG 19 #include <string.h> 20 #include <errno.h> 21 18 22 #include "fstream.hfa" 19 23 #include "locks.hfa" … … 25 29 26 30 #include "cfathread.h" 27 28 extern "C" {29 #include <string.h>30 #include <errno.h>31 }32 31 33 32 extern void ?{}(processor &, const char[], cluster &, thread$ *); … … 471 470 } 472 471 472 #include <unistd.h> 473 473 474 #include <iofwd.hfa> 474 475 475 476 extern "C" { 476 #include <unistd.h>477 #include <sys/types.h>478 #include <sys/socket.h>479 480 477 //-------------------- 481 478 // IO operations … … 487 484 , protocol); 488 485 } 489 int cfathread_bind(int socket, const struct sockaddr *address, socklen_t address_len) {486 int cfathread_bind(int socket, __CONST_SOCKADDR_ARG address, socklen_t address_len) { 490 487 return bind(socket, address, address_len); 491 488 } … … 495 492 } 496 493 497 int cfathread_accept(int socket, struct sockaddr *restrictaddress, socklen_t *restrict address_len) {494 int cfathread_accept(int socket, __SOCKADDR_ARG address, socklen_t *restrict address_len) { 498 495 #if defined(EPOLL_FOR_SOCKETS) 499 496 int ret; … … 512 509 } 513 510 514 int cfathread_connect(int socket, const struct sockaddr *address, socklen_t address_len) {511 int cfathread_connect(int socket, __CONST_SOCKADDR_ARG address, socklen_t address_len) { 515 512 #if defined(EPOLL_FOR_SOCKETS) 516 513 int ret; -
libcfa/src/concurrency/clib/cfathread.h
r1c80f20 rf5f2768 9 9 // Author : Thierry Delisle 10 10 // Created On : Tue Sep 22 15:31:20 2020 11 // Last Modified By : 12 // Last Modified On : 13 // Update Count : 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 16 12:00:32 2023 13 // Update Count : 5 14 14 // 15 15 16 16 #if defined(__cforall) || defined(__cplusplus) 17 #include <sys/socket.h> // first include because of anonymous types __SOCKADDR_ARG, __CONST_SOCKADDR_ARG 18 #include <unistd.h> 19 #include <errno.h> 20 17 21 extern "C" { 18 22 #endif 19 #include <asm/types.h>20 #include <errno.h>21 #include <unistd.h>22 23 24 23 //-------------------- 25 24 // Basic types … … 73 72 } cfathread_mutexattr_t; 74 73 typedef struct cfathread_mutex * cfathread_mutex_t; 75 int cfathread_mutex_init(cfathread_mutex_t * restrict mut, const cfathread_mutexattr_t *restrict attr) __attribute__((nonnull (1)));74 int cfathread_mutex_init(cfathread_mutex_t * restrict mut, const cfathread_mutexattr_t * restrict attr) __attribute__((nonnull (1))); 76 75 int cfathread_mutex_destroy(cfathread_mutex_t *mut) __attribute__((nonnull (1))); 77 76 int cfathread_mutex_lock(cfathread_mutex_t *mut) __attribute__((nonnull (1))); … … 91 90 //-------------------- 92 91 // IO operations 93 struct sockaddr;94 struct msghdr;95 92 int cfathread_socket(int domain, int type, int protocol); 96 int cfathread_bind(int socket, const struct sockaddr *address, socklen_t address_len);93 int cfathread_bind(int socket, __CONST_SOCKADDR_ARG address, socklen_t address_len); 97 94 int cfathread_listen(int socket, int backlog); 98 int cfathread_accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len);99 int cfathread_connect(int socket, const struct sockaddr *address, socklen_t address_len);95 int cfathread_accept(int socket, __SOCKADDR_ARG address, socklen_t * restrict address_len); 96 int cfathread_connect(int socket, __CONST_SOCKADDR_ARG address, socklen_t address_len); 100 97 int cfathread_dup(int fildes); 101 98 int cfathread_close(int fildes); -
libcfa/src/concurrency/coroutine.cfa
r1c80f20 rf5f2768 10 10 // Created On : Mon Nov 28 12:27:26 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue Dec 15 12:06:04 202013 // Update Count : 2 312 // Last Modified On : Thu Feb 16 15:34:46 2023 13 // Update Count : 24 14 14 // 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 #include "coroutine.hfa" -
libcfa/src/concurrency/io.cfa
r1c80f20 rf5f2768 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 #if defined(__CFA_DEBUG__) -
libcfa/src/concurrency/io/call.cfa.in
r1c80f20 rf5f2768 31 31 Prelude = """#define __cforall_thread__ 32 32 33 #include <sys/socket.h> // first include because of anonymous types __SOCKADDR_ARG, __CONST_SOCKADDR_ARG 34 #include <unistd.h> 35 #include <errno.h> 36 #include <time.hfa> 37 33 38 #include "bits/defs.hfa" 34 39 #include "kernel.hfa" … … 43 48 #include <assert.h> 44 49 #include <stdint.h> 45 #include <errno.h>46 50 #include <linux/io_uring.h> 47 48 51 #include "kernel/fwd.hfa" 49 52 … … 82 85 // I/O Forwards 83 86 //============================================================================================= 84 #include <time.hfa>85 86 // Some forward declarations87 #include <errno.h>88 #include <unistd.h>89 87 90 88 extern "C" { 91 #include <asm/types.h>92 #include <sys/socket.h>93 #include <sys/syscall.h>94 95 89 #if defined(CFA_HAVE_PREADV2) 96 90 struct iovec; … … 118 112 extern ssize_t send(int sockfd, const void *buf, size_t len, int flags); 119 113 extern ssize_t recv(int sockfd, void *buf, size_t len, int flags); 120 extern int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags);121 extern int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);122 114 123 115 extern int fallocate(int fd, int mode, off_t offset, off_t len); … … 292 284 }), 293 285 # CFA_HAVE_IORING_OP_ACCEPT 294 Call('ACCEPT', 'int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags)', {286 Call('ACCEPT', 'int accept4(int sockfd, __SOCKADDR_ARG addr, socklen_t * restrict addrlen, int flags)', { 295 287 'fd': 'sockfd', 296 288 'addr': '(uintptr_t)addr', … … 299 291 }), 300 292 # CFA_HAVE_IORING_OP_CONNECT 301 Call('CONNECT', 'int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)', {293 Call('CONNECT', 'int connect(int sockfd, __CONST_SOCKADDR_ARG addr, socklen_t addrlen)', { 302 294 'fd': 'sockfd', 303 295 'addr': '(uintptr_t)addr', -
libcfa/src/concurrency/io/setup.cfa
r1c80f20 rf5f2768 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 #if defined(__CFA_DEBUG__) -
libcfa/src/concurrency/iofwd.hfa
r1c80f20 rf5f2768 16 16 #pragma once 17 17 18 #include <sys/socket.h> // first include because of anonymous types __SOCKADDR_ARG, __CONST_SOCKADDR_ARG 18 19 #include <unistd.h> 20 19 21 extern "C" { 20 22 #include <asm/types.h> … … 53 55 struct iovec; 54 56 struct msghdr; 55 struct sockaddr;56 57 struct statx; 57 58 struct epoll_event; … … 100 101 extern ssize_t cfa_send(int sockfd, const void *buf, size_t len, int flags, __u64 submit_flags); 101 102 extern ssize_t cfa_recv(int sockfd, void *buf, size_t len, int flags, __u64 submit_flags); 102 extern int cfa_accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags, __u64 submit_flags);103 extern int cfa_connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen, __u64 submit_flags);103 extern int cfa_accept4(int sockfd, __SOCKADDR_ARG addr, socklen_t * restrict addrlen, int flags, __u64 submit_flags); 104 extern int cfa_connect(int sockfd, __CONST_SOCKADDR_ARG addr, socklen_t addrlen, __u64 submit_flags); 104 105 extern int cfa_fallocate(int fd, int mode, off_t offset, off_t len, __u64 submit_flags); 105 106 extern int cfa_posix_fadvise(int fd, off_t offset, off_t len, int advice, __u64 submit_flags); … … 133 134 extern void async_send(io_future_t & future, int sockfd, const void *buf, size_t len, int flags, __u64 submit_flags); 134 135 extern void async_recv(io_future_t & future, int sockfd, void *buf, size_t len, int flags, __u64 submit_flags); 135 extern void async_accept4(io_future_t & future, int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags, __u64 submit_flags);136 extern void async_connect(io_future_t & future, int sockfd, const struct sockaddr *addr, socklen_t addrlen, __u64 submit_flags);136 extern void async_accept4(io_future_t & future, int sockfd, __SOCKADDR_ARG addr, socklen_t * restrict addrlen, int flags, __u64 submit_flags); 137 extern void async_connect(io_future_t & future, int sockfd, __CONST_SOCKADDR_ARG addr, socklen_t addrlen, __u64 submit_flags); 137 138 extern void async_fallocate(io_future_t & future, int fd, int mode, off_t offset, off_t len, __u64 submit_flags); 138 139 extern void async_posix_fadvise(io_future_t & future, int fd, off_t offset, off_t len, int advice, __u64 submit_flags); -
libcfa/src/concurrency/kernel.cfa
r1c80f20 rf5f2768 10 10 // Created On : Tue Jan 17 12:27:26 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Nov 30 18:14:08 202213 // Update Count : 7 612 // Last Modified On : Mon Jan 9 08:42:05 2023 13 // Update Count : 77 14 14 // 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 // #define __CFA_DEBUG_PRINT_RUNTIME_CORE__ -
libcfa/src/concurrency/kernel/cluster.cfa
r1c80f20 rf5f2768 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 #include "bits/defs.hfa" -
libcfa/src/concurrency/kernel/startup.cfa
r1c80f20 rf5f2768 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 // #define __CFA_DEBUG_PRINT_RUNTIME_CORE__ -
libcfa/src/concurrency/locks.cfa
r1c80f20 rf5f2768 16 16 17 17 #define __cforall_thread__ 18 #define _GNU_SOURCE19 18 20 19 #include "locks.hfa" -
libcfa/src/concurrency/monitor.cfa
r1c80f20 rf5f2768 10 10 // Created On : Thd Feb 23 12:27:26 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 4 07:55:14 201913 // Update Count : 1 012 // Last Modified On : Sun Jan 8 18:54:44 2023 13 // Update Count : 11 14 14 // 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE17 //#define _GNU_SOURCE 18 18 19 19 #include "monitor.hfa" -
libcfa/src/concurrency/mutex.cfa
r1c80f20 rf5f2768 12 12 // Created On : Fri May 25 01:37:11 2018 13 13 // Last Modified By : Peter A. Buhr 14 // Last Modified On : Wed Dec 4 09:16:39 201915 // Update Count : 114 // Last Modified On : Sun Jan 8 18:54:28 2023 15 // Update Count : 2 16 16 // 17 17 18 18 #define __cforall_thread__ 19 #define _GNU_SOURCE19 //#define _GNU_SOURCE 20 20 21 21 #include "mutex.hfa" -
libcfa/src/concurrency/preemption.cfa
r1c80f20 rf5f2768 10 10 // Created On : Mon Jun 5 14:20:42 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 17 11:18:57 202213 // Update Count : 5912 // Last Modified On : Mon Jan 9 08:42:59 2023 13 // Update Count : 60 14 14 // 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 // #define __CFA_DEBUG_PRINT_PREEMPTION__ -
libcfa/src/concurrency/pthread.cfa
r1c80f20 rf5f2768 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 #include <signal.h> … … 35 34 struct pthread_values{ 36 35 inline Seqable; 37 void * value;36 void * value; 38 37 bool in_use; 39 38 }; … … 55 54 }; 56 55 57 static void ?{}(pthread_keys& k) {56 static void ?{}(pthread_keys& k) { 58 57 k.threads{}; 59 58 } … … 62 61 static pthread_keys cfa_pthread_keys_storage[PTHREAD_KEYS_MAX] __attribute__((aligned (16))); 63 62 64 static void init_pthread_storage() {65 for ( int i = 0; i < PTHREAD_KEYS_MAX; i++){63 static void init_pthread_storage() { 64 for ( int i = 0; i < PTHREAD_KEYS_MAX; i++) { 66 65 cfa_pthread_keys_storage[i]{}; 67 66 } … … 96 95 97 96 /* condvar helper routines */ 98 static void init(pthread_cond_t * pcond){97 static void init(pthread_cond_t * pcond) { 99 98 static_assert(sizeof(pthread_cond_t) >= sizeof(cfa2pthr_cond_var_t),"sizeof(pthread_t) < sizeof(cfa2pthr_cond_var_t)"); 100 cfa2pthr_cond_var_t * _cond = (cfa2pthr_cond_var_t*)pcond;99 cfa2pthr_cond_var_t * _cond = (cfa2pthr_cond_var_t*)pcond; 101 100 ?{}(*_cond); 102 101 } 103 102 104 static cfa2pthr_cond_var_t * get(pthread_cond_t* pcond){103 static cfa2pthr_cond_var_t * get(pthread_cond_t * pcond) { 105 104 static_assert(sizeof(pthread_cond_t) >= sizeof(cfa2pthr_cond_var_t),"sizeof(pthread_t) < sizeof(cfa2pthr_cond_var_t)"); 106 105 return (cfa2pthr_cond_var_t*)pcond; 107 106 } 108 107 109 static void destroy(pthread_cond_t* cond) {108 static void destroy(pthread_cond_t* cond) { 110 109 static_assert(sizeof(pthread_cond_t) >= sizeof(cfa2pthr_cond_var_t),"sizeof(pthread_t) < sizeof(cfa2pthr_cond_var_t)"); 111 110 ^?{}(*get(cond)); … … 116 115 117 116 /* mutex helper routines */ 118 static void mutex_check(pthread_mutex_t* t) {117 static void mutex_check(pthread_mutex_t* t) { 119 118 // Use double check to improve performance. 120 119 // Check is safe on x86; volatile prevents compiler reordering … … 136 135 137 136 138 static void init(pthread_mutex_t* plock) {137 static void init(pthread_mutex_t* plock) { 139 138 static_assert(sizeof(pthread_mutex_t) >= sizeof(simple_owner_lock),"sizeof(pthread_mutex_t) < sizeof(simple_owner_lock)"); 140 139 simple_owner_lock* _lock = (simple_owner_lock*)plock; … … 142 141 } 143 142 144 static simple_owner_lock* get(pthread_mutex_t* plock) {143 static simple_owner_lock* get(pthread_mutex_t* plock) { 145 144 static_assert(sizeof(pthread_mutex_t) >= sizeof(simple_owner_lock),"sizeof(pthread_mutex_t) < sizeof(simple_owner_lock)"); 146 145 return (simple_owner_lock*)plock; 147 146 } 148 147 149 static void destroy(pthread_mutex_t* plock) {148 static void destroy(pthread_mutex_t* plock) { 150 149 static_assert(sizeof(pthread_mutex_t) >= sizeof(simple_owner_lock),"sizeof(pthread_mutex_t) < sizeof(simple_owner_lock)"); 151 150 ^?{}(*get(plock)); … … 173 172 }; 174 173 175 static cfaPthread_attr_t* get(const pthread_attr_t* attr) {174 static cfaPthread_attr_t* get(const pthread_attr_t* attr) { 176 175 static_assert(sizeof(pthread_attr_t) >= sizeof(cfaPthread_attr_t),"sizeof(pthread_attr_t) < sizeof(cfaPthread_attr_t)"); 177 176 return (cfaPthread_attr_t*)attr; … … 207 206 /* thread part routines */ 208 207 // cfaPthread entry point 209 void main( cfaPthread& _thread) with(_thread){210 joinval = start_routine(start_arg);208 void main( cfaPthread & _thread ) with( _thread ) { 209 joinval = start_routine( start_arg ); 211 210 isTerminated = true; 212 211 } 213 212 214 static cfaPthread * lookup( pthread_t p ){213 static cfaPthread * lookup( pthread_t p ) { 215 214 static_assert(sizeof(pthread_t) >= sizeof(cfaPthread*),"sizeof(pthread_t) < sizeof(cfaPthread*)"); 216 215 return (cfaPthread*)p; … … 221 220 pthread_keys* key; 222 221 bool destcalled = true; 223 if (values != NULL) {222 if (values != NULL) { 224 223 for ( int attempts = 0; attempts < PTHREAD_DESTRUCTOR_ITERATIONS && destcalled ; attempts += 1 ) { 225 224 destcalled = false; 226 225 lock(key_lock); 227 for ( int i = 0; i < PTHREAD_KEYS_MAX; i++){226 for ( int i = 0; i < PTHREAD_KEYS_MAX; i++) { 228 227 // for each valid key 229 if ( values[i].in_use) {228 if ( values[i].in_use) { 230 229 value = &values[i]; 231 230 key = &cfa_pthread_keys[i]; … … 234 233 // if a key value has a non-NULL destructor pointer, and the thread has a non-NULL value associated with that key, 235 234 // the value of the key is set to NULL, and then the function pointed to is called with the previously associated value as its sole argument. 236 if (value->value != NULL && key->destructor != NULL) {235 if (value->value != NULL && key->destructor != NULL) { 237 236 unlock(key_lock); 238 237 key->destructor(value->value); // run destructor … … 249 248 } 250 249 251 static void ^?{}(cfaPthread & mutex t) {250 static void ^?{}(cfaPthread & mutex t) { 252 251 // delete pthread local storage 253 252 pthread_values * values = t.pthreadData; … … 260 259 // set up user thread stackSize 261 260 cfaPthread_attr_t * attr = get(_attr); 262 ((thread&)t) { attr ? attr->stacksize: DEFAULT_STACK_SIZE };261 ((thread&)t) { attr ? attr->stacksize: DEFAULT_STACK_SIZE }; 263 262 264 263 // initialize _thread & cfaPthread id … … 365 364 int pthread_create(pthread_t * _thread, const pthread_attr_t * attr, void *(*start_routine)(void *), void * arg) libcfa_public __THROW { 366 365 cfaPthread *t = alloc(); 367 (*t) {_thread, attr, start_routine, arg};366 (*t) {_thread, attr, start_routine, arg}; 368 367 return 0; 369 368 } … … 415 414 _thread->joinval = status; // set return value 416 415 _thread->isTerminated = 1; // set terminated flag 417 cancel_stack((pthread_exit_exp) {&exp_vt});416 cancel_stack((pthread_exit_exp) {&exp_vt}); 418 417 } //pthread_exit_ 419 418 … … 436 435 check_nonnull(_mutex); 437 436 simple_owner_lock* _lock = get(_mutex); 438 if (_lock->owner != NULL) {437 if (_lock->owner != NULL) { 439 438 return EBUSY; 440 439 } … … 454 453 check_nonnull(_mutex); 455 454 simple_owner_lock* _lock = get(_mutex); 456 if (_lock->owner != active_thread()) {455 if (_lock->owner != active_thread()) { 457 456 return EPERM; 458 457 } // current thread does not hold the mutex … … 464 463 check_nonnull(_mutex); 465 464 simple_owner_lock* _lock = get(_mutex); 466 if (_lock->owner != active_thread() && _lock->owner != NULL) {465 if (_lock->owner != active_thread() && _lock->owner != NULL) { 467 466 return EBUSY; 468 467 } // if mutex is owned … … 567 566 // if current thread's pthreadData is NULL; initialize it 568 567 pthread_values* values; 569 if (t->pthreadData == NULL) {568 if (t->pthreadData == NULL) { 570 569 values = anew( PTHREAD_KEYS_MAX); 571 570 t->pthreadData = values; 572 for ( int i = 0;i < PTHREAD_KEYS_MAX; i++){571 for ( int i = 0;i < PTHREAD_KEYS_MAX; i++) { 573 572 t->pthreadData[i].in_use = false; 574 573 } // for … … 875 874 //######################### Parallelism ######################### 876 875 877 int pthread_setaffinity_np( pthread_t /* __th */, size_t /* __cpusetsize */, __const cpu_set_t * /* __cpuset */ ) libcfa_public __THROW {878 abort( "pthread_setaffinity_np" );879 } // pthread_setaffinity_np880 881 int pthread_getaffinity_np( pthread_t /* __th */, size_t /* __cpusetsize */, cpu_set_t * /* __cpuset */ ) libcfa_public __THROW {882 abort( "pthread_getaffinity_np" );883 } // pthread_getaffinity_np884 885 int pthread_attr_setaffinity_np( pthread_attr_t * /* __attr */, size_t /* __cpusetsize */, __const cpu_set_t * /* __cpuset */ ) libcfa_public __THROW {886 abort( "pthread_attr_setaffinity_np" );887 } // pthread_attr_setaffinity_np888 889 int pthread_attr_getaffinity_np( __const pthread_attr_t * /* __attr */, size_t /* __cpusetsize */, cpu_set_t * /* __cpuset */ ) libcfa_public __THROW {890 abort( "pthread_attr_getaffinity_np" );891 } // pthread_attr_getaffinity_np876 // int pthread_setaffinity_np( pthread_t /* __th */, size_t /* __cpusetsize */, __const cpu_set_t * /* __cpuset */ ) libcfa_public __THROW { 877 // abort( "pthread_setaffinity_np" ); 878 // } // pthread_setaffinity_np 879 880 // int pthread_getaffinity_np( pthread_t /* __th */, size_t /* __cpusetsize */, cpu_set_t * /* __cpuset */ ) libcfa_public __THROW { 881 // abort( "pthread_getaffinity_np" ); 882 // } // pthread_getaffinity_np 883 884 // int pthread_attr_setaffinity_np( pthread_attr_t * /* __attr */, size_t /* __cpusetsize */, __const cpu_set_t * /* __cpuset */ ) libcfa_public __THROW { 885 // abort( "pthread_attr_setaffinity_np" ); 886 // } // pthread_attr_setaffinity_np 887 888 // int pthread_attr_getaffinity_np( __const pthread_attr_t * /* __attr */, size_t /* __cpusetsize */, cpu_set_t * /* __cpuset */ ) libcfa_public __THROW { 889 // abort( "pthread_attr_getaffinity_np" ); 890 // } // pthread_attr_getaffinity_np 892 891 893 892 //######################### Cancellation ######################### -
libcfa/src/concurrency/ready_queue.cfa
r1c80f20 rf5f2768 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 // #define __CFA_DEBUG_PRINT_READY_QUEUE__ -
libcfa/src/concurrency/thread.cfa
r1c80f20 rf5f2768 10 10 // Created On : Tue Jan 17 12:27:26 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Dec 11 20:56:54 202213 // Update Count : 10 212 // Last Modified On : Mon Jan 9 08:42:33 2023 13 // Update Count : 103 14 14 // 15 15 16 16 #define __cforall_thread__ 17 #define _GNU_SOURCE18 17 19 18 #include "thread.hfa" -
libcfa/src/limits.cfa
r1c80f20 rf5f2768 10 10 // Created On : Wed Apr 6 18:06:52 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jan 5 22:27:40202313 // Update Count : 8 412 // Last Modified On : Sun Jan 8 18:53:17 2023 13 // Update Count : 86 14 14 // 15 15 16 #define _GNU_SOURCE //access long double M_*l in math.h16 // need _GNU_SOURCE to access long double M_*l in math.h 17 17 #include <limits.h> 18 18 #include <float.h>
Note: See TracChangeset
for help on using the changeset viewer.