summaryrefslogtreecommitdiffstats
path: root/libsensors_iio/software/core/HAL/include/mlos.h
blob: ce06b077b1ea138fd5dd9f45b9d0263d9894df33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
 $License:
    Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.
 $
 */

#ifndef _MLOS_H
#define _MLOS_H

#ifndef __KERNEL__
#include <stdio.h>
#endif

#include "mltypes.h"

#ifdef __cplusplus
extern "C" {
#endif

#if defined(LINUX) || defined(__KERNEL__)
typedef unsigned int HANDLE;
#endif

	/* ------------ */
	/* - Defines. - */
	/* ------------ */

	/* - MLOSCreateFile defines. - */

#define MLOS_GENERIC_READ         ((unsigned int)0x80000000)
#define MLOS_GENERIC_WRITE        ((unsigned int)0x40000000)
#define MLOS_FILE_SHARE_READ      ((unsigned int)0x00000001)
#define MLOS_FILE_SHARE_WRITE     ((unsigned int)0x00000002)
#define MLOS_OPEN_EXISTING        ((unsigned int)0x00000003)

	/* ---------- */
	/* - Enums. - */
	/* ---------- */

	/* --------------- */
	/* - Structures. - */
	/* --------------- */

	/* --------------------- */
	/* - Function p-types. - */
	/* --------------------- */

#ifndef __KERNEL__
#include <string.h>
	void *inv_malloc(unsigned int numBytes);
	inv_error_t inv_free(void *ptr);
	inv_error_t inv_create_mutex(HANDLE *mutex);
	inv_error_t inv_lock_mutex(HANDLE mutex);
	inv_error_t inv_unlock_mutex(HANDLE mutex);
	FILE *inv_fopen(char *filename);
	void inv_fclose(FILE *fp);

    // Binary Semaphore
    inv_error_t inv_create_binary_semaphore(HANDLE *semaphore);
    inv_error_t inv_destroy_binary_semaphore(HANDLE handle);
    inv_error_t inv_increment_binary_semaphore(HANDLE handle);
    inv_error_t inv_decrement_binary_semaphore(HANDLE handle, long timeout_ms);

	inv_error_t inv_destroy_mutex(HANDLE handle);

	void inv_sleep(int mSecs);
	inv_time_t inv_get_tick_count(void);

	/* Kernel implmentations */
#define GFP_KERNEL (0x70)
	static inline void *kmalloc(size_t size,
				    unsigned int gfp_flags)
	{
        (void)gfp_flags;
		return inv_malloc((unsigned int)size);
	}
	static inline void *kzalloc(size_t size, unsigned int gfp_flags)
	{
		void *tmp = inv_malloc((unsigned int)size);
        (void)gfp_flags;
		if (tmp)
			memset(tmp, 0, size);
		return tmp;
	}
	static inline void kfree(void *ptr)
	{
		inv_free(ptr);
	}
	static inline void msleep(long msecs)
	{
		inv_sleep(msecs);
	}
	static inline void udelay(unsigned long usecs)
	{
		inv_sleep((usecs + 999) / 1000);
	}
#else
#include <linux/delay.h>
#endif

#ifdef __cplusplus
}
#endif
#endif				/* _MLOS_H */