#ifndef _DAT_OSD_H_
#define _DAT_OSD_H_
#include <dat/udat.h>
#include <assert.h>
#include <ctype.h>
#include <dlfcn.h>
#include <errno.h>
#include <pthread.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <unistd.h>
#include <sys/time.h>
#ifdef __cplusplus
extern "C" {
#endif
#define dat_os_assert(expr) assert(expr)
typedef int DAT_OS_DBG_TYPE_VAL;
typedef enum
{
DAT_OS_DBG_TYPE_ERROR = 0x1,
DAT_OS_DBG_TYPE_GENERIC = 0x2,
DAT_OS_DBG_TYPE_SR = 0x4,
DAT_OS_DBG_TYPE_DR = 0x8,
DAT_OS_DBG_TYPE_PROVIDER_API = 0x10,
DAT_OS_DBG_TYPE_CONSUMER_API = 0x20,
DAT_OS_DBG_TYPE_ALL = 0xff
} DAT_OS_DBG_TYPE;
extern void
dat_os_dbg_init(void);
extern void
dat_os_dbg_print(
DAT_OS_DBG_TYPE_VAL type,
const char *fmt,
...);
#define DAT_ERROR(Type, SubType) ((DAT_RETURN)(DAT_CLASS_ERROR | Type | \
SubType))
typedef size_t DAT_OS_SIZE;
typedef void * DAT_OS_LIBRARY_HANDLE;
extern DAT_RETURN
dat_os_library_load(
const char *library_path,
DAT_OS_LIBRARY_HANDLE *library_handle_ptr);
extern DAT_RETURN
dat_os_library_unload(
const DAT_OS_LIBRARY_HANDLE library_handle);
#define dat_os_library_sym(libhndl, sym) dlsym((libhndl), (sym))
#define dat_os_getenv(name) getenv((name))
#define dat_os_strtol(nptr, endptr, base) strtol((nptr), (endptr), (base))
#define dat_os_strlen(s) strlen((s))
#define dat_os_strncmp(s1, s2, n) strncmp((s1), (s2), (n))
#define dat_os_strncpy(dest, src, len) strncpy((dest), (src), (len))
#define dat_os_isblank(c) ((DAT_BOOLEAN)((' ' == (c)) || ('\t' == (c))) \
? DAT_TRUE : DAT_FALSE)
#define dat_os_isdigit(c) ((DAT_BOOLEAN)(isdigit((c)) ? DAT_TRUE : \
DAT_FALSE))
#define dat_os_usleep(usec) usleep((usec))
#define dat_os_alloc(size) malloc((size))
#define dat_os_free(ptr, size) free((ptr))
#define dat_os_memset(loc, c, size) memset((loc), (c), (size))
typedef FILE DAT_OS_FILE;
typedef fpos_t DAT_OS_FILE_POS;
#define dat_os_fopen(path) ((DAT_OS_FILE *)fopen((path), "rF"))
#define dat_os_fgetpos(file, pos) ((DAT_RETURN)( \
(0 == fgetpos((file), (pos))) ? DAT_SUCCESS : \
DAT_INTERNAL_ERROR))
#define dat_os_fsetpos(file, pos) ((DAT_RETURN)( \
(0 == fsetpos((file), (pos))) ? DAT_SUCCESS : \
DAT_INTERNAL_ERROR))
#define dat_os_fgetc(file) fgetc((file))
#define dat_os_fputc(file, c) fputc((c), (file))
#define dat_os_fungetc(file) fseek((file), -1, SEEK_CUR)
#define dat_os_fread(file, buf, len) fread((buf), sizeof (char), \
(len), (file))
#define dat_os_fclose(file) ((0 == fclose(file)) ? DAT_SUCCESS : \
DAT_INTERNAL_ERROR)
typedef pthread_mutex_t DAT_OS_LOCK;
#define dat_os_lock_init(m) ((0 == pthread_mutex_init((m), NULL)) ? \
DAT_SUCCESS : DAT_INTERNAL_ERROR)
#define dat_os_lock(m) ((DAT_RETURN)( \
(0 == pthread_mutex_lock((m))) ? \
DAT_SUCCESS : DAT_INTERNAL_ERROR))
#define dat_os_unlock(m) ((DAT_RETURN)( \
(0 == pthread_mutex_unlock((m))) ? \
DAT_SUCCESS : DAT_INTERNAL_ERROR))
#define dat_os_lock_destroy(m) ((DAT_RETURN)( \
(0 == pthread_mutex_destroy((m))) ? \
DAT_SUCCESS : DAT_INTERNAL_ERROR))
#define DAT_BAD_HANDLE(h) (((h) == NULL) || ((unsigned long)(h) & 3))
#ifdef __cplusplus
}
#endif
#endif