123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /*
- * libZRTP SDK library, implements the ZRTP secure VoIP protocol.
- * Copyright (c) 2006-2009 Philip R. Zimmermann. All rights reserved.
- * Contact: http://philzimmermann.com
- * For licensing and other legal details, see the file zrtp_legal.c.
- *
- * Viktor Krykun <v.krikun at zfoneproject.com>
- */
- /**
- * \file zrtp_iface_system.h
- * \brief libzrtp platform-dependent routine
- */
- #ifndef __ZRTP_IFACE_SYSTEM_H__
- #define __ZRTP_IFACE_SYSTEM_H__
- #include "zrtp_config.h"
- #include "zrtp_types.h"
- #if defined(__cplusplus)
- extern "C"
- {
- #endif
- /*============================================================================*/
- /* System wide functions */
- /*============================================================================*/
- /**
- * \defgroup zrtp_iface Library Interfaces Overview
- *
- * This section describes the requirements for the implementation of each interface function.
- * Descriptions are divided into groups by function
- */
-
- /**
- * \defgroup zrtp_iface_base Basic platform-dependent routine
- * \ingroup zrtp_iface
- * \{
- */
- /**
- * \brief Time in miliseconds
- *
- * libzrtp uses a unix-like time calculation scheme: time since 1/1/1970.
- */
- typedef uint64_t zrtp_time_t;
- /**
- * \brief Allocates memory of a defined size
- *
- * Allocates \c size bytes and returns a pointer to the allocated memory Allocated memory is not
- * cleared.
- *
- * \param size - number of bytes for allocation
- * \return
- * - pointer to the allocated memory if successful.
- * - NULL if the memory allocation failed.
- */
- extern void* zrtp_sys_alloc(unsigned int size);
- /**
- * \brief release memory
- *
- * Release the memory space pointed to by \c obj, which was returned by a previous zrtp_sys_alloc()
- * call. If \c obj is NULL, no operation is performed.
- *
- * \param obj - pointer to the released memory
- */
- extern void zrtp_sys_free(void* obj);
- /**
- * \brief Memory copying function.
- *
- * This function copies \c length bytes from memory area \c src to memory area \c dest. The memory
- * areas should not overlap.
- *
- * \param dest - pointer to the destination buffer
- * \param src - pointer to the source buffer;
- * \param length - number of bytes to be copied.
- * \return
- * - pointer to the destination buffer (dest)
- */
- extern void* zrtp_memcpy(void* dest, const void* src, unsigned int length);
- /**
- * \brief Write a byte to a byte string
- *
- * The zrtp_memset() function writes \c n bytes of value \c c (converted to an unsigned char) to the
- * string \c s.
- * \return
- * - first argument
- */
- extern void *zrtp_memset(void *s, int c, unsigned int n);
- /**
- * \brief Returns current date and time
- *
- * This function should return current unix-like date and time: number of microseconds since
- * 1.1.1970.
- */
- extern zrtp_time_t zrtp_time_now();
- /** \} */
- /*============================================================================*/
- /* Mutex related interfaces */
- /*============================================================================*/
-
- /**
- * \defgroup zrtp_iface_mutex Synchronization related functions
- * \ingroup zrtp_iface
- * \{
- */
- /**
- * \brief Initializing the mutex structure
- *
- * This function allocates and initializes the mutex referenced by \c mutex with default attributes.
- * Upon successful initialization, the state of the mutex becomes initialized and unlocked. This
- * function should create a NON RECURSIVE mutex. (Attempting to relock the mutex causes deadlock)
- *
- * \param mutex - out parameter, mutex structure for allocation and initialization
- * \return:
- * - zrtp_status_ok if initialization successful;
- * - zrtp_status_fail if an error occurred.
- * \sa zrtp_mutex_destroy()
- */
- extern zrtp_status_t zrtp_mutex_init(zrtp_mutex_t** mutex);
-
- /**
- * \brief Deinitializing the mutex structure
- *
- * This function destroys the mutex object previously allocated by zrtp_mutex_init().
- *
- * \param mutex - mutex structure for deinitialization.
- * \return:
- * - zrtp_status_ok if deinitialization successful;
- * - zrtp_status_fail if an error occurred.
- * \sa zrtp_mutex_init()
- */
- extern zrtp_status_t zrtp_mutex_destroy(zrtp_mutex_t* mutex);
- /**
- * \brief Mutex locking
- *
- * This function locks the mutex object referenced by \c mutex. If the mutex is already locked, the
- * thread that called it is blocked until the mutex becomes available. This operation returns the
- * mutex object referenced by the mutex in the locked state with the calling thread as its owner.
- *
- * \param mutex - mutex for locking;
- * \return:
- * - zrtp_status_ok if successful;
- * - zrtp_status_fail if an error occurred.
- */
- extern zrtp_status_t zrtp_mutex_lock(zrtp_mutex_t* mutex);
- /**
- * \brief Mutex releasing
- *
- * This function releases the mutex object referenced by mutex. The way a mutex is released depends
- * on the mutex's type attribute. If there are threads blocked on the mutex object referenced by
- * mutex when zrtp_mutex_unlock() is called and the mutex becomes available, the scheduling policy
- * determines which thread acquires the mutex.
- *
- * \param mutex - mutex to release
- * \return:
- * - zrtp_status_ok if successful;
- * - zrtp_status_fail if an error occurred.
- */
- extern zrtp_status_t zrtp_mutex_unlock(zrtp_mutex_t* mutex);
- /*! \} */
- #if defined(__cplusplus)
- }
- #endif
- #endif /* __ZRTP_IFACE_SYSTEM_H__ */
|