aboutsummaryrefslogtreecommitdiff
path: root/nuttx/include/nuttx/arch.h
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/include/nuttx/arch.h')
-rw-r--r--nuttx/include/nuttx/arch.h867
1 files changed, 0 insertions, 867 deletions
diff --git a/nuttx/include/nuttx/arch.h b/nuttx/include/nuttx/arch.h
deleted file mode 100644
index 958986472..000000000
--- a/nuttx/include/nuttx/arch.h
+++ /dev/null
@@ -1,867 +0,0 @@
-/****************************************************************************
- * include/nuttx/arch.h
- *
- * Copyright (C) 2007-2013 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <gnutt@nuttx.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-#ifndef __INCLUDE_NUTTX_ARCH_H
-#define __INCLUDE_NUTTX_ARCH_H
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/types.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <sched.h>
-
-#include <arch/arch.h>
-
-/****************************************************************************
- * Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Public Types
- ****************************************************************************/
-
-typedef CODE void (*sig_deliver_t)(FAR _TCB *tcb);
-
-/****************************************************************************
- * Public Variables
- ****************************************************************************/
-
-/****************************************************************************
- * Public Function Prototypes
- ****************************************************************************/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/****************************************************************************
- * These are standard interfaces that must be exported to the
- * scheduler from architecture-specific code.
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_initialize
- *
- * Description:
- * up_initialize will be called once during OS
- * initialization after the basic OS services have been
- * initialized. The architecture specific details of
- * initializing the OS will be handled here. Such things as
- * setting up interrupt service routines, starting the
- * clock, and registering device drivers are some of the
- * things that are different for each processor and hardware
- * platform.
- *
- * up_initialize is called after the OS initialized but
- * before the init process has been started and before the
- * libraries have been initialized. OS services and driver
- * services are available.
- *
- ****************************************************************************/
-
-void up_initialize(void);
-
-/****************************************************************************
- * Name: up_idle
- *
- * Description:
- * up_idle() is the logic that will be executed
- * when their is no other ready-to-run task. This is processor
- * idle time and will continue until some interrupt occurs to
- * cause a context switch from the idle task.
- *
- * Processing in this state may be processor-specific. e.g.,
- * this is where power management operations might be performed.
- *
- ****************************************************************************/
-
-void up_idle(void);
-
-/****************************************************************************
- * Name: up_initial_state
- *
- * Description:
- * A new thread is being started and a new TCB
- * has been created. This function is called to initialize
- * the processor specific portions of the new TCB.
- *
- * This function must setup the intial architecture registers
- * and/or stack so that execution will begin at tcb->start
- * on the next context switch.
- *
- ****************************************************************************/
-
-void up_initial_state(FAR _TCB *tcb);
-
-/****************************************************************************
- * Name: up_create_stack
- *
- * Description:
- * Allocate a stack for a new thread and setup
- * up stack-related information in the TCB.
- *
- * The following TCB fields must be initialized:
- * adj_stack_size: Stack size after adjustment for hardware,
- * processor, etc. This value is retained only for debug
- * purposes.
- * stack_alloc_ptr: Pointer to allocated stack
- * adj_stack_ptr: Adjusted stack_alloc_ptr for HW. The
- * initial value of the stack pointer.
- *
- * Inputs:
- * tcb: The TCB of new task
- * stack_size: The requested stack size. At least this much
- * must be allocated.
- *
- ****************************************************************************/
-
-#ifndef CONFIG_CUSTOM_STACK
-int up_create_stack(FAR _TCB *tcb, size_t stack_size);
-#endif
-
-/****************************************************************************
- * Name: up_use_stack
- *
- * Description:
- * Setup up stack-related information in the TCB
- * using pre-allocated stack memory
- *
- * The following TCB fields must be initialized:
- * adj_stack_size: Stack size after adjustment for hardware,
- * processor, etc. This value is retained only for debug
- * purposes.
- * stack_alloc_ptr: Pointer to allocated stack
- * adj_stack_ptr: Adjusted stack_alloc_ptr for HW. The
- * initial value of the stack pointer.
- *
- * Inputs:
- * tcb: The TCB of new task
- * stack_size: The allocated stack size.
- *
- ****************************************************************************/
-
-#ifndef CONFIG_CUSTOM_STACK
-int up_use_stack(FAR _TCB *tcb, FAR void *stack, size_t stack_size);
-#endif
-
-/****************************************************************************
- * Name: up_release_stack
- *
- * Description:
- * A task has been stopped. Free all stack
- * related resources retained int the defunct TCB.
- *
- ****************************************************************************/
-
-#ifndef CONFIG_CUSTOM_STACK
-void up_release_stack(FAR _TCB *dtcb);
-#endif
-
-/****************************************************************************
- * Name: up_unblock_task
- *
- * Description:
- * A task is currently in an inactive task list
- * but has been prepped to execute. Move the TCB to the
- * ready-to-run list, restore its context, and start execution.
- *
- * This function is called only from the NuttX scheduling
- * logic. Interrupts will always be disabled when this
- * function is called.
- *
- * Inputs:
- * tcb: Refers to the tcb to be unblocked. This tcb is
- * in one of the waiting tasks lists. It must be moved to
- * the ready-to-run list and, if it is the highest priority
- * ready to run taks, executed.
- *
- ****************************************************************************/
-
-void up_unblock_task(FAR _TCB *tcb);
-
-/****************************************************************************
- * Name: up_block_task
- *
- * Description:
- * The currently executing task at the head of
- * the ready to run list must be stopped. Save its context
- * and move it to the inactive list specified by task_state.
- *
- * This function is called only from the NuttX scheduling
- * logic. Interrupts will always be disabled when this
- * function is called.
- *
- * Inputs:
- * tcb: Refers to a task in the ready-to-run list (normally
- * the task at the head of the list). It most be
- * stopped, its context saved and moved into one of the
- * waiting task lists. It it was the task at the head
- * of the ready-to-run list, then a context to the new
- * ready to run task must be performed.
- * task_state: Specifies which waiting task list should be
- * hold the blocked task TCB.
- *
- ****************************************************************************/
-
-void up_block_task(FAR _TCB *tcb, tstate_t task_state);
-
-/****************************************************************************
- * Name: up_release_pending
- *
- * Description:
- * When tasks become ready-to-run but cannot run because
- * pre-emption is disabled, they are placed into a pending
- * task list. This function releases and makes ready-to-run
- * all of the tasks that have collected in the pending task
- * list. This can cause a context switch if a new task is
- * placed at the head of the ready to run list.
- *
- * This function is called only from the NuttX scheduling
- * logic when pre-emptioni is re-enabled. Interrupts will
- * always be disabled when this function is called.
- *
- ****************************************************************************/
-
-void up_release_pending(void);
-
-/****************************************************************************
- * Name: up_reprioritize_rtr
- *
- * Description:
- * Called when the priority of a running or
- * ready-to-run task changes and the reprioritization will
- * cause a context switch. Two cases:
- *
- * 1) The priority of the currently running task drops and the next
- * task in the ready to run list has priority.
- * 2) An idle, ready to run task's priority has been raised above the
- * the priority of the current, running task and it now has the
- * priority.
- *
- * This function is called only from the NuttX scheduling
- * logic. Interrupts will always be disabled when this
- * function is called.
- *
- * Inputs:
- * tcb: The TCB of the task that has been reprioritized
- * priority: The new task priority
- *
- ****************************************************************************/
-
-void up_reprioritize_rtr(FAR _TCB *tcb, uint8_t priority);
-
-/****************************************************************************
- * Name: _exit
- *
- * Description:
- * This function causes the currently executing task to cease
- * to exist. This is a special case of task_delete() where the task to
- * be deleted is the currently executing task. It is more complex because
- * a context switch must be perform to the next ready to run task.
- *
- * Unlike other UP APIs, this function may be called directly from user
- * programs in various states. The implementation of this function should
- * disable interrupts before performing scheduling operations.
- *
- ****************************************************************************/
-/* Prototype is in unistd.h */
-
-/****************************************************************************
- * Name: up_assert and up_assert_code
- *
- * Description:
- * Assertions may be handled in an architecture-specific
- * way.
- *
- ****************************************************************************/
-/* Prototype is in assert.h */
-
-/****************************************************************************
- * Name: up_schedule_sigaction
- *
- * Description:
- * This function is called by the OS when one or more
- * signal handling actions have been queued for execution.
- * The architecture specific code must configure things so
- * that the 'igdeliver' callback is executed on the thread
- * specified by 'tcb' as soon as possible.
- *
- * This function may be called from interrupt handling logic.
- *
- * This operation should not cause the task to be unblocked
- * nor should it cause any immediate execution of sigdeliver.
- * Typically, a few cases need to be considered:
- *
- * (1) This function may be called from an interrupt handler
- * During interrupt processing, all xcptcontext structures
- * should be valid for all tasks. That structure should
- * be modified to invoke sigdeliver() either on return
- * from (this) interrupt or on some subsequent context
- * switch to the recipient task.
- * (2) If not in an interrupt handler and the tcb is NOT
- * the currently executing task, then again just modify
- * the saved xcptcontext structure for the recipient
- * task so it will invoke sigdeliver when that task is
- * later resumed.
- * (3) If not in an interrupt handler and the tcb IS the
- * currently executing task -- just call the signal
- * handler now.
- *
- ****************************************************************************/
-
-#ifndef CONFIG_DISABLE_SIGNALS
-void up_schedule_sigaction(FAR _TCB *tcb, sig_deliver_t sigdeliver);
-#endif
-
-/****************************************************************************
- * Name: up_allocate_heap
- *
- * Description:
- * The heap may be statically allocated by defining CONFIG_HEAP_BASE and
- * CONFIG_HEAP_SIZE. If these are not defined, then this function will be
- * called to dynamically set aside the heap region.
- *
- ****************************************************************************/
-
-#ifndef CONFIG_HEAP_BASE
-void up_allocate_heap(FAR void **heap_start, size_t *heap_size);
-#endif
-
-/****************************************************************************
- * Name: up_setpicbase, up_getpicbase
- *
- * Description:
- * It NXFLAT external modules (or any other binary format that requires)
- * PIC) are supported, then these macros must defined to (1) get or get
- * the PIC base register value. These must be implemented with in-line
- * assembly.
- *
- ****************************************************************************/
-
-#ifndef CONFIG_PIC
-# define up_setpicbase(picbase)
-# define up_getpicbase(ppicbase)
-#endif
-
-/****************************************************************************
- * Address Environment Interfaces
- *
- * Low-level interfaces used in binfmt/ to instantiate tasks with address
- * environments. These interfaces all operate on type task_addrenv_t which
- * is an abstract representation of a task's address environment and must be
- * defined in arch/arch.h if CONFIG_ADDRENV is defined.
- *
- * up_addrenv_create - Create an address environment
- * up_addrenv_vaddr - Returns the virtual base address of the address
- * environment
- * up_addrenv_select - Instantiate an address environment
- * up_addrenv_restore - Restore an address environment
- * up_addrenv_destroy - Destroy an address environment.
- * up_addrenv_assign - Assign an address environment to a TCB
- *
- * Higher-level interfaces used by the tasking logic. These interfaces are
- * used by the functions in sched/ and all operate on the TCB which as been
- * assigned an address environment by up_addrenv_assign().
- *
- * up_addrenv_share - Clone the address environment assigned to one TCB
- * to another. This operation is done when a pthread
- * is created that share's the same address
- * environment.
- * up_addrenv_release - Release the TCBs reference to an address
- * environment when a task/thread exits.
- *
- ****************************************************************************/
-/****************************************************************************
- * Name: up_addrenv_create
- *
- * Description:
- * This function is called from the binary loader logic when a new
- * task is created in order to instantiate an address environment for the
- * task. up_addrenv_create is essentially the allocator of the physical
- * memory for the new task.
- *
- * Input Parameters:
- * envsize - The size (in bytes) of the address environment needed by the
- * task.
- * addrenv - The location to return the representation of the task address
- * environment.
- *
- * Returned Value:
- * Zero (OK) on success; a negated errno value on failure.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ADDRENV
-int up_addrenv_create(size_t envsize, FAR task_addrenv_t *addrenv);
-#endif
-
-/****************************************************************************
- * Name: up_addrenv_vaddr
- *
- * Description:
- * Return the virtual address associated with the newly create address
- * environment. This function is used by the binary loaders in order
- * get an address that can be used to initialize the new task.
- *
- * Input Parameters:
- * addrenv - The representation of the task address environment previously
- * returned by up_addrenv_create.
- * vaddr - The location to return the virtual address.
- *
- * Returned Value:
- * Zero (OK) on success; a negated errno value on failure.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ADDRENV
-int up_addrenv_vaddr(FAR task_addrenv_t addrenv, FAR void **vaddr);
-#endif
-
-/****************************************************************************
- * Name: up_addrenv_select
- *
- * Description:
- * After an address environment has been established for a task (via
- * up_addrenv_create(). This function may be called to to instantiate
- * that address environment in the virtual address space. this might be
- * necessary, for example, to load the code for the task from a file or
- * to access address environment private data.
- *
- * Input Parameters:
- * addrenv - The representation of the task address environment previously
- * returned by up_addrenv_create.
- * oldenv
- * The address environment that was in place before up_addrenv_select().
- * This may be used with up_addrenv_restore() to restore the original
- * address environment that was in place before up_addrenv_select() was
- * called. Note that this may be a task agnostic, hardware
- * representation that is different from task_addrenv_t.
- *
- * Returned Value:
- * Zero (OK) on success; a negated errno value on failure.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ADDRENV
-int up_addrenv_select(task_addrenv_t addrenv, hw_addrenv_t *oldenv);
-#endif
-
-/****************************************************************************
- * Name: up_addrenv_restore
- *
- * Description:
- * After an address environment has been temporarilty instantiated by
- * up_addrenv_select, this function may be called to to restore the
- * original address environment.
- *
- * Input Parameters:
- * oldenv - The hardware representation of the address environment
- * previously returned by up_addrenv_select.
- *
- * Returned Value:
- * Zero (OK) on success; a negated errno value on failure.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ADDRENV
-int up_addrenv_restore(hw_addrenv_t oldenv);
-#endif
-
-/****************************************************************************
- * Name: up_addrenv_destroy
- *
- * Description:
- * Called from the binary loader loader during error handling to destroy
- * the address environment previously created by up_addrenv_create().
- *
- * Input Parameters:
- * addrenv - The representation of the task address environment previously
- * returned by up_addrenv_create.
- *
- * Returned Value:
- * Zero (OK) on success; a negated errno value on failure.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ADDRENV
-int up_addrenv_destroy(task_addrenv_t addrenv);
-#endif
-
-/****************************************************************************
- * Name: up_addrenv_assign
- *
- * Description:
- * Assign an address environment to a TCB.
- *
- * Input Parameters:
- * addrenv - The representation of the task address environment previously
- * returned by up_addrenv_create.
- * tcb - The TCB of the task to receive the address environment.
- *
- * Returned Value:
- * Zero (OK) on success; a negated errno value on failure.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ADDRENV
-int up_addrenv_assign(task_addrenv_t addrenv, FAR _TCB *tcb);
-#endif
-
-/****************************************************************************
- * Name: up_addrenv_share
- *
- * Description:
- * This function is called from the core scheduler logic when a thread
- * is created that needs to share the address ennvironment of its parent
- * task. In this case, the parent's address environment needs to be
- * "cloned" for the child.
- *
- * Input Parameters:
- * ptcb - The TCB of the parent task that has the address environment.
- * ctcb - The TCB of the child thread needing the address environment.
- *
- * Returned Value:
- * Zero (OK) on success; a negated errno value on failure.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ADDRENV
-int up_addrenv_share(FAR const _TCB *ptcb, FAR _TCB *ctcb);
-#endif
-
-/****************************************************************************
- * Name: up_addrenv_release
- *
- * Description:
- * This function is called when a task or thread exits in order to release
- * its reference to an address environment. When there are no further
- * references to an address environment, that address environment should
- * be destroyed.
- *
- * Input Parameters:
- * tcb - The TCB of the task or thread whose the address environment will
- * be released.
- *
- * Returned Value:
- * Zero (OK) on success; a negated errno value on failure.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ADDRENV
-int up_addrenv_release(FAR _TCB *tcb);
-#endif
-
-/****************************************************************************
- * Name: up_interrupt_context
- *
- * Description:
- * Return true is we are currently executing in
- * the interrupt handler context.
- *
- ****************************************************************************/
-
-bool up_interrupt_context(void);
-
-/****************************************************************************
- * Name: up_enable_irq
- *
- * Description:
- * On many architectures, there are three levels of interrupt enabling: (1)
- * at the global level, (2) at the level of the interrupt controller,
- * and (3) at the device level. In order to receive interrupts, they
- * must be enabled at all three levels.
- *
- * This function implements enabling of the device specified by 'irq'
- * at the interrupt controller level if supported by the architecture
- * (irqrestore() supports the global level, the device level is hardware
- * specific).
- *
- * Since this API is not supported on all architectures, it should be
- * avoided in common implementations where possible.
- *
- ****************************************************************************/
-
-#ifndef CONFIG_ARCH_NOINTC
-void up_enable_irq(int irq);
-#endif
-
-/****************************************************************************
- * Name: up_disable_irq
- *
- * Description:
- * This function implements disabling of the device specified by 'irq'
- * at the interrupt controller level if supported by the architecture
- * (irqsave() supports the global level, the device level is hardware
- * specific).
- *
- * Since this API is not supported on all architectures, it should be
- * avoided in common implementations where possible.
- *
- ****************************************************************************/
-
-#ifndef CONFIG_ARCH_NOINTC
-void up_disable_irq(int irq);
-#endif
-
-/****************************************************************************
- * Name: up_prioritize_irq
- *
- * Description:
- * Set the priority of an IRQ.
- *
- * Since this API is not supported on all architectures, it should be
- * avoided in common implementations where possible.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ARCH_IRQPRIO
-int up_prioritize_irq(int irq, int priority);
-#endif
-
-/****************************************************************************
- * Name: up_romgetc
- *
- * Description:
- * In Harvard architectures, data accesses and instruction accesses occur
- * on different busses, perhaps concurrently. All data accesses are
- * performed on the data bus unless special machine instructions are
- * used to read data from the instruction address space. Also, in the
- * typical MCU, the available SRAM data memory is much smaller that the
- * non-volatile FLASH instruction memory. So if the application requires
- * many constant strings, the only practical solution may be to store
- * those constant strings in FLASH memory where they can only be accessed
- * using architecture-specific machine instructions.
- *
- * A similar case is where strings are retained in "external" memory such
- * as EEPROM or serial FLASH. This case is similar only in that again
- * special operations are required to obtain the string data; it cannot
- * be accessed directly from a string pointer.
- *
- * If CONFIG_ARCH_ROMGETC is defined, then the architecture logic must
- * export the function up_romgetc(). up_romgetc() will simply read one
- * byte of data from the instruction space.
- *
- * If CONFIG_ARCH_ROMGETC, certain C stdio functions are effected: (1)
- * All format strings in printf, fprintf, sprintf, etc. are assumed to
- * lie in FLASH (string arguments for %s are still assumed to reside in
- * SRAM). And (2), the string argument to puts and fputs is assumed to
- * reside in FLASH. Clearly, these assumptions may have to modified for
- * the particular needs of your environment. There is no "one-size-fits-all"
- * solution for this problem.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ARCH_ROMGETC
-char up_romgetc(FAR const char *ptr);
-#else
-# define up_romgetc(ptr) (*ptr)
-#endif
-
-/****************************************************************************
- * Name: up_mdelay and up_udelay
- *
- * Description:
- * Some device drivers may require that the plaform-specific logic
- * provide these timing loops for short delays.
- *
- ***************************************************************************/
-
-void up_mdelay(unsigned int milliseconds);
-void up_udelay(useconds_t microseconds);
-
-/****************************************************************************
- * Name: up_cxxinitialize
- *
- * Description:
- * If C++ and C++ static constructors are supported, then this function
- * must be provided by board-specific logic in order to perform
- * initialization of the static C++ class instances.
- *
- * This function should then be called in the application-specific
- * user_start logic in order to perform the C++ initialization. NOTE
- * that no component of the core NuttX RTOS logic is involved; This
- * function definition only provides the 'contract' between application
- * specific C++ code and platform-specific toolchain support
- *
- ***************************************************************************/
-
-#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
-void up_cxxinitialize(void);
-#endif
-
-/****************************************************************************
- * These are standard interfaces that are exported by the OS
- * for use by the architecture specific logic
- ****************************************************************************/
-
-/****************************************************************************
- * Name: sched_process_timer
- *
- * Description:
- * This function handles system timer events.
- * The timer interrupt logic itself is implemented in the
- * architecture specific code, but must call the following OS
- * function periodically -- the calling interval must be
- * MSEC_PER_TICK.
- *
- ****************************************************************************/
-
-void sched_process_timer(void);
-
-/****************************************************************************
- * Name: irq_dispatch
- *
- * Description:
- * This function must be called from the achitecture-
- * specific logic in order to dispatch an interrupt to
- * the appropriate, registered handling logic.
- *
- ***************************************************************************/
-
-void irq_dispatch(int irq, FAR void *context);
-
-/****************************************************************************
- * Board-specific button interfaces exported by the board-specific logic
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_buttoninit
- *
- * Description:
- * up_buttoninit() must be called to initialize button resources. After
- * that, up_buttons() may be called to collect the current state of all
- * buttons or up_irqbutton() may be called to register button interrupt
- * handlers.
- *
- * NOTE: This interface may or may not be supported by board-specific
- * logic. If the board supports button interfaces, then CONFIG_ARCH_BUTTONS
- * will be defined.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ARCH_BUTTONS
-void up_buttoninit(void);
-#endif
-
-/****************************************************************************
- * Name: up_buttons
- *
- * Description:
- * After up_buttoninit() has been called, up_buttons() may be called to
- * collect the state of all buttons. up_buttons() returns an 8-bit bit set
- * with each bit associated with a button. A bit set to "1" means that the
- * button is depressed; a bit set to "0" means that the button is released.
- * The correspondence of the each button bit and physical buttons is board-
- * specific.
- *
- * NOTE: This interface may or may not be supported by board-specific
- * logic. If the board supports button interfaces, then CONFIG_ARCH_BUTTONS
- * will be defined
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ARCH_BUTTONS
-uint8_t up_buttons(void);
-#endif
-
-/****************************************************************************
- * Name: up_irqbutton
- *
- * Description:
- * This function may be called to register an interrupt handler that will
- * be called when a button is depressed or released. The ID value is a
- * button enumeration value that uniquely identifies a button resource.
- * The previous interrupt handler address is returned (so that it may
- * restored, if so desired).
- *
- * NOTE: This interface may or may not be supported by board-specific
- * logic. If the board supports any button interfaces, then
- * CONFIG_ARCH_BUTTONS will be defined; If the board supports interrupt
- * buttons, then CONFIG_ARCH_IRQBUTTONS will also be defined.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_ARCH_IRQBUTTONS
-xcpt_t up_irqbutton(int id, xcpt_t irqhandler);
-#endif
-
-/************************************************************************************
- * Relay control functions
- *
- * Description:
- * Non-standard functions for relay control.
- *
- ************************************************************************************/
-
-#ifdef CONFIG_ARCH_RELAYS
-void up_relaysinit(void);
-void relays_setstat(int relays, bool stat);
-bool relays_getstat(int relays);
-void relays_setstats(uint32_t relays_stat);
-uint32_t relays_getstats(void);
-void relays_onoff(int relays, uint32_t mdelay);
-void relays_onoffs(uint32_t relays_stat, uint32_t mdelay);
-void relays_resetmode(int relays);
-void relays_powermode(int relays);
-void relays_resetmodes(uint32_t relays_stat);
-void relays_powermodes(uint32_t relays_stat);
-#endif
-
-/****************************************************************************
- * Debug interfaces exported by the architecture-specific logic
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_putc
- *
- * Description:
- * Output one character on the console
- *
- ****************************************************************************/
-
-int up_putc(int ch);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __INCLUDE_NUTTX_ARCH_H */
-