summaryrefslogtreecommitdiff
path: root/kernel/inc/macros.h
blob: 21340adbd57767a9009c2a5c98c0a946dd09ab31 (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
//+----------------------------------------------------------------------------
//
// File:     macros.h
//
// Module:   
//
// Synopsis: 
//
// Copyright (C) 2003 
//
// Created:  sgasch  10 Oct 2003
//
//+----------------------------------------------------------------------------

#ifndef _MACROS_H_
#define _MACROS_H_

//
// Macros
//
#define ARRAY_LENGTH(a)            (sizeof((a)) / sizeof((a)[0]))
#define MIN(x, y)                  (((x) < (y)) ? (x) : (y))
#define MAX(x, y)                  (((x) > (y)) ? (x) : (y))

#if 1
void _assert(CHAR *, CHAR *, ULONG);
void VideoPrint(CHAR *, ...);
#define ASSERT(x)                  if (x)    \
                                   { ; }     \
                                   else      \
                                   { _assert(__FUNCTION__ , \
                                             __FILE__ , \
                                             __LINE__); }
#define TRACE(f, ...)              VideoPrint("%s:%u> " ##f , __FUNCTION__ , \
                                              __LINE__ , ##__VA_ARGS__)
#else
#define ASSERT(x)	               ;
#define TRACE(f, ...)              ;
#endif // DEBUG

#define CURRENT_STAMP(a)           asm volatile("rdtsc" : "=a"(((unsigned int *)(a))[0]), "=d"(((unsigned int *)a)[1]))

#endif /* _MACROS_H_ */