142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru/* 242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru $License: 3895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall Copyright 2011 InvenSense, Inc. 4895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall 5895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall Licensed under the Apache License, Version 2.0 (the "License"); 6895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall you may not use this file except in compliance with the License. 7895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall You may obtain a copy of the License at 8895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall 9895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall http://www.apache.org/licenses/LICENSE-2.0 10895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall 11895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall Unless required by applicable law or agreed to in writing, software 12895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall distributed under the License is distributed on an "AS IS" BASIS, 13895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall See the License for the specific language governing permissions and 15895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall limitations under the License. 16895401859313187f15a800e62d43e6bcbf48fadaJP Abgrall $ 1742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru */ 1842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 1942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#ifndef _MLOS_H 2042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#define _MLOS_H 2142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 2242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#ifndef __KERNEL__ 2342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#include <stdio.h> 2442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#endif 2542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 2642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#include "mltypes.h" 2742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 2842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#ifdef __cplusplus 2942331858975144405f95243be8427084ee7d478dJean-Baptiste Queruextern "C" { 3042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#endif 3142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 3242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#if defined(LINUX) || defined(__KERNEL__) 336f13e8c2d7d2716474ea56e6fc9429e8a939ae44Ashok Bhat#include <stdint.h> 346f13e8c2d7d2716474ea56e6fc9429e8a939ae44Ashok Bhattypedef uintptr_t HANDLE; 3542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#endif 3642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 3742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* ------------ */ 3842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* - Defines. - */ 3942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* ------------ */ 4042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 4142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* - MLOSCreateFile defines. - */ 4242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 4342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#define MLOS_GENERIC_READ ((unsigned int)0x80000000) 4442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#define MLOS_GENERIC_WRITE ((unsigned int)0x40000000) 4542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#define MLOS_FILE_SHARE_READ ((unsigned int)0x00000001) 4642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#define MLOS_FILE_SHARE_WRITE ((unsigned int)0x00000002) 4742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#define MLOS_OPEN_EXISTING ((unsigned int)0x00000003) 4842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 4942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* ---------- */ 5042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* - Enums. - */ 5142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* ---------- */ 5242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 5342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* --------------- */ 5442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* - Structures. - */ 5542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* --------------- */ 5642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 5742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* --------------------- */ 5842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* - Function p-types. - */ 5942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* --------------------- */ 6042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 6142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#ifndef __KERNEL__ 6242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#include <string.h> 6342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru void *inv_malloc(unsigned int numBytes); 6442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru inv_error_t inv_free(void *ptr); 6542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru inv_error_t inv_create_mutex(HANDLE *mutex); 6642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru inv_error_t inv_lock_mutex(HANDLE mutex); 6742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru inv_error_t inv_unlock_mutex(HANDLE mutex); 6842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru FILE *inv_fopen(char *filename); 6942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru void inv_fclose(FILE *fp); 7042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 7142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru inv_error_t inv_destroy_mutex(HANDLE handle); 7242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 7342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru void inv_sleep(int mSecs); 7442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru unsigned long inv_get_tick_count(void); 7542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 7642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru /* Kernel implmentations */ 7742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#define GFP_KERNEL (0x70) 7842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru static inline void *kmalloc(size_t size, 7942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru unsigned int gfp_flags) 8042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru { 8142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru return inv_malloc((unsigned int)size); 8242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru } 8342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru static inline void *kzalloc(size_t size, unsigned int gfp_flags) 8442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru { 8542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru void *tmp = inv_malloc((unsigned int)size); 8642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru if (tmp) 8742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru memset(tmp, 0, size); 8842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru return tmp; 8942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru } 9042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru static inline void kfree(void *ptr) 9142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru { 9242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru inv_free(ptr); 9342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru } 9442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru static inline void msleep(long msecs) 9542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru { 9642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru inv_sleep(msecs); 9742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru } 9842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru static inline void udelay(unsigned long usecs) 9942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru { 10042331858975144405f95243be8427084ee7d478dJean-Baptiste Queru inv_sleep((usecs + 999) / 1000); 10142331858975144405f95243be8427084ee7d478dJean-Baptiste Queru } 10242331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#else 10342331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#include <linux/delay.h> 10442331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#endif 10542331858975144405f95243be8427084ee7d478dJean-Baptiste Queru 10642331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#ifdef __cplusplus 10742331858975144405f95243be8427084ee7d478dJean-Baptiste Queru} 10842331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#endif 10942331858975144405f95243be8427084ee7d478dJean-Baptiste Queru#endif /* _MLOS_H */ 110