summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/include/machine/rtems-bsd-kernel-space.h
diff options
context:
space:
mode:
Diffstat (limited to 'rtemsbsd/include/machine/rtems-bsd-kernel-space.h')
-rw-r--r--rtemsbsd/include/machine/rtems-bsd-kernel-space.h154
1 files changed, 150 insertions, 4 deletions
diff --git a/rtemsbsd/include/machine/rtems-bsd-kernel-space.h b/rtemsbsd/include/machine/rtems-bsd-kernel-space.h
index 09bcecf1..37bd701d 100644
--- a/rtemsbsd/include/machine/rtems-bsd-kernel-space.h
+++ b/rtemsbsd/include/machine/rtems-bsd-kernel-space.h
@@ -3,10 +3,12 @@
*
* @ingroup rtems_bsd_machine
*
- * @brief TODO.
+ * @brief RTEMS FreeBSD Kernel related machine settings and defines
*/
/*
+ * Copyright (c) 2020-2021 Chris Johns <chrisj@rtems.org>. All rights reserved.
+ *
* Copyright (c) 2009-2013 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
@@ -40,23 +42,82 @@
#ifndef _RTEMS_BSD_MACHINE_RTEMS_BSD_KERNEL_SPACE_H_
#define _RTEMS_BSD_MACHINE_RTEMS_BSD_KERNEL_SPACE_H_
-/* FIXME: Update Newlib */
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/*
+ * FreeBSD warning control
+ */
+#pragma GCC diagnostic ignored "-Wunused-function"
+#pragma GCC diagnostic ignored "-Wunused-value"
+#pragma GCC diagnostic ignored "-Wunused-variable"
+#pragma GCC diagnostic ignored "-Wunused-const-variable"
+#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
+
+/* FIXME: start: Update Newlib */
#define MSIZE 256
-/* FIXME: Update Newlib */
#define __GLOBL1(sym) __asm__(".globl " #sym)
#define __GLOBL(sym) __GLOBL1(sym)
#define O_CLOEXEC 0
-#define IO_NDELAY O_NONBLOCK
+
+/* FIXME: end: Update Newlib */
+
+#define FSEARCH O_SEARCH
+#define O_FSYNC FSYNC
+
+#define FMASK (FREAD|FWRITE|FAPPEND|FASYNC|FNONBLOCK|O_DIRECT)
+#define FCNTLFLAGS (FAPPEND|FASYNC|FNONBLOCK|O_DIRECT)
+#define FHASLOCK 0
+
+#define PIPE_NODIRECT
+
+#define SEEK_DATA 3 /* set file offset to next data past offset */
+#define SEEK_HOLE 4 /* set file offset to next hole past offset */
+#define L_SET SEEK_SET
+#define L_INCR SEEK_CUR
+#define L_XTND SEEK_END
+#define O_FSYNC FSYNC
+#define O_SHLOCK FSHLOCK
+#define O_EXLOCK FEXLOCK
+#define POSIX_FADV_NORMAL 0 /* no special treatment */
+#define POSIX_FADV_RANDOM 1 /* expect random page references */
+#define POSIX_FADV_SEQUENTIAL 2 /* expect sequential page references */
+#define POSIX_FADV_WILLNEED 3 /* will need these pages */
+#define POSIX_FADV_DONTNEED 4 /* dont need these pages */
+#define POSIX_FADV_NOREUSE 5 /* access data only once */
+
+/* Used in NFS common code */
+#define __LINUX_ERRNO_EXTENSIONS__ 1
#define __FreeBSD__ 1
/* General define to activate BSD kernel parts */
#define _KERNEL 1
+/*
+ * Various developer tracing options. See waf --help and --freebsd-options.
+ */
+#ifndef RTEMS_BSD_DESCRIP_TRACE
+ #define RTEMS_BSD_DESCRIP_TRACE (0)
+#endif
+#ifndef RTEMS_BSD_SYSCALL_TRACE
+ #define RTEMS_BSD_SYSCALL_TRACE (0)
+#endif
+#ifndef RTEMS_BSD_VFS_TRACE
+ #define RTEMS_BSD_VFS_TRACE (0)
+#endif
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#include <machine/rtems-bsd-version.h>
#include <machine/rtems-bsd-kernel-namespace.h>
+#include <sys/types.h>
#ifdef __cplusplus
extern "C" {
@@ -74,6 +135,8 @@ void rtems_bsd_assert_func(const char *file, int line, const char *func, const c
/* General definitions */
+#define MACHINE "rtems"
+
#define MACHINE_ARCH "rtems"
#define M_RTEMS_HEAP 0
@@ -95,9 +158,92 @@ void rtems_bsd_assert_func(const char *file, int line, const char *func, const c
#define EJUSTRETURN (-2) /* don't modify regs, just return */
#define ENOIOCTL (-3) /* ioctl not handled by this layer */
#define EDIRIOCTL (-4) /* do direct ioctl in GEOM */
+#define ERELOOKUP (-5) /* retry the directory lookup */
+
+/* error codes used in the NFS code */
+#define EBADRPC 72
+#define EPROGMISMATCH 75
+#define EAUTH 80
+#define ENOTCAPABLE 93
#define EDOOFUS __ELASTERROR
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+typedef unsigned short ushort; /* Sys V compatibility */
+typedef unsigned int uint; /* Sys V compatibility */
+
+typedef __UINT64_TYPE__ uoff_t;
+
+#define __LLONG_MAX __LONG_LONG_MAX__
+#define __OFF_MAX __LLONG_MAX
+#define OFF_MAX __OFF_MAX
+
+#define F_WAIT 0x010 /* Wait until lock is granted */
+#define F_FLOCK 0x020 /* Use flock(2) semantics for lock */
+#define F_POSIX 0x040 /* Use POSIX semantics for lock */
+#define F_REMOTE 0x080 /* Lock owner is remote NFS client */
+#define F_NOINTR 0x100 /* Ignore signals when waiting */
+
+#define _PC_ACL_EXTENDED 59
+#define _PC_ACL_PATH_MAX 60
+#define _PC_CAP_PRESENT 61
+#define _PC_INF_PRESENT 62
+#define _PC_MAC_PRESENT 63
+#define _PC_ACL_NFS4 64
+
+#define FFLAGS(oflags) ((oflags) + 1)
+#define OFLAGS(fflags) ((fflags) - 1)
+
+#define buffer_arena NULL
+extern struct vmem *rtems_bsd_transient_arena;
+#define transient_arena rtems_bsd_transient_arena
+
+struct uma_zone;
+extern struct uma_zone* ncl_pbuf_zone;
+struct uma_zone* pbuf_zsecond_create(char *name, int max);
+
+/*
+ * Device dev_t handling
+ */
+int rtems_bsd__major(dev_t _d);
+int rtems_bsd__minor(dev_t _d);
+dev_t rtems_bsd__makedev(int _M, int _m);
+#define major(d) rtems_bsd__major(d)
+#define minor(d) rtems_bsd__minor(d)
+#define makedev(M, m) rtems_bsd__makedev((M), (m))
+
+/*
+ * VM, avoid bringing the headers across
+ */
+#define VM_OBJECT_WLOCK(object)
+#define VM_OBJECT_WUNLOCK(object)
+
+/*
+ * From freebsd-oirg/sys/sys/dirent.h
+ */
+#define _GENERIC_DIRLEN(namlen) \
+ ((__offsetof(struct dirent, d_name) + (namlen) + 1 + 7) & ~7)
+#define _GENERIC_DIRSIZ(dp) _GENERIC_DIRLEN((dp)->d_namlen)
+
+/*
+ * From signalvar.h
+ */
+#define SIGISMEMBER(set, signo) (0)
+
+/*
+ * Special knote status bit to indicate the kn_fp is an iop.
+ */
+#define KN_FP_IS_IOP 0x10000000
+
+/*
+ * Ensure that padding bytes are zeroed and that the name is NUL-terminated.
+ */
+struct dirent;
+void dirent_terminate(struct dirent *dp);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */