-
Notifications
You must be signed in to change notification settings - Fork 2
/
kyulib.h
125 lines (101 loc) · 2.75 KB
/
kyulib.h
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
* Copyright (C) 2016 Tom Trebisky <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. See README and COPYING for
* more details.
*/
/* kyulib.h
* Tom Trebisky 12/1/2001
* Tom Trebisky 9/23/2015
*/
/* This whole gcc builtin thing is a pain in the butt.
* We would like to use the compiler builtins, but
* getting it all straight is a big headache right now.
* When we link with the linux subsystem, we must turn this off.
* tjt 5-39-2015
*/
/* OLD and bogus now (sorta)
#define USE_GCC_BUILTINS
*/
#define USE_LINUX_STR
#define USE_LINUX_MEM
/* in prf.c */
#define USE_LINUX_PRF
void dump_w ( void *, int );
void dump_l ( void *, int );
/* from linux/compiler.h */
/* I don't use these, but they look interesting */
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
// Making this long rather than int cleans up the compile
// of dlmalloc.c on 64 bit armv8
typedef unsigned long size_t;
#ifdef USE_GCC_BUILTINS
#define memcpy(a,b,c) __builtin_memcpy((a),(b),(c))
#define memcmp(a,b,c) __builtin_memcmp((a),(b),(c))
#define memset(a,b,c) __builtin_memset((a),(b),(c))
#define strcmp(a,b) __builtin_strcmp((a),(b))
#define strcpy(a,b) __builtin_strcpy((a),(b))
#define strncpy(a,b,c) __builtin_strncpy((a),(b),(c))
#define strlen(a) __builtin_strlen((a))
#endif
/* We provide these (at least thus far */
int printf(const char *, ...);
int sprintf(char *, const char *, ...);
void * memcpy ( void *, char *, size_t );
/* Defined in console.c */
void putchar ( int );
void puts ( char * );
/*
int strcmp ( const char *, const char * );
char *strncpy( char *, const char *, size_t );
char *strcpy ( char *, const char * );
void *memset( void *s, int c, size_t n );
int snprintf(char *str, size_t size, const char *format, ...);
*/
#ifdef LED_DEBUG
void flash ( void );
void big_delay ( void );
#endif
#define SIMPLE_SLAB
#ifdef SIMPLE_SLAB
struct kmem_cache {
size_t size;
};
typedef struct kmem_cache kmem_cache_t;
#endif
/* XXX - the following fixed size should really
* be an argument to cq_init() and be dynamically
* allocated.
*/
#define MAX_CQ_SIZE 1024
struct cqueue {
char buf[MAX_CQ_SIZE];
char *bp;
char *ip;
char *op;
char *limit;
int size;
int count;
int toss;
};
struct cqueue * cq_init ( int );
void cq_add ( struct cqueue *, int );
int cq_remove ( struct cqueue * );
int cq_count ( struct cqueue * );
#ifndef NULL
#define NULL (0)
#endif
#ifdef ARCH_X86
extern inline void cpu_enter ( void )
{
__asm__ __volatile__ ( "cli" );
}
extern inline void cpu_leave ( void )
{
__asm__ __volatile__ ( "sti" );
}
#endif
/* THE END */