Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
162 changes: 162 additions & 0 deletions cfg/posix.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -4600,6 +4600,142 @@ The function 'mktemp' is considered to be dangerous due to race conditions and s
<not-uninit/>
</arg>
</function>
<function name="pthread_cond_wait">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1">
<not-null/>
<not-uninit/>
</arg>
<arg nr="2">
<not-null/>
<not-uninit/>
</arg>
</function>
<function name="pthread_cond_timedwait">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1">
<not-null/>
<not-uninit/>
</arg>
<arg nr="2">
<not-null/>
<not-uninit/>
</arg>
<arg nr="3">
<not-null/>
<not-uninit/>
</arg>
</function>
<function name="pthread_cond_init">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1" direction="out">
<not-null/>
</arg>
<arg nr="2" direction="in">
<not-null/>
</arg>
</function>
<function name="pthread_cond_destroy">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1" direction="in">
<not-null/>
<not-uninit/>
</arg>
</function>
<function name="pthread_cleanup_push">
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1">
<not-null/>
<not-uninit/>
</arg>
<arg nr="2">
<not-null/>
<not-uninit/>
</arg>
</function>
<function name="pthread_cleanup_pop">
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1" direction="in">
<not-uninit/>
<not-bool/>
</arg>
</function>
<function name="pthread_mutexattr_init,pthread_mutexattr_destroy">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1" direction="inout">
<not-null/>
</arg>
</function>
<function name="pthread_mutexattr_gettype">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1" direction="in">
<not-null/>
<not-uninit/>
</arg>
<arg nr="2" direction="out">
<not-null/>
</arg>
</function>
<function name="pthread_mutexattr_settype">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1" direction="in">
<not-null/>
<not-uninit/>
</arg>
<arg nr="2" direction="in">
<not-uninit/>
<valid>0:2</valid>
</arg>
</function>
<function name="pthread_setcancelstate">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1" direction="in">
<not-uninit/>
<valid>0:2</valid>
</arg>
<arg nr="2" direction="out">
<not-null/>
</arg>
</function>
<function name="pthread_setcanceltype">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1" direction="in">
<not-uninit/>
<valid>0:2</valid>
</arg>
<arg nr="2" direction="out">
<not-null/>
</arg>
</function>
<function name="pthread_cancel">
<returnValue type="int"/>
<noreturn>false</noreturn>
<leak-ignore/>
<arg nr="1" direction="in">
<not-uninit/>
<not-bool/>
</arg>
</function>
<!-- https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_create.html -->
<!-- int pthread_create(pthread_t * thread, const pthread_attr_t * attr, void *(*start_routine)(void*), void * arg); -->
<function name="pthread_create">
Expand Down Expand Up @@ -6437,6 +6573,32 @@ The function 'mktemp' is considered to be dangerous due to race conditions and s
<define name="R_OK" value="4"/>
<define name="W_OK" value="2"/>
<define name="X_OK" value="1"/>
<define name="PTHREAD_STACK_MIN" value="16384"/>
<define name="PTHREAD_CANCEL_ASYNCHRONOUS" value="1"/>
<define name="PTHREAD_CANCEL_ENABLE" value="0"/>
<define name="PTHREAD_CANCEL_DEFERRED" value="0"/>
<define name="PTHREAD_CANCEL_DISABLE" value="1"/>
<define name="PTHREAD_CANCELED" value="(void *)18446744073709551615U"/>
<define name="PTHREAD_COND_INITIALIZER" value="{ { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }"/>
<define name="PTHREAD_CREATE_DETACHED" value="1"/>
<define name="PTHREAD_CREATE_JOINABLE" value="0"/>
<define name="PTHREAD_EXPLICIT_SCHED" value="1"/>
<define name="PTHREAD_INHERIT_SCHED" value="0"/>
<define name="PTHREAD_MUTEX_DEFAULT" value="0"/>
<define name="PTHREAD_MUTEX_ERRORCHECK" value="2"/>
<define name="PTHREAD_MUTEX_NORMAL" value="0"/>
<define name="PTHREAD_MUTEX_TIMED_NP" value="0"/>
<define name="PTHREAD_MUTEX_INITIALIZER" value="{ { 0, 0, 0, 0, 0, 0, 0, { 0, 0 } } }"/>
<define name="PTHREAD_MUTEX_RECURSIVE" value="1"/>
<define name="PTHREAD_ONCE_INIT" value="{0, {0}}"/>
<define name="PTHREAD_PRIO_INHERIT" value="1"/>
<define name="PTHREAD_PRIO_NONE" value="0"/>
<define name="PTHREAD_PRIO_PROTECT" value="2"/>
<define name="PTHREAD_PROCESS_SHARED" value="1"/>
<define name="PTHREAD_PROCESS_PRIVATE" value="0"/>
<define name="PTHREAD_RWLOCK_INITIALIZER" value="{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0 }, 0, 0 } }"/>
<define name="PTHREAD_SCOPE_PROCESS" value="1"/>
<define name="PTHREAD_SCOPE_SYSTEM" value="0"/>
<!-- https://man7.org/linux/man-pages/man3/lockf.3.html -->
<define name="F_LOCK" value="1"/>
<define name="F_TEST" value="3"/>
Expand Down
99 changes: 99 additions & 0 deletions test/cfg/posix.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
#include <strings.h>
#if defined(__APPLE__)
#include <xlocale.h>
#include <limits.h>
#endif
#if !defined(__APPLE__)
#include <mqueue.h>
Expand Down Expand Up @@ -1508,3 +1509,101 @@ void invalidFunctionArg_nice(int inc)
// cppcheck-suppress invalidFunctionArg
nice(+20);
}

void pthread_cond_wait_test(pthread_cond_t *cond, pthread_mutex_t *mutex)
{
(void)pthread_cond_wait(cond, mutex);
}

void pthread_cond_timedwait_test(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime)
{
// cppcheck-suppress nullPointer
(void)pthread_cond_timedwait(cond, mutex, NULL);
(void)pthread_cond_timedwait(cond, mutex, abstime);
}

void pthread_cond_init_test(pthread_cond_t *cond, const pthread_condattr_t *attr)
{
// cppcheck-suppress nullPointer
(void)pthread_cond_init(cond, NULL);
(void)pthread_cond_init(cond, attr);
}

void pthread_cond_destroy_test(const pthread_cond_t *cond)
{
(void)pthread_cond_destroy(cond);
}

void pthread_cleanup_push_test(void (*routine)(void *), void *arg)
{
pthread_cleanup_push(routine, arg);
pthread_cleanup_pop(0);
}

void pthread_mutexattr_init_test(pthread_mutexattr_t *attr)
{
(void)pthread_mutexattr_init(attr);
}

void pthread_mutexattr_destroy_test(pthread_mutexattr_t *attr)
{
(void)pthread_mutexattr_destroy(attr);
}

void pthread_mutexattr_settype_test(const pthread_mutexattr_t *attr, int type)
{
(void)pthread_mutexattr_settype(attr, type);
}

void pthread_mutexattr_gettype_test(const pthread_mutexattr_t *attr, int *type)
{
(void)pthread_mutexattr_gettype(attr, type);
}

void pthread_setcancelstate_test(int state, int *oldstate)
{
(void)pthread_setcancelstate(state, oldstate);
}

void pthread_setcanceltype_test(int type, int *oldtype)
{
(void)pthread_setcanceltype(type, oldtype);
}

void pthread_cancel_test(pthread_t thread)
{
(void)pthread_cancel(thread);
}

void pthread_define_test()
{
PTHREAD_STACK_MIN;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this test does not look proper to me. If the changes in posix.cfg are reverted I assume this test will still be successful? it doesn't test that PTHREAD_STACK_MIN is defined right?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it was crashing when it wasn't set

PTHREAD_CANCEL_ASYNCHRONOUS;
PTHREAD_CANCEL_ENABLE;
PTHREAD_CANCEL_DEFERRED;
PTHREAD_CANCEL_DISABLE;
PTHREAD_CANCELED;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
(void)cond;
PTHREAD_CREATE_DETACHED;
PTHREAD_CREATE_JOINABLE;
PTHREAD_EXPLICIT_SCHED;
PTHREAD_INHERIT_SCHED;
PTHREAD_MUTEX_DEFAULT;
PTHREAD_MUTEX_ERRORCHECK;
PTHREAD_MUTEX_NORMAL;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
(void)mutex;
PTHREAD_MUTEX_RECURSIVE;
pthread_once_t once_block = PTHREAD_ONCE_INIT;
(void)once_block;
PTHREAD_PRIO_INHERIT;
PTHREAD_PRIO_NONE;
PTHREAD_PRIO_PROTECT;
PTHREAD_PROCESS_SHARED;
PTHREAD_PROCESS_PRIVATE;
pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER;
(void)rwlock;
PTHREAD_SCOPE_PROCESS;
PTHREAD_SCOPE_SYSTEM;
}
Loading