Differences From Artifact [5ab8be6ac9]:
- File
src/platform/posix/thread.m
— part of check-in
[ab0f2cc617]
at
2021-01-14 01:11:21
on branch trunk
— Don't use pthread priorities on HP-UX
Creating a thread with priority 0 (documented to be the default) results
in pthread_create() returning EPERM. This means that priorities are
effectively not usable by normal users. (user: js, size: 4421) [annotate] [blame] [check-ins using] [more...]
To Artifact [7bd8ae038a]:
- File src/platform/posix/thread.m — part of check-in [65510fa56b] at 2021-04-17 16:03:07 on branch new-naming-convention — of_thread_t -> OFPlainThread (user: js, size: 4452) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
71 72 73 74 75 76 77 | static void * functionWrapper(void *data) { struct thread_ctx *ctx = data; if (ctx->name != NULL) | | | | 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | static void * functionWrapper(void *data) { struct thread_ctx *ctx = data; if (ctx->name != NULL) OFSetThreadName(ctx->name); pthread_cleanup_push(free, data); ctx->function(ctx->object); pthread_cleanup_pop(1); return NULL; } int OFPlainThreadAttributesInit(OFPlainThreadAttributes *attr) { int error; pthread_attr_t POSIXAttr; attr->priority = 0; attr->stackSize = 0; |
︙ | ︙ | |||
105 106 107 108 109 110 111 | pthread_attr_destroy(&POSIXAttr); return error; } int | | | | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | pthread_attr_destroy(&POSIXAttr); return error; } int OFPlainThreadNew(OFPlainThread *thread, const char *name, void (*function)(id), id object, const OFPlainThreadAttributes *attr) { int error = 0; pthread_attr_t POSIXAttr; bool POSIXAttrAvailable = true; if ((error = pthread_attr_init(&POSIXAttr)) != 0) { if (error == ENOSYS) |
︙ | ︙ | |||
180 181 182 183 184 185 186 | pthread_attr_destroy(&POSIXAttr); } return error; } int | | | | | 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | pthread_attr_destroy(&POSIXAttr); } return error; } int OFPlainThreadJoin(OFPlainThread thread) { void *ret; return pthread_join(thread, &ret); } int OFPlainThreadDetach(OFPlainThread thread) { return pthread_detach(thread); } void OFSetThreadName(const char *name) { #if defined(OF_HAIKU) rename_thread(find_thread(NULL), name); #elif defined(HAVE_PTHREAD_SET_NAME_NP) pthread_set_name_np(pthread_self(), name); #elif defined(HAVE_PTHREAD_SETNAME_NP) # if defined(OF_MACOS) || defined(OF_IOS) |
︙ | ︙ |