X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=utils.h;fp=utils.h;h=4fa0750f9773cb5059c268d2d7ac7abac6557f10;hb=da827678b21e94c74fd17c9b8683edb60f73e814;hp=0991fb95333a3eb37111d1968465655f95fb34cf;hpb=64cbcf77f3d0a6d8dea12d4c2a6500399d9bd2a2;p=rsem.git diff --git a/utils.h b/utils.h index 0991fb9..4fa0750 100644 --- a/utils.h +++ b/utils.h @@ -10,6 +10,7 @@ #include #include #include +#include const int STRLEN = 10005 ; const double EPSILON = 1e-300; @@ -161,4 +162,26 @@ void exitWithError(const char* errmsg) { exit(-1); } +void pthread_exception(int rc) { + switch(rc) { + case EAGAIN: + fprintf(stderr, "Error code: EAGAIN. Insufficient resources to create another thread, or a system-imposed limit on the number of threads was encountered.\n"); + break; + case EINVAL: + fprintf(stderr, "Error code: EINVAL. Invalid settings in attr if pthread_create() is called. Or the implementation has detected that the value specified by thread_id does not refer to a joinable thread if pthread_join() is called.\n"); + break; + case EPERM: + fprintf(stderr, "Error code: EPERM. No permission to set the scheduling policy and parameters specified in attr.\n"); + break; + case EDEADLK: + fprintf(stderr, "Error code: EDEADLK. A deadlock was detected (e.g., two threads tried to join with each other); or thread_id specifies the calling thread."); + break; + case ESRCH: + fprintf(stderr, "Error code: ESRCH. No thread with thread_id could be found.\n"); + break; + default: fprintf(stderr, "Unknown error code: %d\n", rc); + } + exit(-1); +} + #endif