aboutsummaryrefslogtreecommitdiff
path: root/include/apos
diff options
context:
space:
mode:
Diffstat (limited to 'include/apos')
-rw-r--r--include/apos/debug.h120
-rw-r--r--include/apos/sp_tree.h4
-rw-r--r--include/apos/vmem.h9
3 files changed, 127 insertions, 6 deletions
diff --git a/include/apos/debug.h b/include/apos/debug.h
index d9d668c..25ea132 100644
--- a/include/apos/debug.h
+++ b/include/apos/debug.h
@@ -5,6 +5,126 @@
#include <apos/pmem.h>
#include <arch/vmem.h>
+#if _LP64
+/* approximate, but probably good enough */
+#define __PRI64_PREFIX "l"
+#define __PRIPTR_PREFIX "l"
+#else
+#define __PRI64_PREFIX "ll"
+#define __PRIPTR_PREFIX
+#endif
+
+/* Decimal notation. */
+#define PRId8 "d"
+#define PRId16 "d"
+#define PRId32 "d"
+#define PRId64 __PRI64_PREFIX "d"
+
+#define PRIdLEAST8 "d"
+#define PRIdLEAST16 "d"
+#define PRIdLEAST32 "d"
+#define PRIdLEAST64 __PRI64_PREFIX "d"
+
+#define PRIdFAST8 "d"
+#define PRIdFAST16 __PRIPTR_PREFIX "d"
+#define PRIdFAST32 __PRIPTR_PREFIX "d"
+#define PRIdFAST64 __PRI64_PREFIX "d"
+
+#define PRIi8 "i"
+#define PRIi16 "i"
+#define PRIi32 "i"
+#define PRIi64 __PRI64_PREFIX "i"
+
+#define PRIiLEAST8 "i"
+#define PRIiLEAST16 "i"
+#define PRIiLEAST32 "i"
+#define PRIiLEAST64 __PRI64_PREFIX "i"
+
+#define PRIiFAST8 "i"
+#define PRIiFAST16 __PRIPTR_PREFIX "i"
+#define PRIiFAST32 __PRIPTR_PREFIX "i"
+#define PRIiFAST64 __PRI64_PREFIX "i"
+
+/* Octal notation. */
+#define PRIo8 "o"
+#define PRIo16 "o"
+#define PRIo32 "o"
+#define PRIo64 __PRI64_PREFIX "o"
+
+#define PRIoLEAST8 "o"
+#define PRIoLEAST16 "o"
+#define PRIoLEAST32 "o"
+#define PRIoLEAST64 __PRI64_PREFIX "o"
+
+#define PRIoFAST8 "o"
+#define PRIoFAST16 __PRIPTR_PREFIX "o"
+#define PRIoFAST32 __PRIPTR_PREFIX "o"
+#define PRIoFAST64 __PRI64_PREFIX "o"
+
+/* Unsigned integers. */
+#define PRIu8 "u"
+#define PRIu16 "u"
+#define PRIu32 "u"
+#define PRIu64 __PRI64_PREFIX "u"
+
+#define PRIuLEAST8 "u"
+#define PRIuLEAST16 "u"
+#define PRIuLEAST32 "u"
+#define PRIuLEAST64 __PRI64_PREFIX "u"
+
+#define PRIuFAST8 "u"
+#define PRIuFAST16 __PRIPTR_PREFIX "u"
+#define PRIuFAST32 __PRIPTR_PREFIX "u"
+#define PRIuFAST64 __PRI64_PREFIX "u"
+
+/* lowercase hexadecimal notation. */
+#define PRIx8 "x"
+#define PRIx16 "x"
+#define PRIx32 "x"
+#define PRIx64 __PRI64_PREFIX "x"
+
+#define PRIxLEAST8 "x"
+#define PRIxLEAST16 "x"
+#define PRIxLEAST32 "x"
+#define PRIxLEAST64 __PRI64_PREFIX "x"
+
+#define PRIxFAST8 "x"
+#define PRIxFAST16 __PRIPTR_PREFIX "x"
+#define PRIxFAST32 __PRIPTR_PREFIX "x"
+#define PRIxFAST64 __PRI64_PREFIX "x"
+
+/* Binary notation */
+#define PRIX8 "X"
+#define PRIX16 "X"
+#define PRIX32 "X"
+#define PRIX64 __PRI64_PREFIX "X"
+
+#define PRIXLEAST8 "X"
+#define PRIXLEAST16 "X"
+#define PRIXLEAST32 "X"
+#define PRIXLEAST64 __PRI64_PREFIX "X"
+
+#define PRIXFAST8 "X"
+#define PRIXFAST16 __PRIPTR_PREFIX "X"
+#define PRIXFAST32 __PRIPTR_PREFIX "X"
+#define PRIXFAST64 __PRI64_PREFIX "X"
+
+/* Macros for printing `intmax_t' and `uintmax_t'. */
+#define PRIdMAX __PRI64_PREFIX "d"
+#define PRIiMAX __PRI64_PREFIX "i"
+#define PRIoMAX __PRI64_PREFIX "o"
+#define PRIuMAX __PRI64_PREFIX "u"
+#define PRIxMAX __PRI64_PREFIX "x"
+#define PRIXMAX __PRI64_PREFIX "X"
+
+/* Macros for printing `intptr_t' and `uintptr_t'. */
+#define PRIdPTR __PRIPTR_PREFIX "d"
+#define PRIiPTR __PRIPTR_PREFIX "i"
+#define PRIoPTR __PRIPTR_PREFIX "o"
+#define PRIuPTR __PRIPTR_PREFIX "u"
+#define PRIxPTR __PRIPTR_PREFIX "x"
+#define PRIXPTR __PRIPTR_PREFIX "X"
+
#if defined(DEBUG)
enum serial_dev {
/* only the NS16550A and compatible at the moment */
diff --git a/include/apos/sp_tree.h b/include/apos/sp_tree.h
index fe02e91..65e4e89 100644
--- a/include/apos/sp_tree.h
+++ b/include/apos/sp_tree.h
@@ -1,6 +1,8 @@
#ifndef SP_TREE_H
#define SP_TREE_H
+#include <apos/types.h>
+
#define sp_root(r) ((r)->sp_r)
#define sp_left(n) ((n)->left)
#define sp_right(n) ((n)->right)
@@ -11,7 +13,7 @@
#define sp_has_gparen(n) (sp_paren(n) && sp_gparen(n))
struct sp_node {
- short hint;
+ int_fast16_t hint;
struct sp_node *left;
struct sp_node *right;
struct sp_node *parent;
diff --git a/include/apos/vmem.h b/include/apos/vmem.h
index 5b5037d..17f998d 100644
--- a/include/apos/vmem.h
+++ b/include/apos/vmem.h
@@ -8,8 +8,7 @@
vm_t alloc_uvmem(struct tcb *r, size_t size, vmflags_t flags);
vm_t alloc_fixed_uvmem(struct tcb *r, vm_t start, size_t size, vmflags_t flags);
-vm_t alloc_shared_uvmem(struct tcb *r, size_t size,
- vmflags_t flags);
+vm_t alloc_shared_uvmem(struct tcb *r, size_t size, vmflags_t flags);
vm_t ref_shared_uvmem(struct tcb *r1, struct tcb *r2, vm_t va, vmflags_t flags);
stat_t free_uvmem(struct tcb *r, vm_t a);
@@ -18,17 +17,17 @@ stat_t init_uvmem(struct tcb *r, vm_t base, vm_t top);
stat_t alloc_uvmem_wrapper(struct vm_branch *b, pm_t *offset, vm_t vaddr,
vmflags_t flags, enum mm_order order);
stat_t alloc_shared_wrapper(struct vm_branch *b, pm_t *offset, vm_t vaddr,
- vmflags_t flags, enum mm_order order);
+ vmflags_t flags, enum mm_order order);
stat_t free_uvmem_wrapper(struct vm_branch *b, pm_t *offset, vm_t vaddr,
vmflags_t flags, enum mm_order order);
#define map_allocd_region(b, start, bytes, flags) \
map_fill_region(b, &alloc_uvmem_wrapper, 0, start, bytes, flags)
-#define map_shared_region(b, start, bytes, flags)\
+#define map_shared_region(b, start, bytes, flags) \
map_fill_region(b, &alloc_shared_wrapper, 0, start, bytes, flags)
-#define unmap_freed_region(b, start, bytes, flags) \
+#define unmap_freed_region(b, start, bytes, flags) \
map_fill_region(b, &free_uvmem_wrapper, 0, start, bytes, flags)
#define vm_flags(x) ((x) & ~0xff)