diff --git a/build/coverity_model.c b/build/coverity_model.c new file mode 100644 index 0000000000..b72daa6639 --- /dev/null +++ b/build/coverity_model.c @@ -0,0 +1,47 @@ +/* Coverity Scan model + * + * This is a modelling file for Coverity Scan. Modelling helps to avoid false + * positives. + * + * - A model file can't import any header files. + * - Therefore only some built-in primitives like int, char and void are + * available but not NULL etc. + * - Modelling doesn't need full structs and typedefs. Rudimentary structs + * and similar types are sufficient. + * - An uninitialised local pointer is not an error. It signifies that the + * variable could be either NULL or have some data. + * + * Coverity Scan doesn't pick up modifications automatically. The model file + * must be uploaded by an admin in the analysis. + * + * Based on: + * http://hg.python.org/cpython/file/tip/Misc/coverity_model.c + * Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, + * 2011, 2012, 2013 Python Software Foundation; All Rights Reserved + * + */ + +/* + * Useful references: + * https://scan.coverity.com/models + */ + +typedef unsigned int switch_status_t; + +struct pthread_mutex_t {}; + +struct switch_mutex +{ + struct pthread_mutex_t lock; +}; +typedef struct switch_mutex switch_mutex_t; + +switch_status_t switch_mutex_lock(switch_mutex_t *lock) +{ + __coverity_recursive_lock_acquire__(&lock->lock); +} + +switch_status_t switch_mutex_unlock(switch_mutex_t *lock) +{ + __coverity_recursive_lock_release__(&lock->lock); +}