rem: NsThreadFatal("NsThreadCreate", "pthread_create", err);
add: NsThreadFatal("Ns_ThreadCreate", "pthread_create", err);
context: NsThreadCreate(Thread *thrPtr){    pthread_t thr;    pthread_attr_t attr, *attrPtr;    int     err;    /*     * Set the stack size.  It could be smarter to leave the default      * on platforms which map large stacks with guard zones     * (e.g., Solaris and Linux).     */    err = pthread_attr_init(&attr);    if (err != 0) {        NsThreadFatal("Ns_ThreadCreate", "pthread_attr_init", err);    }    err = pthread_attr_setstacksize(&attr, thrPtr->stackSize);     if (err != 0) {        NsThreadFatal("NsThreadCreate", "pthread_attr_setstacksize", err);    }    /*     * System scope threads are used by default on Solaris and UnixWare.     * Other platforms are either already system scope (Linux, HP11),      * support only process scope (SGI), user-level thread libraries     * anyway (HP10, FreeBSD), or found to be unstable with this     * setting (OSF).     */#ifdef USE_PTHREAD_SYSSCOPE    err = pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);    if (err != 0) {        NsThreadFatal("NsThreadCreate", "pthread_attr_setscope",err);    }#endif    err = pthread_create(&thr, &attr, (void *(*)(void *)) NsThreadMain, thrPtr);    if (err != 0) {        NsThreadFatal("NsThreadCreate", "pthread_create", err);    }    err = pthread_detach(thr);    if (err != 0) {        NsThreadFatal("NsThreadCreate", "pthread_detach", err);    }    err = pthread_attr_destroy(&attr);    if (err != 0) {        NsThreadFatal("NsThreadCreate", "pthread_attr_destroy", err);    }}