1/* 2 $License: 3 Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. 4 $ 5 */ 6 7#ifndef _MLOS_H 8#define _MLOS_H 9 10#ifndef __KERNEL__ 11#include <stdio.h> 12#endif 13#include <pthread.h> 14 15#include "mltypes.h" 16 17#ifdef __cplusplus 18extern "C" { 19#endif 20 21#if defined(LINUX) || defined(__KERNEL__) 22typedef pthread_mutex_t* HANDLE; 23#endif 24 25 /* ------------ */ 26 /* - Defines. - */ 27 /* ------------ */ 28 29 /* - MLOSCreateFile defines. - */ 30 31#define MLOS_GENERIC_READ ((unsigned int)0x80000000) 32#define MLOS_GENERIC_WRITE ((unsigned int)0x40000000) 33#define MLOS_FILE_SHARE_READ ((unsigned int)0x00000001) 34#define MLOS_FILE_SHARE_WRITE ((unsigned int)0x00000002) 35#define MLOS_OPEN_EXISTING ((unsigned int)0x00000003) 36 37 /* ---------- */ 38 /* - Enums. - */ 39 /* ---------- */ 40 41 /* --------------- */ 42 /* - Structures. - */ 43 /* --------------- */ 44 45 /* --------------------- */ 46 /* - Function p-types. - */ 47 /* --------------------- */ 48 49#ifndef __KERNEL__ 50#include <string.h> 51 void *inv_malloc(unsigned int numBytes); 52 inv_error_t inv_free(void *ptr); 53 inv_error_t inv_create_mutex(HANDLE *mutex); 54 inv_error_t inv_lock_mutex(HANDLE mutex); 55 inv_error_t inv_unlock_mutex(HANDLE mutex); 56 FILE *inv_fopen(char *filename); 57 void inv_fclose(FILE *fp); 58 59 inv_error_t inv_destroy_mutex(HANDLE handle); 60 61 void inv_sleep(int mSecs); 62 unsigned long inv_get_tick_count(void); 63 64 /* Kernel implmentations */ 65#define GFP_KERNEL (0x70) 66 static inline void *kmalloc(size_t size, 67 unsigned int gfp_flags) 68 { 69 (void)gfp_flags; 70 return inv_malloc((unsigned int)size); 71 } 72 static inline void *kzalloc(size_t size, unsigned int gfp_flags) 73 { 74 void *tmp = inv_malloc((unsigned int)size); 75 (void)gfp_flags; 76 if (tmp) 77 memset(tmp, 0, size); 78 return tmp; 79 } 80 static inline void kfree(void *ptr) 81 { 82 inv_free(ptr); 83 } 84 static inline void msleep(long msecs) 85 { 86 inv_sleep(msecs); 87 } 88 static inline void udelay(unsigned long usecs) 89 { 90 inv_sleep((usecs + 999) / 1000); 91 } 92#else 93#include <linux/delay.h> 94#endif 95 96#ifdef __cplusplus 97} 98#endif 99#endif /* _MLOS_H */ 100