diff options
Diffstat (limited to 'include/rtems/rtems_bsdnet_internal.h')
-rw-r--r-- | include/rtems/rtems_bsdnet_internal.h | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/include/rtems/rtems_bsdnet_internal.h b/include/rtems/rtems_bsdnet_internal.h new file mode 100644 index 0000000000..4de1b0bda6 --- /dev/null +++ b/include/rtems/rtems_bsdnet_internal.h @@ -0,0 +1,230 @@ +/* + * Declarations to fit FreeBSD to RTEMS. + * + ******************************************************************* + * WARNING * + * This file should *never* be included by any application program * + ******************************************************************* + */ + +#ifndef _RTEMS_RTEMS_BSDNET_INTERNAL_H +#define _RTEMS_RTEMS_BSDNET_INTERNAL_H + +#include <rtems.h> +#include <rtems/fs.h> +#include <rtems/bsd.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned int vm_offset_t; +typedef long long vm_ooffset_t; +typedef unsigned int vm_pindex_t; +typedef unsigned int vm_size_t; + +#define _BSD_OFF_T_ int32_t +#define _BSD_PID_T_ rtems_id +#define _BSD_VA_LIST_ char * + +/* make sure we get the network versions of these */ +#include <machine/types.h> +#include <machine/param.h> +#include <sys/cdefs.h> + +#include <sys/time.h> +#include <sys/ioctl.h> + +struct mdproc { + int md_flags; + int *md_regs; +}; + +/* + * Other RTEMS/BSD glue + */ +struct socket; +extern int soconnsleep (struct socket *so); +extern void soconnwakeup (struct socket *so); +#define splnet() 0 +#define splimp() 0 +#define splx(_s) do { (_s) = 0; (void) (_s); } while(0) + +/* to avoid warnings */ +void *memcpy(void *dest, const void *src, size_t n); +void *memset(void *s, int c, size_t n); + +#define ovbcopy(f,t,n) bcopy(f,t,n) +#define copyout(f,t,n) (memcpy(t,f,n),0) +#define copyin(f,t,n) (memcpy(t,f,n),0) + +#define random() rtems_bsdnet_random() +#define panic rtems_panic +#define suser(a,b) 0 + +#define microtime(tv) rtems_bsd_microtime(tv) + +#define hz rtems_bsdnet_ticks_per_second +#define tick rtems_bsdnet_microseconds_per_tick + +#define log rtems_bsdnet_log + +/* + * Since we can't have two sys/types.h files, we'll hack around + * and copy the contents of the BSD sys/types.h to here.... + */ + +typedef u_int64_t u_quad_t; /* quads */ +typedef int64_t quad_t; +typedef quad_t * qaddr_t; + +typedef void __sighandler_t(int); +typedef __sighandler_t *sig_t; /* type of pointer to a signal function */ +#define NSIG 32 +#if (__RTEMS_HAVE_DECL_SIGALTSTACK__ == 0) +struct sigaltstack { + char *ss_sp; /* signal stack base */ + int ss_size; /* signal stack length */ + int ss_flags; /* SS_DISABLE and/or SS_ONSTACK */ +}; +#endif + +#ifdef _KERNEL +typedef int boolean_t; +#endif + +#ifndef _POSIX_SOURCE +/* + * minor() gives a cookie instead of an index since we don't want to + * change the meanings of bits 0-15 or waste time and space shifting + * bits 16-31 for devices that don't use them. + */ +#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */ +#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */ +#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) /* create dev_t */ +#endif + +#include <rtems/endian.h> + +typedef quad_t rlim_t; /* resource limit */ +typedef u_int32_t fixpt_t; /* fixed point number */ + +/* + * Forward structure declarations for function prototypes. We include the + * common structures that cross subsystem boundaries here; others are mostly + * used in the same place that the structure is defined. + */ +struct proc; +struct pgrp; +struct ucred; +struct rusage; +struct buf; +struct tty; +struct uio; +struct rtems_bsdnet_ifconfig; + +/* + * Redo kernel memory allocation + */ +#define malloc(size,type,flags) rtems_bsdnet_malloc(size,type,flags) +#define free(ptr,type) rtems_bsdnet_free(ptr,type) +#define timeout(ftn,arg,ticks) rtems_bsdnet_timeout(ftn,arg,ticks) + +#define M_NOWAIT 0x0001 +void *rtems_bsdnet_malloc (size_t size, int type, int flags); +void rtems_bsdnet_free (void *addr, int type); + +void rtems_bsdnet_semaphore_obtain (void); +void rtems_bsdnet_semaphore_release (void); +void rtems_bsdnet_semaphore_obtain_recursive (uint32_t nest_count); +uint32_t rtems_bsdnet_semaphore_release_recursive (void); +void rtems_bsdnet_schednetisr (int n); +int rtems_bsdnet_parse_driver_name (const struct rtems_bsdnet_ifconfig *config, char **namep); + +static inline unsigned long rtems_bsdnet_seconds_since_boot(void) +{ + return (unsigned long) rtems_clock_get_uptime_seconds() + 1UL; +} + +unsigned long rtems_bsdnet_random (void); + +rtems_id rtems_bsdnet_newproc ( + char *name, + int stacksize, + void (*entry)(void *), + void *arg +); + +#ifdef RTEMS_SMP +/* As rtems_bsdnet_newproc() but with ability to set CPU affinity too */ +rtems_id rtems_bsdnet_newproc_affinity ( + char *name, + int stacksize, + void (*entry)(void *), + void *arg, + const cpu_set_t *set, + const size_t setsize +); +#endif + +rtems_status_code rtems_bsdnet_event_receive ( + rtems_event_set event_in, + rtems_option option_set, + rtems_interval ticks, + rtems_event_set *event_out +); + +static inline rtems_status_code rtems_bsdnet_event_send ( + rtems_id task_id, + rtems_event_set event_in +) +{ + return rtems_event_system_send (task_id, event_in); +} + +/* + * Network configuration + */ +extern int rtems_bsdnet_ticks_per_second; +extern int rtems_bsdnet_microseconds_per_tick; +extern struct in_addr rtems_bsdnet_log_host_address; +extern char *rtems_bsdnet_domain_name; + +/* + * Internal IOCTL command + */ +#define SIO_RTEMS_SHOW_STATS _IO('i', 250) + +/* + * Some extra prototypes + */ +int sethostname (const char *name, size_t namelen); +void domaininit (void *); +void ifinit (void *); +void ipintr (void); +void arpintr (void); +int socket (int, int, int); +int ioctl (int, ioctl_command_t, ...); + +/* + * Events used by networking routines. + * Everything will break if the application + * tries to use these events or if the `sleep' + * events are equal to any of the NETISR * events. + */ +#define SBWAIT_EVENT RTEMS_EVENT_SYSTEM_NETWORK_SBWAIT +#define SOSLEEP_EVENT RTEMS_EVENT_SYSTEM_NETWORK_SOSLEEP +#define NETISR_IP_EVENT (1L << NETISR_IP) +#define NETISR_ARP_EVENT (1L << NETISR_ARP) +#define NETISR_EVENTS (NETISR_IP_EVENT|NETISR_ARP_EVENT) +#if (SBWAIT_EVENT & SOSLEEP_EVENT & NETISR_EVENTS & RTEMS_EVENT_SYSTEM_NETWORK_CLOSE) +# error "Network event conflict" +#endif + +struct socket *rtems_bsdnet_fdToSocket(int fd); + +#ifdef __cplusplus +} +#endif + +#endif /* _RTEMS_RTEMS_BSDNET_INTERNAL_H */ |