From 148cde5e982950ad5836fa96baa466de842e1c14 Mon Sep 17 00:00:00 2001 From: patacongo Date: Tue, 27 Feb 2007 21:17:21 +0000 Subject: Finally, a clean SDCC compile git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@20 42af7a65-404d-4744-a932-0658087f49c3 --- nuttx/include/assert.h | 4 +- nuttx/include/errno.h | 8 +-- nuttx/include/mqueue.h | 5 +- nuttx/include/nuttx/arch.h | 20 ++++---- nuttx/include/nuttx/compiler.h | 104 +++++++++++++++++++++++++++++++++++++- nuttx/include/nuttx/fs.h | 76 ++++++++++++++-------------- nuttx/include/nuttx/irq.h | 4 +- nuttx/include/nuttx/kmalloc.h | 8 +-- nuttx/include/nuttx/lib.h | 8 +-- nuttx/include/nuttx/os_external.h | 2 +- nuttx/include/pthread.h | 59 +++++++++++---------- nuttx/include/queue.h | 46 +++++++++-------- nuttx/include/sched.h | 53 ++++++++++--------- nuttx/include/semaphore.h | 18 +++---- nuttx/include/signal.h | 5 +- nuttx/include/stdio.h | 30 +++++------ nuttx/include/stdlib.h | 40 +++++++++------ nuttx/include/string.h | 4 +- nuttx/include/unistd.h | 2 +- nuttx/include/wdog.h | 2 +- 20 files changed, 308 insertions(+), 190 deletions(-) (limited to 'nuttx/include') diff --git a/nuttx/include/assert.h b/nuttx/include/assert.h index 022e343ca..4222aa2d8 100644 --- a/nuttx/include/assert.h +++ b/nuttx/include/assert.h @@ -106,8 +106,8 @@ extern "C" { #endif #ifdef __GNUC__ -EXTERN void up_assert(const ubyte *fileName, int lineNum); -EXTERN void up_assert_code(const ubyte *fileName, int lineNum, +EXTERN void up_assert(FAR const ubyte *filename, int linenum); +EXTERN void up_assert_code(FAR const ubyte *filename, int linenum, int error_code); #else EXTERN void up_assert(void); diff --git a/nuttx/include/errno.h b/nuttx/include/errno.h index d189ccaa0..6f362cfc9 100644 --- a/nuttx/include/errno.h +++ b/nuttx/include/errno.h @@ -190,13 +190,7 @@ extern "C" { /* Return a pointer to the thread specifid errno */ -extern int *get_errno_ptr(void); - -#ifndef CONFIG_CAN_CAST_POINTERS -/* Return the value ERROR cast to (void*) */ - -extern void *get_errorptr(void); -#endif +extern FAR int *get_errno_ptr(void); #undef EXTERN #if defined(__cplusplus) diff --git a/nuttx/include/mqueue.h b/nuttx/include/mqueue.h index 3e54ba6e8..7e0966d25 100644 --- a/nuttx/include/mqueue.h +++ b/nuttx/include/mqueue.h @@ -78,7 +78,7 @@ struct sigevent { /* Message queue descriptor */ -typedef struct mq_des *mqd_t; +typedef FAR struct mq_des *mqd_t; /************************************************************ * Global Variables @@ -95,8 +95,7 @@ extern "C" { #define EXTERN extern #endif -EXTERN mqd_t mq_open(const char *mq_name, - int oflags, ... ); +EXTERN mqd_t mq_open(const char *mq_name, int oflags, ... ); EXTERN int mq_close(mqd_t mqdes ); EXTERN int mq_unlink(const char *mq_name ); EXTERN int mq_send(mqd_t mqdes, const void *msg, diff --git a/nuttx/include/nuttx/arch.h b/nuttx/include/nuttx/arch.h index 5ccba7c20..11e6a96fc 100644 --- a/nuttx/include/nuttx/arch.h +++ b/nuttx/include/nuttx/arch.h @@ -127,7 +127,7 @@ EXTERN void up_idle(void); * ************************************************************/ -EXTERN void up_initial_state(_TCB *tcb); +EXTERN void up_initial_state(FAR _TCB *tcb); /************************************************************ * Name: up_create_stack @@ -150,7 +150,7 @@ EXTERN void up_initial_state(_TCB *tcb); * must be allocated. ************************************************************/ -EXTERN STATUS up_create_stack(_TCB *tcb, size_t stack_size); +EXTERN STATUS up_create_stack(FAR _TCB *tcb, size_t stack_size); /************************************************************ * Name: up_use_stack @@ -173,7 +173,7 @@ EXTERN STATUS up_create_stack(_TCB *tcb, size_t stack_size); * ************************************************************/ -EXTERN STATUS up_use_stack(_TCB *tcb, void *stack, size_t stack_size); +EXTERN STATUS up_use_stack(FAR _TCB *tcb, FAR void *stack, size_t stack_size); /************************************************************ * Name: up_release_stack @@ -184,7 +184,7 @@ EXTERN STATUS up_use_stack(_TCB *tcb, void *stack, size_t stack_size); * ************************************************************/ -EXTERN void up_release_stack(_TCB *dtcb); +EXTERN void up_release_stack(FAR _TCB *dtcb); /************************************************************ * Name: up_unblock_task @@ -202,7 +202,7 @@ EXTERN void up_release_stack(_TCB *dtcb); * ************************************************************/ -EXTERN void up_unblock_task(_TCB *tcb); +EXTERN void up_unblock_task(FAR _TCB *tcb); /************************************************************ * Name: up_block_task @@ -224,7 +224,7 @@ EXTERN void up_unblock_task(_TCB *tcb); * ************************************************************/ -EXTERN void up_block_task(_TCB *tcb, tstate_t task_state); +EXTERN void up_block_task(FAR _TCB *tcb, tstate_t task_state); /************************************************************ * Name: up_release_pending @@ -259,7 +259,7 @@ EXTERN void up_release_pending(void); * ************************************************************/ -EXTERN void up_reprioritize_rtr(_TCB *tcb, ubyte priority); +EXTERN void up_reprioritize_rtr(FAR _TCB *tcb, ubyte priority); /************************************************************ * Name: _exit @@ -314,7 +314,7 @@ EXTERN void up_reprioritize_rtr(_TCB *tcb, ubyte priority); * ************************************************************/ -EXTERN void up_schedule_sigaction(_TCB *tcb, sig_deliver_t sigdeliver); +EXTERN void up_schedule_sigaction(FAR _TCB *tcb, sig_deliver_t sigdeliver); /************************************************************ * Name: up_allocate_heap @@ -328,7 +328,7 @@ EXTERN void up_schedule_sigaction(_TCB *tcb, sig_deliver_t sigdeliver); ************************************************************/ #ifndef CONFIG_HEAP_BASE -EXTERN void up_allocate_heap(void **heap_start, size_t *heap_size); +EXTERN void up_allocate_heap(FAR void **heap_start, size_t *heap_size); #endif /************************************************************ @@ -401,7 +401,7 @@ EXTERN void sched_process_timer(void); * ***********************************************************/ -EXTERN void irq_dispatch(int irq, void *context); +EXTERN void irq_dispatch(int irq, FAR void *context); /************************************************************ * Debug interfaces exported by the architecture-specific diff --git a/nuttx/include/nuttx/compiler.h b/nuttx/include/nuttx/compiler.h index b5eafe8d9..f15902171 100644 --- a/nuttx/include/nuttx/compiler.h +++ b/nuttx/include/nuttx/compiler.h @@ -44,26 +44,128 @@ * Definitions ************************************************************/ +/* GCC-specific definitions *********************************/ + #ifdef __GNUC__ + +/* GCC supports weak symbols which can be used to reduce + * code size because unnecessary "weak" functions can be + * excluded from the link. + */ + +# define CONFIG_HAVE_WEAKFUNCTIONS 1 # define weak_alias(name, aliasname) \ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); # define weak_function __attribute__ ((weak)) # define weak_const_function __attribute__ ((weak, __const__)) + +/* The noreturn attribute informs GCC that the function will + * not return. + */ + # define noreturn_function __attribute__ ((noreturn)) + +/* GCC does not support the reentrant attribute */ + # define reentrant_function -#elif defined(__SDCC__) + +/* GCC has does not use storage classes to qualify addressing */ + +# define FAR +# define NEAR + +/* Select the large, 32-bit addressing model */ + +# undef CONFIG_SMALL_MEMORY + +/* GCC supports inlined functions */ + +# define CONFIG_HAVE_INLINE 1 + +/* GCC supports both types double and long long */ + +# define CONFIG_HAVE_DOUBLE 1 +# define CONFIG_HAVE_LONG_LONG 1 + +/* Structures and unions can be assigned and passed as values */ + +# define CONFIG_CAN_PASS_STRUCTS 1 + +/* SDCC-specific definitions ********************************/ + +#elif defined(SDCC) + +/* Disable warnings for unused function arguments */ + # pragma disable_warning 85 + +/* SDCC does not support weak symbols */ + +# undef CONFIG_HAVE_WEAKFUNCTIONS # define weak_alias(name, aliasname) # define weak_function # define weak_const_function + +/* SDCC does not support the noreturn attribute */ + # define noreturn_function + +/* The reentrant attribute informs SDCC that the function + * must be reentrant. In this case, SDCC will store input + * arguments on the stack to support reentrancy. + */ + # define reentrant_function __reentrant + +/* It is assumed that the system is build using the small + * data model with storage defaulting to internal RAM. + * The NEAR storage class can also be used to address data + * in internal RAM; FAR can be used to address data in + * external RAM. + */ + +#define FAR __xdata +#define NEAR __data + +/* Select small, 16-bit address model */ + +# define CONFIG_SMALL_MEMORY 1 + +/* SDCC does not support inline functions */ + +# undef CONFIG_HAVE_INLINE + +/* SDCC does not support type long long or type double */ + +# undef CONFIG_HAVE_LONG_LONG +# undef CONFIG_HAVE_DOUBLE + +/* Structures and unions cannot be passed as values or used + * in assignments. + */ + +# undef CONFIG_CAN_PASS_STRUCTS + +/* Unknown compiler *****************************************/ + #else + +# undef CONFIG_HAVE_WEAKFUNCTIONS # define weak_alias(name, aliasname) # define weak_function # define weak_const_function # define noreturn_function # define reentrant_function + +# define FAR +# define NEAR + +# undef CONFIG_SMALL_MEMORY +# undef CONFIG_HAVE_INLINE +# undef CONFIG_HAVE_LONG_LONG +# undef CONFIG_HAVE_DOUBLE +# undef CONFIG_CAN_PASS_STRUCTS + #endif /************************************************************ diff --git a/nuttx/include/nuttx/fs.h b/nuttx/include/nuttx/fs.h index 085c050ef..7e0eb8980 100644 --- a/nuttx/include/nuttx/fs.h +++ b/nuttx/include/nuttx/fs.h @@ -60,29 +60,27 @@ struct file; struct file_operations { - int (*open)(struct file *); - int (*close)(struct file *); -// off_t (*llseek)(struct file *, off_t, int); - ssize_t (*read)(struct file *, char *, size_t); - ssize_t (*write)(struct file *, const char *, size_t); -// unsigned int (*poll)(struct file *, struct poll_table_struct *); - int (*ioctl)(struct file *, int, unsigned long); + int (*open)(FAR struct file *); + int (*close)(FAR struct file *); + ssize_t (*read)(FAR struct file *, char *, size_t); + ssize_t (*write)(FAR struct file *, const char *, size_t); + int (*ioctl)(FAR struct file *, int, unsigned long); }; /* This structure represents one inode in the Nuttx psuedo-file system */ struct inode { - struct inode *i_peer; /* Pointer to inode at same level */ - struct inode *i_child; /* Pointer to inode at lower level */ - struct file_operations *i_ops; /* Driver file operations for inode */ - sint16 i_crefs; /* References to inode */ - uint16 i_flags; /* flags for inode */ + FAR struct inode *i_peer; /* Pointer to inode at same level */ + FAR struct inode *i_child; /* Pointer to inode at lower level */ + struct file_operations *i_ops; /* Driver file operations for inode */ + sint16 i_crefs; /* References to inode */ + uint16 i_flags; /* flags for inode */ #ifdef CONFIG_FILE_MODE - mode_t i_mode; /* Access mode flags */ + mode_t i_mode; /* Access mode flags */ #endif - void *i_private; /* Driver private data */ - char i_name[1]; /* Name of inode (variable length) */ + FAR void *i_private; /* Driver private data */ + char i_name[1]; /* Name of inode (variable length) */ }; #define FSNODE_SIZE(n) (sizeof(struct inode) + (n)) @@ -94,9 +92,9 @@ struct inode struct file { - int f_oflags; /* Open mode flags */ - off_t f_pos; /* File position */ - struct inode *f_inode; /* Driver interface */ + int f_oflags; /* Open mode flags */ + off_t f_pos; /* File position */ + FAR struct inode *f_inode; /* Driver interface */ }; /* This defines a list of files indexed by the file descriptor */ @@ -119,20 +117,20 @@ struct filelist #if CONFIG_NFILE_STREAMS > 0 struct file_struct { - int fs_filedes; /* File descriptor associated with stream */ - mode_t fs_oflags; /* Open mode flags */ + int fs_filedes; /* File descriptor associated with stream */ + mode_t fs_oflags; /* Open mode flags */ #if CONFIG_NUNGET_CHARS > 0 - uint8 fs_nungotten; /* The number of characters buffered for ungetc */ - unsigned char fs_ungotten[CONFIG_NUNGET_CHARS]; + uint8 fs_nungotten; /* The number of characters buffered for ungetc */ + unsigned char fs_ungotten[CONFIG_NUNGET_CHARS]; #endif #if CONFIG_STDIO_BUFFER_SIZE > 0 - sem_t fs_sem; /* For thread safety */ - pid_t fs_holder; /* Holder of sem */ - int fs_counts; /* Number of times sem is held */ - unsigned char *fs_bufstart; /* Pointer to start of buffer */ - unsigned char *fs_bufend; /* Pointer to 1 past end of buffer */ - unsigned char *fs_bufpos; /* Current position in buffer */ - unsigned char *fs_bufread; /* Pointer to 1 past last buffered read char. */ + sem_t fs_sem; /* For thread safety */ + pid_t fs_holder; /* Holder of sem */ + int fs_counts; /* Number of times sem is held */ + FAR unsigned char *fs_bufstart; /* Pointer to start of buffer */ + FAR unsigned char *fs_bufend; /* Pointer to 1 past end of buffer */ + FAR unsigned char *fs_bufpos; /* Current position in buffer */ + FAR unsigned char *fs_bufread; /* Pointer to 1 past last buffered read char. */ #endif }; @@ -170,15 +168,15 @@ EXTERN STATUS unregister_inode(const char *path); /* fs_open.c ************************************************/ -EXTERN int inode_checkflags(struct inode *inode, int oflags); +EXTERN int inode_checkflags(FAR struct inode *inode, int oflags); /* fs_files.c ***********************************************/ #if CONFIG_NFILE_DESCRIPTORS >0 -EXTERN struct filelist *files_alloclist(void); -EXTERN int files_addreflist(struct filelist *list); -EXTERN int files_releaselist(struct filelist *list); -EXTERN int files_dup(struct file *filep1, struct file *filep2); +EXTERN FAR struct filelist *files_alloclist(void); +EXTERN int files_addreflist(FAR struct filelist *list); +EXTERN int files_releaselist(FAR struct filelist *list); +EXTERN int files_dup(FAR struct file *filep1, FAR struct file *filep2); #endif /* lib_fopen.c **********************************************/ @@ -186,16 +184,16 @@ EXTERN int files_dup(struct file *filep1, struct file *filep2); /* Used by the OS to clone stdin, stdout, stderr */ #if CONFIG_NFILE_STREAMS > 0 -EXTERN struct file_struct *lib_fdopen(int fd, - const char *mode, - struct filelist *flist, - struct streamlist *slist); +EXTERN FAR struct file_struct *lib_fdopen(int fd, + const char *mode, + FAR struct filelist *flist, + FAR struct streamlist *slist); #endif /* lib_fflush.c *********************************************/ #if CONFIG_NFILE_STREAMS > 0 -EXTERN void lib_flushall(struct streamlist *list); +EXTERN void lib_flushall(FAR struct streamlist *list); #endif /* drivers **************************************************/ diff --git a/nuttx/include/nuttx/irq.h b/nuttx/include/nuttx/irq.h index 82a34c760..a806adb15 100644 --- a/nuttx/include/nuttx/irq.h +++ b/nuttx/include/nuttx/irq.h @@ -60,9 +60,9 @@ /* This struct defines the way the registers are stored */ #ifndef __ASSEMBLY__ -typedef int (*xcpt_t)(int irq, void *context); +typedef int (*xcpt_t)(int irq, FAR void *context); typedef int (*swint_t)(int code, int parm2, int parm3, - void *context); + FAR void *context); #endif /* Now include architecture-specific types */ diff --git a/nuttx/include/nuttx/kmalloc.h b/nuttx/include/nuttx/kmalloc.h index 5a48f33d2..29678ebc9 100644 --- a/nuttx/include/nuttx/kmalloc.h +++ b/nuttx/include/nuttx/kmalloc.h @@ -63,28 +63,28 @@ extern "C" { # include # define kmalloc(s) malloc(s) #else -KMALLOC_EXTERN void *kmalloc(size_t); +KMALLOC_EXTERN FAR void *kmalloc(size_t); #endif #ifndef CONFIG_ARCH_KZMALLOC # include # define kzmalloc(s) zalloc(s) #else -KMALLOC_EXTERN void *kzalloc(size_t); +KMALLOC_EXTERN FAR void *kzalloc(size_t); #endif #ifndef CONFIG_ARCH_KFREE # include # define kfree(p) free(p) #else -KMALLOC_EXTERN void kfree(void*); +KMALLOC_EXTERN void kfree(FAR void*); #endif /* Functions defined in os_list.c ***************************/ /* Handles memory freed from an interrupt handler */ -KMALLOC_EXTERN void sched_free(void *address); +KMALLOC_EXTERN void sched_free(FAR void *address); #undef KMALLOC_EXTERN #if defined(__cplusplus) diff --git a/nuttx/include/nuttx/lib.h b/nuttx/include/nuttx/lib.h index 52f506897..cca174aa3 100644 --- a/nuttx/include/nuttx/lib.h +++ b/nuttx/include/nuttx/lib.h @@ -64,11 +64,11 @@ extern "C" { /* Functions contained in lib_init.c ************************/ -EXTERN void weak_function lib_initialize(void); +EXTERN void weak_function lib_initialize(void); #if CONFIG_NFILE_STREAMS > 0 -EXTERN struct streamlist *lib_alloclist(void); -EXTERN void lib_addreflist(struct streamlist *list); -EXTERN void lib_releaselist(struct streamlist *list); +EXTERN FAR struct streamlist *lib_alloclist(void); +EXTERN void lib_addreflist(FAR struct streamlist *list); +EXTERN void lib_releaselist(FAR struct streamlist *list); #endif #undef EXTERN diff --git a/nuttx/include/nuttx/os_external.h b/nuttx/include/nuttx/os_external.h index 6d96b5afb..1d475d84e 100644 --- a/nuttx/include/nuttx/os_external.h +++ b/nuttx/include/nuttx/os_external.h @@ -75,7 +75,7 @@ EXTERN void os_start(void); /* OS entry point called by boot logic */ /* Functions contained in mm_init.c *************************/ -EXTERN void mm_initialize(void *heap_start, size_t heap_size); +EXTERN void mm_initialize(FAR void *heap_start, size_t heap_size); #undef EXTERN #ifdef __cplusplus diff --git a/nuttx/include/pthread.h b/nuttx/include/pthread.h index 12f0d5365..ad907cf55 100644 --- a/nuttx/include/pthread.h +++ b/nuttx/include/pthread.h @@ -41,6 +41,7 @@ ************************************************************/ #include /* Default settings */ +#include /* Compiler settings */ #include /* Needed for general types */ #include /* Needed for sem_t */ #include /* Needed for struct timespec */ @@ -85,11 +86,7 @@ /* Thread return value when a pthread is canceled */ -#ifdef CONFIG_CAN_CAST_POINTERS -# define PTHREAD_CANCELED ((void*)ERROR) -#else -# define PTHREAD_CANCELED ((void*)pthread_create) -#endif +# define PTHREAD_CANCELED ((FAR void*)ERROR) /************************************************************ * Global Type Declarations @@ -107,7 +104,7 @@ extern "C" { *----------------------------------------------------------*/ typedef int pthread_key_t; -typedef void *pthread_addr_t; +typedef FAR void *pthread_addr_t; typedef pthread_addr_t any_t; typedef pthread_addr_t (*pthread_startroutine_t)(pthread_addr_t); @@ -115,10 +112,10 @@ typedef pthread_startroutine_t pthread_func_t; struct pthread_addr_s { - unsigned long stacksize; /* Size of the stack allocated for the pthead */ - short priority; /* Priority of the pthread */ - ubyte policy; /* Pthread scheduler policy */ - ubyte inheritsched; /* Inherit parent prio/policy? */ + size_t stacksize; /* Size of the stack allocated for the pthead */ + short priority; /* Priority of the pthread */ + ubyte policy; /* Pthread scheduler policy */ + ubyte inheritsched; /* Inherit parent prio/policy? */ }; typedef struct pthread_addr_s pthread_attr_t; @@ -173,8 +170,10 @@ EXTERN int pthread_attr_destroy(pthread_attr_t *attr); * Set or obtain the default scheduling algorithm *----------------------------------------------------------*/ -EXTERN int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy); -EXTERN int pthread_attr_getschedpolicy(pthread_attr_t *attr, int *policy); +EXTERN int pthread_attr_setschedpolicy(pthread_attr_t *attr, + int policy); +EXTERN int pthread_attr_getschedpolicy(pthread_attr_t *attr, + int *policy); EXTERN int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param); EXTERN int pthread_attr_getschedparam(pthread_attr_t *attr, @@ -188,8 +187,10 @@ EXTERN int pthread_attr_getinheritsched(const pthread_attr_t *attr, * Set or obtain the default stack size *----------------------------------------------------------*/ -EXTERN int pthread_attr_setstacksize(pthread_attr_t *attr, long stacksize); -EXTERN int pthread_attr_getstacksize(pthread_attr_t *attr, long *stackaddr); +EXTERN int pthread_attr_setstacksize(pthread_attr_t *attr, + long stacksize); +EXTERN int pthread_attr_getstacksize(pthread_attr_t *attr, + long *stackaddr); /*----------------------------------------------------------* * To create a thread object and runnable thread, a routine @@ -200,7 +201,8 @@ EXTERN int pthread_attr_getstacksize(pthread_attr_t *attr, long *stackaddr); * specify details about the kind of thread being created. *----------------------------------------------------------*/ -EXTERN int pthread_create(pthread_t *thread, pthread_attr_t *attr, +EXTERN int pthread_create(pthread_t *thread, + pthread_attr_t *attr, pthread_startroutine_t startRoutine, pthread_addr_t arg); @@ -216,7 +218,7 @@ EXTERN int pthread_detach(pthread_t thread); * execution of another thread. *----------------------------------------------------------*/ -EXTERN void pthread_exit(pthread_addr_t pvValue) noreturn_function; +EXTERN void pthread_exit(pthread_addr_t value) noreturn_function; EXTERN int pthread_cancel(pthread_t thread); EXTERN int pthread_setcancelstate(int state, int *oldstate); EXTERN void pthread_testcancel(void); @@ -226,7 +228,8 @@ EXTERN void pthread_testcancel(void); * the return value of the thread. *----------------------------------------------------------*/ -EXTERN int pthread_join(pthread_t thread, pthread_addr_t *ppvValue); +EXTERN int pthread_join(pthread_t thread, + pthread_addr_t *value); /*----------------------------------------------------------* * A thread may tell the scheduler that its processor can be @@ -245,7 +248,8 @@ EXTERN void pthread_yield(void); * Thread scheduling parameters *----------------------------------------------------------*/ -EXTERN int pthread_getschedparam(pthread_t thread, int *policy, +EXTERN int pthread_getschedparam(pthread_t thread, + int *policy, struct sched_param *param); EXTERN int pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param); @@ -255,9 +259,9 @@ EXTERN int pthread_setschedparam(pthread_t thread, int policy, *----------------------------------------------------------*/ EXTERN int pthread_key_create(pthread_key_t *key, - void (*destructor)(void*)); -EXTERN int pthread_setspecific(pthread_key_t key, void *value); -EXTERN void *pthread_getspecific(pthread_key_t key); + FAR void (*destructor)(FAR void*)); +EXTERN int pthread_setspecific(pthread_key_t key, FAR void *value); +EXTERN FAR void *pthread_getspecific(pthread_key_t key); EXTERN int pthread_key_delete(pthread_key_t key); /*----------------------------------------------------------* @@ -294,7 +298,8 @@ EXTERN int pthread_condattr_destroy(pthread_condattr_t *attr); * A thread can create and delete condition variables. *----------------------------------------------------------*/ -EXTERN int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *attr); +EXTERN int pthread_cond_init(pthread_cond_t *cond, + pthread_condattr_t *attr); EXTERN int pthread_cond_destroy(pthread_cond_t *cond); /*----------------------------------------------------------* @@ -302,21 +307,23 @@ EXTERN int pthread_cond_destroy(pthread_cond_t *cond); *----------------------------------------------------------*/ EXTERN int pthread_cond_broadcast(pthread_cond_t *cond); -EXTERN int pthread_cond_signal(pthread_cond_t *dond); +EXTERN int pthread_cond_signal(pthread_cond_t *cond); /*----------------------------------------------------------* * A thread can wait for a condition variable to be signalled * or broadcast. *----------------------------------------------------------*/ -EXTERN int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); +EXTERN int pthread_cond_wait(pthread_cond_t *cond, + pthread_mutex_t *mutex); /*----------------------------------------------------------* * A thread can perform a timed wait on a condition variable. *----------------------------------------------------------*/ -EXTERN int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, - const struct timespec *abstime); +EXTERN int pthread_cond_timedwait(pthread_cond_t *cond, + pthread_mutex_t *mutex, + const struct timespec *abstime); #undef EXTERN #ifdef __cplusplus diff --git a/nuttx/include/queue.h b/nuttx/include/queue.h index 17f4ddec0..9e45672df 100644 --- a/nuttx/include/queue.h +++ b/nuttx/include/queue.h @@ -58,25 +58,28 @@ struct sq_entry_s { - struct sq_entry_s *flink; + FAR struct sq_entry_s *flink; }; typedef struct sq_entry_s sq_entry_t; struct dq_entry_s { - struct dq_entry_s *flink, *blink; + FAR struct dq_entry_s *flink; + FAR struct dq_entry_s *blink; }; typedef struct dq_entry_s dq_entry_t; struct sq_queue_s { - sq_entry_t *head, *tail; + FAR sq_entry_t *head; + FAR sq_entry_t *tail; }; typedef struct sq_queue_s sq_queue_t; struct dq_queue_s { - dq_entry_t *head, *tail; + FAR dq_entry_t *head; + FAR dq_entry_t *tail; }; typedef struct dq_queue_s dq_queue_t; @@ -91,23 +94,24 @@ extern "C" { #define EXTERN extern #endif -EXTERN void sq_addfirst(sq_entry_t *node, sq_queue_t *queue); -EXTERN void dq_addfirst(dq_entry_t *node, dq_queue_t *queue); -EXTERN void sq_addlast(sq_entry_t *node, sq_queue_t *queue); -EXTERN void dq_addlast(dq_entry_t *node, dq_queue_t *queue); -EXTERN void sq_addafter(sq_entry_t *prev, sq_entry_t *node, - sq_queue_t *queue); -EXTERN void dq_addafter(dq_entry_t *prev, dq_entry_t *node, - dq_queue_t *queue); -EXTERN void dq_addbefore(dq_entry_t *next, dq_entry_t *node, - dq_queue_t *queue); -EXTERN sq_entry_t *sq_remafter(sq_entry_t *node, sq_queue_t *queue); -EXTERN void sq_rem(sq_entry_t *node, sq_queue_t *queue); -EXTERN void dq_rem(dq_entry_t *node, dq_queue_t *queue); -EXTERN sq_entry_t *sq_remlast(sq_queue_t *queue); -EXTERN dq_entry_t *dq_remlast(dq_queue_t *queue); -EXTERN sq_entry_t *sq_remfirst(sq_queue_t *queue); -EXTERN dq_entry_t *dq_remfirst(dq_queue_t *queue); +EXTERN void sq_addfirst(FAR sq_entry_t *node, sq_queue_t *queue); +EXTERN void dq_addfirst(FAR dq_entry_t *node, dq_queue_t *queue); +EXTERN void sq_addlast(FAR sq_entry_t *node, sq_queue_t *queue); +EXTERN void dq_addlast(FAR dq_entry_t *node, dq_queue_t *queue); +EXTERN void sq_addafter(FAR sq_entry_t *prev, FAR sq_entry_t *node, + sq_queue_t *queue); +EXTERN void dq_addafter(FAR dq_entry_t *prev, FAR dq_entry_t *node, + dq_queue_t *queue); +EXTERN void dq_addbefore(FAR dq_entry_t *next, FAR dq_entry_t *node, + dq_queue_t *queue); + +EXTERN FAR sq_entry_t *sq_remafter(FAR sq_entry_t *node, sq_queue_t *queue); +EXTERN void sq_rem(FAR sq_entry_t *node, sq_queue_t *queue); +EXTERN void dq_rem(FAR dq_entry_t *node, dq_queue_t *queue); +EXTERN FAR sq_entry_t *sq_remlast(sq_queue_t *queue); +EXTERN FAR dq_entry_t *dq_remlast(dq_queue_t *queue); +EXTERN FAR sq_entry_t *sq_remfirst(sq_queue_t *queue); +EXTERN FAR dq_entry_t *dq_remfirst(dq_queue_t *queue); #undef EXTERN #ifdef __cplusplus diff --git a/nuttx/include/sched.h b/nuttx/include/sched.h index 4266eb9c0..79d3b2f1d 100644 --- a/nuttx/include/sched.h +++ b/nuttx/include/sched.h @@ -147,7 +147,8 @@ struct _TCB { /* Fields used to support list management ***************************/ - struct _TCB *flink, *blink; /* link in DQ of TCBs */ + FAR struct _TCB *flink; /* link in DQ of TCBs */ + FAR struct _TCB *blink; /* Task Management Fields *******************************************/ @@ -159,7 +160,7 @@ struct _TCB tstate_t task_state; /* Current state of the thread */ uint16 flags; /* Misc. general status flags */ sint16 lockcount; /* 0=preemptable (not-locked) */ - void *joininfo; /* Detach-able info to support join */ + FAR void *joininfo; /* Detach-able info to support join */ #if CONFIG_RR_INTERVAL > 0 int timeslice; /* RR timeslice interval remaining */ #endif @@ -167,27 +168,27 @@ struct _TCB /* Values needed to restart a task **********************************/ ubyte init_priority; /* Initial priority of the task */ - char *argv[NUM_TASK_ARGS+1]; /* Name + start-up parameters */ + FAR char *argv[NUM_TASK_ARGS+1]; /* Name + start-up parameters */ /* Stack-Related Fields *********************************************/ size_t adj_stack_size; /* Stack size after adjustment */ /* for hardware, processor, etc. */ /* (for debug purposes only) */ - void *stack_alloc_ptr; /* Pointer to allocated stack */ + FAR void *stack_alloc_ptr; /* Pointer to allocated stack */ /* Need to deallocate stack */ - void *adj_stack_ptr; /* Adjusted StatckAllocPtr for HW */ + FAR void *adj_stack_ptr; /* Adjusted StatckAllocPtr for HW */ /* The initial stack pointer value */ /* POSIX thread Specific Data ***************************************/ #if CONFIG_NPTHREAD_KEYS > 0 - void *pthread_data[CONFIG_NPTHREAD_KEYS]; + FAR void *pthread_data[CONFIG_NPTHREAD_KEYS]; #endif /* POSIX Semaphore Control Fields ***********************************/ - sem_t *waitsem; /* Semaphore ID waiting on */ + sem_t *waitsem; /* Semaphore ID waiting on */ /* POSIX Signal Control Fields **************************************/ @@ -202,7 +203,7 @@ struct _TCB /* POSIX Named Message Queue Fields *********************************/ sq_queue_t msgdesq; /* List of opened message queues */ - msgq_t *msgwaitq; /* Waiting for this message queue */ + FAR msgq_t *msgwaitq; /* Waiting for this message queue */ /* Library related fields *******************************************/ @@ -211,11 +212,11 @@ struct _TCB /* File system support **********************************************/ #if CONFIG_NFILE_DESCRIPTORS > 0 - struct filelist *filelist; /* Maps file descriptor to file */ + FAR struct filelist *filelist; /* Maps file descriptor to file */ #endif #if CONFIG_NFILE_STREAMS > 0 - struct streamlist *streams; /* Holds C buffered I/O info */ + FAR struct streamlist *streams; /* Holds C buffered I/O info */ #endif /* State save areas *************************************************/ @@ -246,29 +247,31 @@ extern "C" { /* Task Control Interfaces (non-standard) */ -EXTERN STATUS task_init(_TCB *tcb , char *name, int priority, - uint32 *stack, uint32 stack_size, main_t entry, - char *arg1, char *arg2, char *arg3, char *arg4); -EXTERN STATUS task_activate(_TCB *tcb); -EXTERN int task_create(char *name, int priority, int stack_size, main_t main, - char *arg1, char *arg2, char *arg3, char *arg4); +EXTERN STATUS task_init(FAR _TCB *tcb, const char *name, int priority, + FAR uint32 *stack, uint32 stack_size, main_t entry, + FAR char *arg1, FAR char *arg2, + FAR char *arg3, FAR char *arg4); +EXTERN STATUS task_activate(FAR _TCB *tcb); +EXTERN int task_create(const char *name, int priority, int stack_size, main_t main, + FAR char *arg1, FAR char *arg2, + FAR char *arg3, FAR char *arg4); EXTERN STATUS task_delete(pid_t pid); EXTERN STATUS task_restart(pid_t pid); /* Task Scheduling Interfaces (based on POSIX APIs) */ EXTERN int sched_setparam(pid_t pid, - const struct sched_param * param); + const struct sched_param *param); EXTERN int sched_getparam(pid_t pid, - struct sched_param * param); + struct sched_param *param); EXTERN int sched_setscheduler(pid_t pid, int policy, - const struct sched_param * param); + const struct sched_param *param); EXTERN int sched_getscheduler(pid_t pid); EXTERN int sched_yield(void); EXTERN int sched_get_priority_max(int policy); EXTERN int sched_get_priority_min(int policy); EXTERN int sched_rr_get_interval(pid_t pid, - struct timespec * interval); + struct timespec *interval); /* Task Switching Interfaces (non-standard) */ @@ -282,9 +285,9 @@ EXTERN sint32 sched_lockcount(void); #ifdef CONFIG_SCHED_INSTRUMENTATION -EXTERN void sched_note_start(_TCB *tcb ); -EXTERN void sched_note_stop(_TCB *tcb ); -EXTERN void sched_note_switch(_TCB *pFromTcb, _TCB *pToTcb); +EXTERN void sched_note_start(FAR _TCB *tcb ); +EXTERN void sched_note_stop(FAR _TCB *tcb ); +EXTERN void sched_note_switch(FAR _TCB *pFromTcb, FAR _TCB *pToTcb); #else # define sched_note_start(t) @@ -295,9 +298,9 @@ EXTERN void sched_note_switch(_TCB *pFromTcb, _TCB *pToTcb); /* File system helpers */ #if CONFIG_NFILE_DESCRIPTORS > 0 -EXTERN struct filelist *sched_getfiles(void); +EXTERN FAR struct filelist *sched_getfiles(void); #if CONFIG_NFILE_STREAMS > 0 -EXTERN struct streamlist *sched_getstreams(void); +EXTERN FAR struct streamlist *sched_getstreams(void); #endif /* CONFIG_NFILE_STREAMS */ #endif /* CONFIG_NFILE_DESCRIPTORS */ diff --git a/nuttx/include/semaphore.h b/nuttx/include/semaphore.h index 92ac7ab89..f23435a1a 100644 --- a/nuttx/include/semaphore.h +++ b/nuttx/include/semaphore.h @@ -84,15 +84,15 @@ typedef struct sem_s sem_t; /* Counting Semaphore Interfaces (based on POSIX APIs) */ -EXTERN int sem_init(sem_t *sem, int pshared, unsigned int value); -EXTERN int sem_destroy(sem_t *sem); -EXTERN sem_t *sem_open(const char *name, int oflag, ...); -EXTERN int sem_close(sem_t *sem); -EXTERN int sem_unlink(const char *name); -EXTERN int sem_wait(sem_t *sem); -EXTERN int sem_trywait(sem_t *sem); -EXTERN int sem_post(sem_t *sem); -EXTERN int sem_getvalue(sem_t *sem, int *sval); +EXTERN int sem_init(sem_t *sem, int pshared, unsigned int value); +EXTERN int sem_destroy(sem_t *sem); +EXTERN FAR sem_t *sem_open(const char *name, int oflag, ...); +EXTERN int sem_close(FAR sem_t *sem); +EXTERN int sem_unlink(const char *name); +EXTERN int sem_wait(sem_t *sem); +EXTERN int sem_trywait(sem_t *sem); +EXTERN int sem_post(sem_t *sem); +EXTERN int sem_getvalue(sem_t *sem, int *sval); #undef EXTERN #ifdef __cplusplus diff --git a/nuttx/include/signal.h b/nuttx/include/signal.h index 4ec153b51..df8fe214d 100644 --- a/nuttx/include/signal.h +++ b/nuttx/include/signal.h @@ -41,6 +41,7 @@ ************************************************************/ #include +#include #include /* Needed for struct timespec */ #include /* Needed for, e.g., sigset_t */ @@ -123,7 +124,7 @@ struct sigaction union { void (*_sa_handler)(int); - void (*_sa_sigaction)(int, siginfo_t *, void *); + void (*_sa_sigaction)(int, FAR siginfo_t *, FAR void *); } sa_u; sigset_t sa_mask; int sa_flags; @@ -155,7 +156,7 @@ EXTERN int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); EXTERN int sigprocmask(int how, const sigset_t *set, - sigset_t *oset); + sigset_t *oset); EXTERN int sigpending(sigset_t *set); EXTERN int sigsuspend(const sigset_t *sigmask); EXTERN int sigwaitinfo(const sigset_t *set, diff --git a/nuttx/include/stdio.h b/nuttx/include/stdio.h index 883e32fc4..8b9a7e28e 100644 --- a/nuttx/include/stdio.h +++ b/nuttx/include/stdio.h @@ -129,12 +129,12 @@ struct _dirent { - char *d_name; /* name of directory entry */ + FAR char *d_name; /* name of directory entry */ }; struct dirent { - char *d_name; /* A pointer to szName */ - char szName[NAME_MAX+1]; /* name of the directory entry */ + FAR char *d_name; /* A pointer to d_szname */ + char d_szname[NAME_MAX+1]; /* name of the directory entry */ }; typedef struct @@ -147,7 +147,7 @@ typedef struct { unsigned long inode; int generation; - char *fileName; + FAR char *filename; } HANDLE_TO_NAME_IOCTL; struct stat @@ -186,7 +186,7 @@ struct statfs /* Streams */ -typedef struct file_struct FILE; +typedef FAR struct file_struct FILE; typedef void DIR; @@ -239,22 +239,22 @@ EXTERN int close(int fd); EXTERN int closedir(DIR *dirp); EXTERN int creat(const char *path, mode_t mode); EXTERN FILE *fdopen(int fd, const char *type); -EXTERN int fstat(int fd, struct stat *buf); -EXTERN char *getcwd(char *buf, size_t size); +EXTERN int fstat(int fd, FAR struct stat *buf); +EXTERN char *getcwd(FAR char *buf, size_t size); EXTERN int ioctl(int fd, int req, unsigned long arg); EXTERN off_t lseek(int fd, off_t offset, int whence); EXTERN int mkdir(const char *path, mode_t mode); -EXTERN int open( const char *path, int oflag, ... ); +EXTERN int open(const char *path, int oflag, ...); EXTERN DIR *opendir(const char *path); EXTERN int read(int fd, void *buf, unsigned int nbytes); -EXTERN struct _dirent *readdir(DIR *dirp); -EXTERN int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); -EXTERN void rewinddir(DIR *dirp); +EXTERN struct _dirent *readdir(FAR DIR *dirp); +EXTERN int readdir_r(FAR DIR *dirp, struct dirent *entry, FAR struct dirent **result); +EXTERN void rewinddir(FAR DIR *dirp); EXTERN int rmdir(const char *path); -EXTERN void seekdir(DIR *dirp, int loc); -EXTERN int stat(const char *path, struct stat *buf); -EXTERN int statfs(const char *path, struct statfs *buf); -EXTERN int telldir(DIR *dirp); +EXTERN void seekdir(FAR DIR *dirp, int loc); +EXTERN int stat(const char *path, FAR struct stat *buf); +EXTERN int statfs(const char *path, FAR struct statfs *buf); +EXTERN int telldir(FAR DIR *dirp); EXTERN int unlink(const char *path); EXTERN int write(int fd, const void *buf, unsigned int nbytes); diff --git a/nuttx/include/stdlib.h b/nuttx/include/stdlib.h index ba4f2b502..4a9f2ef0d 100644 --- a/nuttx/include/stdlib.h +++ b/nuttx/include/stdlib.h @@ -83,30 +83,40 @@ extern "C" { #endif /* Random number generation */ -EXTERN void srand(unsigned int seed); -EXTERN int rand(void); + +EXTERN void srand(unsigned int seed); +EXTERN int rand(void); /* Environment variable support */ -EXTERN char *getenv(const char *name); + +EXTERN char *getenv(const char *name); /* Process exit functions */ -EXTERN void exit(int status); -EXTERN void abort(void); -EXTERN int atexit(void (*func)(void)); + +EXTERN void exit(int status); +EXTERN void abort(void); +EXTERN int atexit(void (*func)(void)); /* String to binary conversions */ -#define atoi(nptr) strtol((nptr), (char**)NULL, 10) -EXTERN long strtol(const char *, char **, int); -EXTERN double_t strtod(const char *, char **); + +#define atoi(nptr) strtol((nptr), (FAR char**)NULL, 10) +EXTERN long strtol(const char *, char **, int); +EXTERN double_t strtod(const char *, char **); /* Memory Management */ -EXTERN void *malloc(size_t); -EXTERN void free(void*); -EXTERN void *realloc(void*, size_t); -EXTERN void *memalign(size_t, size_t); -EXTERN void *zalloc(size_t); -EXTERN void *calloc(size_t, size_t); + +EXTERN FAR void *malloc(size_t); +EXTERN void free(FAR void*); +EXTERN FAR void *realloc(FAR void*, size_t); +EXTERN FAR void *memalign(size_t, size_t); +EXTERN FAR void *zalloc(size_t); +EXTERN FAR void *calloc(size_t, size_t); + +#ifdef CONFIG_CAN_PASS_STRUCTS EXTERN struct mallinfo mallinfo(void); +#else +EXTERN int mallinfo(struct mallinfo *info); +#endif #undef EXTERN #if defined(__cplusplus) diff --git a/nuttx/include/string.h b/nuttx/include/string.h index e63895188..0c8bd59b7 100644 --- a/nuttx/include/string.h +++ b/nuttx/include/string.h @@ -60,7 +60,7 @@ extern "C" { #endif EXTERN char *strchr(const char *s, int c); -EXTERN char *strdup(const char *s); +EXTERN FAR char *strdup(const char *s); EXTERN char *strerror(int); EXTERN size_t strlen(const char *); EXTERN char *strncat(char *, const char *, size_t); @@ -74,7 +74,7 @@ EXTERN char *strrchr(const char *, int); EXTERN size_t strspn(const char *, const char *); EXTERN size_t strcspn(const char *, const char *); EXTERN char *strstr(const char *, const char *); -EXTERN char *strtok(char *, const char *); +EXTERN char *strtok(FAR char *, const char *); EXTERN void *memset(void *s, int c, size_t n); EXTERN void *memcpy(void *dest, const void *src, size_t n); diff --git a/nuttx/include/unistd.h b/nuttx/include/unistd.h index e6c787ecc..faf50e3a3 100644 --- a/nuttx/include/unistd.h +++ b/nuttx/include/unistd.h @@ -67,7 +67,7 @@ extern "C" { /* Task Control Interfaces (based on ANSII APIs) */ -EXTERN pid_t getpid( void ); +EXTERN pid_t getpid(void); EXTERN void _exit(int status) noreturn_function; EXTERN unsigned int sleep(unsigned int seconds); EXTERN void usleep(unsigned long usec); diff --git a/nuttx/include/wdog.h b/nuttx/include/wdog.h index a1065eaae..fb45cb6a2 100644 --- a/nuttx/include/wdog.h +++ b/nuttx/include/wdog.h @@ -80,7 +80,7 @@ typedef void (*wdentry_t)(int argc, uint32 arg1, ...); /* Watchdog 'handle' */ -typedef struct wdog_s *WDOG_ID; +typedef FAR struct wdog_s *WDOG_ID; /************************************************************ * Global Variables -- cgit v1.2.3