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