--- /dev/null
+/* 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);
+}