17494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall/* 27494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall $License: 37494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall Copyright (C) 2011 InvenSense Corporation, All Rights Reserved. 47494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall $ 57494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall */ 67494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 77494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#ifndef _MLOS_H 87494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define _MLOS_H 97494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 107494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#ifndef __KERNEL__ 117494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#include <stdio.h> 127494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#endif 138504ee554e5ca7014b3160b1cbeb4506e231338bJP Abgrall#include <pthread.h> 147494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 157494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#include "mltypes.h" 167494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 177494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#ifdef __cplusplus 187494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrallextern "C" { 197494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#endif 207494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 217494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#if defined(LINUX) || defined(__KERNEL__) 228504ee554e5ca7014b3160b1cbeb4506e231338bJP Abgralltypedef pthread_mutex_t* HANDLE; 237494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#endif 247494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 257494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* ------------ */ 267494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* - Defines. - */ 277494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* ------------ */ 287494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 297494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* - MLOSCreateFile defines. - */ 307494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 317494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define MLOS_GENERIC_READ ((unsigned int)0x80000000) 327494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define MLOS_GENERIC_WRITE ((unsigned int)0x40000000) 337494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define MLOS_FILE_SHARE_READ ((unsigned int)0x00000001) 347494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define MLOS_FILE_SHARE_WRITE ((unsigned int)0x00000002) 357494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define MLOS_OPEN_EXISTING ((unsigned int)0x00000003) 367494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 377494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* ---------- */ 387494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* - Enums. - */ 397494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* ---------- */ 407494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 417494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* --------------- */ 427494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* - Structures. - */ 437494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* --------------- */ 447494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 457494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* --------------------- */ 467494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* - Function p-types. - */ 477494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* --------------------- */ 487494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 497494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#ifndef __KERNEL__ 507494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#include <string.h> 517494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall void *inv_malloc(unsigned int numBytes); 527494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall inv_error_t inv_free(void *ptr); 537494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall inv_error_t inv_create_mutex(HANDLE *mutex); 547494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall inv_error_t inv_lock_mutex(HANDLE mutex); 557494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall inv_error_t inv_unlock_mutex(HANDLE mutex); 567494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall FILE *inv_fopen(char *filename); 577494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall void inv_fclose(FILE *fp); 587494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 597494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall inv_error_t inv_destroy_mutex(HANDLE handle); 607494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 617494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall void inv_sleep(int mSecs); 627494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall unsigned long inv_get_tick_count(void); 637494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 647494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall /* Kernel implmentations */ 657494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#define GFP_KERNEL (0x70) 667494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall static inline void *kmalloc(size_t size, 677494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall unsigned int gfp_flags) 687494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall { 697494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall (void)gfp_flags; 707494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall return inv_malloc((unsigned int)size); 717494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall } 727494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall static inline void *kzalloc(size_t size, unsigned int gfp_flags) 737494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall { 747494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall void *tmp = inv_malloc((unsigned int)size); 757494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall (void)gfp_flags; 767494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall if (tmp) 777494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall memset(tmp, 0, size); 787494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall return tmp; 797494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall } 807494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall static inline void kfree(void *ptr) 817494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall { 827494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall inv_free(ptr); 837494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall } 847494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall static inline void msleep(long msecs) 857494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall { 867494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall inv_sleep(msecs); 877494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall } 887494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall static inline void udelay(unsigned long usecs) 897494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall { 907494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall inv_sleep((usecs + 999) / 1000); 917494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall } 927494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#else 937494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#include <linux/delay.h> 947494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#endif 957494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall 967494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#ifdef __cplusplus 977494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall} 987494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#endif 997494581689b0fc1d8addd016b1c92d74d01f5ad4JP Abgrall#endif /* _MLOS_H */ 100