| 2950 | |
| 2951 | |
| 2952 | int API_ROUTINE gds__thread_start(FPTR_INT_VOID_PTR* entrypoint, |
| 2953 | void* arg, |
| 2954 | int priority, |
| 2955 | int /*flags*/, |
| 2956 | void* thd_id) |
| 2957 | { |
| 2958 | /************************************** |
| 2959 | * |
| 2960 | * g d s _ _ t h r e a d _ s t a r t |
| 2961 | * |
| 2962 | ************************************** |
| 2963 | * |
| 2964 | * Functional description |
| 2965 | * Start a thread. |
| 2966 | * |
| 2967 | **************************************/ |
| 2968 | |
| 2969 | int rc = 0; |
| 2970 | try |
| 2971 | { |
| 2972 | Thread thread; |
| 2973 | Thread::start((ThreadEntryPoint*) entrypoint, arg, priority, &thread); |
| 2974 | |
| 2975 | if (thd_id) |
| 2976 | { |
| 2977 | *static_cast<Thread::Handle*>(thd_id) = thread.getHandle(); |
| 2978 | thread.detach(false); |
| 2979 | } |
| 2980 | } |
| 2981 | catch (const status_exception& status) |
| 2982 | { |
| 2983 | rc = status.value()[1]; |
| 2984 | } |
| 2985 | return rc; |
| 2986 | } |
| 2987 | |
| 2988 | #if (defined SOLARIS ) || (defined __cplusplus) |
| 2989 | } //extern "C" { |