LibC: Partially implement pthread_setcancel{state,type}()

With those partially implemented I can start to clone the SerenityOS
git repository via HTTPS.

The download still fails half-way through because SSL_read returns
an error for reasons I haven't investigated yet.
This commit is contained in:
Gunnar Beutner 2021-05-10 15:13:59 +02:00 committed by Linus Groh
parent a14a1f2d61
commit 759acdb938
Notes: sideshowbarker 2024-07-18 18:21:46 +09:00
2 changed files with 17 additions and 4 deletions

View file

@ -555,14 +555,24 @@ int pthread_getname_np(pthread_t thread, char* buffer, size_t buffer_size)
__RETURN_PTHREAD_ERROR(rc);
}
int pthread_setcancelstate([[maybe_unused]] int state, [[maybe_unused]] int* oldstate)
int pthread_setcancelstate(int state, int* oldstate)
{
TODO();
if (oldstate)
*oldstate = PTHREAD_CANCEL_DISABLE;
dbgln("FIXME: Implement pthread_setcancelstate({}, ...)", state);
if (state != PTHREAD_CANCEL_DISABLE)
return EINVAL;
return 0;
}
int pthread_setcanceltype([[maybe_unused]] int type, [[maybe_unused]] int* oldtype)
int pthread_setcanceltype(int type, int* oldtype)
{
TODO();
if (oldtype)
*oldtype = PTHREAD_CANCEL_DEFERRED;
dbgln("FIXME: Implement pthread_setcanceltype({}, ...)", type);
if (type != PTHREAD_CANCEL_DEFERRED)
return EINVAL;
return 0;
}
constexpr static pid_t spinlock_unlock_sentinel = 0;

View file

@ -97,6 +97,9 @@ int pthread_cond_timedwait(pthread_cond_t*, pthread_mutex_t*, const struct times
#define PTHREAD_CANCEL_ENABLE 1
#define PTHREAD_CANCEL_DISABLE 2
#define PTHREAD_CANCEL_DEFERRED 1
#define PTHREAD_CANCEL_ASYNCHRONOUS 2
int pthread_cancel(pthread_t);
int pthread_setcancelstate(int state, int* oldstate);
int pthread_setcanceltype(int type, int* oldtype);