diff options
author | Joel Sherrill <joel.sherrill@oarcorp.com> | 2013-02-02 15:19:01 -0600 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@oarcorp.com> | 2013-02-02 15:19:01 -0600 |
commit | dd7b83550dfb73f5ec1b7dec3b21d730779ddeb2 (patch) | |
tree | 3db0eac5b55ed5edcf985baed9f19736c931de47 | |
parent | Merge branch 'master' of ssh://git.rtems.org/data/git/rtems (diff) | |
parent | fstests/fsrdwr: Free allocated memory (diff) | |
download | rtems-dd7b83550dfb73f5ec1b7dec3b21d730779ddeb2.tar.bz2 |
Merge branch 'master' of ssh://git.rtems.org/data/git/rtems
935 files changed, 24798 insertions, 18184 deletions
diff --git a/c/src/lib/libbsp/arm/edb7312/irq/irq.c b/c/src/lib/libbsp/arm/edb7312/irq/irq.c index a345d1b477..85b4e26217 100644 --- a/c/src/lib/libbsp/arm/edb7312/irq/irq.c +++ b/c/src/lib/libbsp/arm/edb7312/irq/irq.c @@ -12,6 +12,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/score/armv4.h> + #include <bsp.h> #include <bsp/irq.h> #include <bsp/irq-generic.h> @@ -170,7 +172,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void) } int_stat = *EP7312_INTSR3; - _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, arm_exc_interrupt, NULL); + _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL); return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libbsp/arm/gba/start/start.S b/c/src/lib/libbsp/arm/gba/start/start.S index 3827c9d8a4..c391517371 100644 --- a/c/src/lib/libbsp/arm/gba/start/start.S +++ b/c/src/lib/libbsp/arm/gba/start/start.S @@ -162,7 +162,7 @@ .align PUBLIC_ARM_FUNCTION(_gba_ISR_handler) ldmfd r13!,{r0-r3,r12,r14} - b arm_exc_interrupt + b _ARMV4_Exception_interrupt LABEL_END(_gba_ISR_handler) diff --git a/c/src/lib/libbsp/arm/gp32/Makefile.am b/c/src/lib/libbsp/arm/gp32/Makefile.am index a136ea6983..92dfc72b0c 100644 --- a/c/src/lib/libbsp/arm/gp32/Makefile.am +++ b/c/src/lib/libbsp/arm/gp32/Makefile.am @@ -30,7 +30,7 @@ libbsp_a_SOURCES = # startup libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \ ../../shared/bsppredriverhook.c ../../shared/bspgetworkarea.c \ - ../../shared/bsppretaskinghook.c startup/bspstart.c \ + ../../shared/bsppretaskinghook.c startup/bspstart.c startup/bspidle.c \ ../../shared/bspclean.c startup/bspreset.c \ startup/memmap.c ../../shared/bootcard.c ../../shared/sbrk.c \ ../../shared/gnatinstallhandler.c diff --git a/c/src/lib/libbsp/arm/gp32/include/bsp.h b/c/src/lib/libbsp/arm/gp32/include/bsp.h index be542e9dbb..a6671a80dc 100644 --- a/c/src/lib/libbsp/arm/gp32/include/bsp.h +++ b/c/src/lib/libbsp/arm/gp32/include/bsp.h @@ -1,12 +1,12 @@ /** * @file * - * This include file contains definitions related to the GP32 BSP. + * This include file contains definitions related to the GP32 BSP. */ /* - * Copyright (c) Canon Research France SA.] - * Emmanuel Raguet, mailto:raguet@crf.canon.fr + * Copyright (c) Canon Research France SA.] + * Emmanuel Raguet, mailto:raguet@crf.canon.fr * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at @@ -59,13 +59,13 @@ void gp32_setPalette( unsigned char pos, uint16_t color); /* - * This BSP provides its own IDLE task to override the RTEMS one. + * This BSP provides its own IDLE thread to override the RTEMS one. * So we prototype it and define the constant confdefs.h expects * to configure a BSP specific one. */ -Thread bsp_idle_task(uint32_t); +void *bsp_idle_thread(uintptr_t ignored); -#define BSP_IDLE_TASK_BODY bsp_idle_task +#define BSP_IDLE_TASK_BODY bsp_idle_thread #ifdef __cplusplus } diff --git a/c/src/lib/libbsp/arm/gp32/startup/bspidle.c b/c/src/lib/libbsp/arm/gp32/startup/bspidle.c new file mode 100644 index 0000000000..bdd8fcccd9 --- /dev/null +++ b/c/src/lib/libbsp/arm/gp32/startup/bspidle.c @@ -0,0 +1,23 @@ +/* + * BSP specific Idle thread + */ + +/* + * Copyright (c) 2000 Canon Research Centre France SA. + * Emmanuel Raguet, mailto:raguet@crf.canon.fr + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#include <bsp.h> + +void *bsp_idle_thread(uintptr_t ignored) +{ + while(1) { + __asm__ volatile ("MCR p15,0,r0,c7,c0,4 \n"); + } + return NULL; +} + diff --git a/c/src/lib/libbsp/arm/gp32/startup/bspstart.c b/c/src/lib/libbsp/arm/gp32/startup/bspstart.c index cfedc24c39..79a97aad13 100644 --- a/c/src/lib/libbsp/arm/gp32/startup/bspstart.c +++ b/c/src/lib/libbsp/arm/gp32/startup/bspstart.c @@ -2,14 +2,15 @@ * This file contains the ARM BSP startup package. It includes application, * board, and monitor specific initialization and configuration. The generic CPU * dependent initialization has been performed before this routine is invoked. + */ + +/* + * Copyright (c) 2000 Canon Research Centre France SA. + * Emmanuel Raguet, mailto:raguet@crf.canon.fr * - * - * Copyright (c) 2000 Canon Research Centre France SA. - * Emmanuel Raguet, mailto:raguet@crf.canon.fr - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #include <bsp.h> @@ -23,16 +24,6 @@ extern void rtems_exception_init_mngt(void); /* - * BSP specific Idle task - */ -Thread bsp_idle_task(uint32_t ignored) -{ - while(1) { - __asm__ volatile ("MCR p15,0,r0,c7,c0,4 \n"); - } -} - -/* * BSP Specific Initialization in C */ void bsp_start_default( void ) diff --git a/c/src/lib/libbsp/arm/lpc24xx/configure.ac b/c/src/lib/libbsp/arm/lpc24xx/configure.ac index 970eabd2bb..ed96563514 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/configure.ac +++ b/c/src/lib/libbsp/arm/lpc24xx/configure.ac @@ -123,7 +123,7 @@ RTEMS_BSPOPTS_HELP([BSP_START_RESET_VECTOR],[reset vector address for BSP start] RTEMS_BSPOPTS_SET([BSP_USB_OTG_TRANSCEIVER_I2C_ADDR],[lpc17xx_ea*],[(0x2f << 1)]) RTEMS_BSPOPTS_HELP([BSP_USB_OTG_TRANSCEIVER_I2C_ADDR],[USB OTG transceiver I2C address used by USB stack]) -RTEMS_BSP_CLEANUP_OPTIONS(0, 0) +RTEMS_BSP_CLEANUP_OPTIONS(0, 1) RTEMS_BSP_LINKCMDS AC_CONFIG_FILES([Makefile]) diff --git a/c/src/lib/libbsp/arm/lpc24xx/include/lpc17xx.h b/c/src/lib/libbsp/arm/lpc24xx/include/lpc17xx.h index 6d1dd45a83..b2cd4b062c 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/include/lpc17xx.h +++ b/c/src/lib/libbsp/arm/lpc24xx/include/lpc17xx.h @@ -28,6 +28,24 @@ #define LPC17XX_BASE 0x00 typedef struct { +#define LPC17XX_WWDT_MOD_WDEN BSP_BIT32(0) +#define LPC17XX_WWDT_MOD_WDRESET BSP_BIT32(1) +#define LPC17XX_WWDT_MOD_WDTOF BSP_BIT32(2) +#define LPC17XX_WWDT_MOD_WDINT BSP_BIT32(3) +#define LPC17XX_WWDT_MOD_WDPROTECT BSP_BIT32(4) + uint32_t mod; + uint32_t tc; + uint32_t feed; + uint32_t tv; + uint32_t reserved_10; + uint32_t warnint; + uint32_t window; + uint32_t reserved_1c; +} lpc17xx_wwdt; + +#define LPC17XX_WWDT (*(volatile lpc17xx_wwdt *) (LPC17XX_BASE + 0x40000000)) + +typedef struct { #define LPC17XX_PLL_CON_PLLE BSP_BIT32(0) #define LPC17XX_PLL_SEL_MSEL(val) BSP_FLD32(val, 0, 4) #define LPC17XX_PLL_SEL_MSEL_GET(reg) BSP_FLD32GET(reg, 0, 4) @@ -176,7 +194,9 @@ typedef struct { #define LPC17XX_SCB (*(volatile lpc17xx_scb *) (LPC17XX_BASE + 0x400fc000)) typedef struct { - uint32_t reserved_00 [268693504]; + uint32_t reserved_00 [268435456]; + lpc17xx_wwdt wwdt; + uint32_t reserved_40000020 [258040]; lpc17xx_scb scb; } lpc17xx; diff --git a/c/src/lib/libbsp/arm/lpc24xx/include/start-config.h b/c/src/lib/libbsp/arm/lpc24xx/include/start-config.h index 9d6173f741..64f653ab5b 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/include/start-config.h +++ b/c/src/lib/libbsp/arm/lpc24xx/include/start-config.h @@ -104,12 +104,16 @@ extern BSP_START_DATA_SECTION const lpc24xx_emc_static_chip_config extern BSP_START_DATA_SECTION const size_t lpc24xx_start_config_emc_static_chip_count; +#ifdef ARM_MULTILIB_ARCH_V7M + extern BSP_START_DATA_SECTION const ARMV7M_MPU_Region lpc24xx_start_config_mpu_region []; extern BSP_START_DATA_SECTION const size_t lpc24xx_start_config_mpu_region_count; +#endif /* ARM_MULTILIB_ARCH_V7M */ + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/c/src/lib/libbsp/arm/lpc24xx/irq/irq-dispatch.c b/c/src/lib/libbsp/arm/lpc24xx/irq/irq-dispatch.c index 2f8a23c576..4b84c94bf8 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/irq/irq-dispatch.c +++ b/c/src/lib/libbsp/arm/lpc24xx/irq/irq-dispatch.c @@ -20,6 +20,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/score/armv4.h> + #include <bsp.h> #include <bsp/irq.h> #include <bsp/irq-generic.h> @@ -33,13 +35,13 @@ void bsp_interrupt_dispatch(void) rtems_vector_number vector = VICVectAddr; /* Enable interrupts in program status register */ - uint32_t psr = arm_status_irq_enable(); + uint32_t psr = _ARMV4_Status_irq_enable(); /* Dispatch interrupt handlers */ bsp_interrupt_handler_dispatch(vector); /* Restore program status register */ - arm_status_restore(psr); + _ARMV4_Status_restore(psr); /* Acknowledge interrupt */ VICVectAddr = 0; diff --git a/c/src/lib/libbsp/arm/lpc24xx/irq/irq.c b/c/src/lib/libbsp/arm/lpc24xx/irq/irq.c index f99ce46c99..02ddb78942 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/irq/irq.c +++ b/c/src/lib/libbsp/arm/lpc24xx/irq/irq.c @@ -20,6 +20,7 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/score/armv4.h> #include <rtems/score/armv7m.h> #include <bsp.h> @@ -113,7 +114,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void) } /* Install the IRQ exception handler */ - _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, arm_exc_interrupt, NULL); + _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL); return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libbsp/arm/lpc24xx/startup/bspreset.c b/c/src/lib/libbsp/arm/lpc24xx/startup/bspreset.c index d7bbc897c2..ca84e942bc 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/startup/bspreset.c +++ b/c/src/lib/libbsp/arm/lpc24xx/startup/bspreset.c @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2008-2012 embedded brains GmbH. All rights reserved. + * Copyright (c) 2008-2013 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Obere Lagerstr. 30 @@ -21,6 +21,7 @@ */ #include <rtems.h> +#include <rtems/score/armv7m.h> #include <bsp/bootcard.h> #include <bsp/lpc24xx.h> @@ -32,15 +33,16 @@ BSP_START_TEXT_SECTION __attribute__((flatten)) void bsp_reset(void) rtems_interrupt_disable(level); - #ifdef ARM_MULTILIB_ARCH_V4 + #if defined(ARM_MULTILIB_ARCH_V4) /* Trigger watchdog reset */ WDCLKSEL = 0; WDTC = 0xff; WDMOD = 0x3; WDFEED = 0xaa; WDFEED = 0x55; - #else - printk("reset\n"); + #elif defined(ARM_MULTILIB_ARCH_V7M) + _ARMV7M_SCB->aircr = ARMV7M_SCB_AIRCR_VECTKEY + | ARMV7M_SCB_AIRCR_SYSRESETREQ; #endif while (true) { diff --git a/c/src/lib/libbsp/arm/lpc32xx/configure.ac b/c/src/lib/libbsp/arm/lpc32xx/configure.ac index 06be1da217..d7967ffb10 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/configure.ac +++ b/c/src/lib/libbsp/arm/lpc32xx/configure.ac @@ -106,7 +106,7 @@ RTEMS_BSPOPTS_HELP([BSP_USB_OTG_TRANSCEIVER_I2C_ADDR],[USB OTG transceiver I2C a RTEMS_BSPOPTS_SET([TESTS_USE_PRINTK],[*],[1]) RTEMS_BSPOPTS_HELP([TESTS_USE_PRINTK],[tests use printk() for output]) -RTEMS_BSP_CLEANUP_OPTIONS(0, 0) +RTEMS_BSP_CLEANUP_OPTIONS(0, 1) RTEMS_BSP_LINKCMDS AC_CONFIG_FILES([Makefile]) diff --git a/c/src/lib/libbsp/arm/lpc32xx/console/console-config.c b/c/src/lib/libbsp/arm/lpc32xx/console/console-config.c index 738f5d86de..1134bf118b 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/console/console-config.c +++ b/c/src/lib/libbsp/arm/lpc32xx/console/console-config.c @@ -45,7 +45,7 @@ static void lpc32xx_uart_set_register(uintptr_t addr, uint8_t i, uint8_t val) #ifdef LPC32XX_UART_3_BAUD static bool lpc32xx_uart_probe_3(int minor) { - LPC32XX_UARTCLK_CTRL |= 1U << 0; + LPC32XX_UARTCLK_CTRL |= BSP_BIT32(0); LPC32XX_U3CLK = LPC32XX_CONFIG_U3CLK; LPC32XX_UART_CLKMODE = BSP_FLD32SET(LPC32XX_UART_CLKMODE, 0x2, 4, 5); @@ -64,7 +64,7 @@ static void lpc32xx_uart_set_register(uintptr_t addr, uint8_t i, uint8_t val) */ gpio->p2_mux_set = BSP_BIT32(2); - LPC32XX_UARTCLK_CTRL |= 1U << 1; + LPC32XX_UARTCLK_CTRL |= BSP_BIT32(1); LPC32XX_U4CLK = LPC32XX_CONFIG_U4CLK; LPC32XX_UART_CLKMODE = BSP_FLD32SET(LPC32XX_UART_CLKMODE, 0x2, 6, 7); @@ -75,7 +75,10 @@ static void lpc32xx_uart_set_register(uintptr_t addr, uint8_t i, uint8_t val) #ifdef LPC32XX_UART_6_BAUD static bool lpc32xx_uart_probe_6(int minor) { - LPC32XX_UARTCLK_CTRL |= 1U << 3; + /* Bypass the IrDA modulator/demodulator */ + LPC32XX_UART_CTRL |= BSP_BIT32(5); + + LPC32XX_UARTCLK_CTRL |= BSP_BIT32(3); LPC32XX_U6CLK = LPC32XX_CONFIG_U6CLK; LPC32XX_UART_CLKMODE = BSP_FLD32SET(LPC32XX_UART_CLKMODE, 0x2, 10, 11); diff --git a/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c b/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c index b53b9f4bd3..67506ee9f9 100644 --- a/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c +++ b/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c @@ -19,6 +19,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/score/armv4.h> + #include <bsp.h> #include <bsp/irq.h> #include <bsp/irq-generic.h> @@ -252,11 +254,11 @@ void bsp_interrupt_dispatch(void) lpc32xx.sic_1.er = er_sic_1 & masks->field.sic_1; lpc32xx.sic_2.er = er_sic_2 & masks->field.sic_2; - psr = arm_status_irq_enable(); + psr = _ARMV4_Status_irq_enable(); bsp_interrupt_handler_dispatch(vector); - arm_status_restore(psr); + _ARMV4_Status_restore(psr); lpc32xx.mic.er = er_mic & lpc32xx_irq_enable.field.mic; lpc32xx.sic_1.er = er_sic_1 & lpc32xx_irq_enable.field.sic_1; @@ -341,7 +343,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void) lpc32xx.sic_1.atr = 0x26000; lpc32xx.sic_2.atr = 0x0; - lpc32xx_set_exception_handler(ARM_EXCEPTION_IRQ, arm_exc_interrupt); + lpc32xx_set_exception_handler(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt); return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libbsp/arm/shared/lpc/network/lpc-ethernet.c b/c/src/lib/libbsp/arm/shared/lpc/network/lpc-ethernet.c index 3b2d5b6fa5..ca4314396a 100644 --- a/c/src/lib/libbsp/arm/shared/lpc/network/lpc-ethernet.c +++ b/c/src/lib/libbsp/arm/shared/lpc/network/lpc-ethernet.c @@ -1323,6 +1323,9 @@ static int lpc_eth_up_or_down(lpc_eth_driver_entry *e, bool up) lpc_eth_config_module_enable(); + /* Enable RX/TX reset and disable soft reset */ + lpc_eth->mac1 = 0xf00; + /* Initialize PHY */ lpc_eth->mcfg = ETH_MCFG_CLOCK_SELECT(0x7); eno = lpc_eth_phy_up(e); diff --git a/c/src/lib/libbsp/arm/shared/start/start.S b/c/src/lib/libbsp/arm/shared/start/start.S index 2167adc8b5..9954a8717d 100644 --- a/c/src/lib/libbsp/arm/shared/start/start.S +++ b/c/src/lib/libbsp/arm/shared/start/start.S @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2011 embedded brains GmbH. All rights reserved. + * Copyright (c) 2008-2013 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Obere Lagerstr. 30 @@ -31,6 +31,14 @@ .extern boot_card .extern bsp_start_hook_0 .extern bsp_start_hook_1 + .extern _ARMV4_Exception_undef_default + .extern _ARMV4_Exception_swi_default + .extern _ARMV4_Exception_data_abort_default + .extern _ARMV4_Exception_pref_abort_default + .extern _ARMV4_Exception_reserved_default + .extern _ARMV4_Exception_irq_default + .extern _ARMV4_Exception_fiq_default + .extern _ARMV7M_Exception_default /* Global symbols */ .globl _start @@ -74,31 +82,31 @@ handler_addr_reset: handler_addr_undef: - .word reset + .word _ARMV4_Exception_undef_default handler_addr_swi: - .word reset + .word _ARMV4_Exception_swi_default handler_addr_prefetch: - .word reset + .word _ARMV4_Exception_data_abort_default handler_addr_abort: - .word reset + .word _ARMV4_Exception_pref_abort_default handler_addr_reserved: - .word reset + .word _ARMV4_Exception_reserved_default handler_addr_irq: - .word reset + .word _ARMV4_Exception_irq_default handler_addr_fiq: - .word reset + .word _ARMV4_Exception_fiq_default bsp_start_vector_table_end: @@ -199,13 +207,6 @@ twiddle: b twiddle -.arm - -reset: - - SWITCH_FROM_ARM_TO_THUMB r0 - b twiddle - #elif defined(ARM_MULTILIB_ARCH_V7M) .syntax unified @@ -218,22 +219,22 @@ bsp_start_vector_table_begin: .word bsp_stack_main_end .word _start /* Reset */ - .word bsp_reset /* NMI */ - .word bsp_reset /* Hard Fault */ - .word bsp_reset /* MPU Fault */ - .word bsp_reset /* Bus Fault */ - .word bsp_reset /* Usage Fault */ - .word bsp_reset /* Reserved */ - .word bsp_reset /* Reserved */ - .word bsp_reset /* Reserved */ - .word bsp_reset /* Reserved */ - .word bsp_reset /* SVC */ - .word bsp_reset /* Debug Monitor */ - .word bsp_reset /* Reserved */ - .word bsp_reset /* PendSV */ - .word bsp_reset /* SysTick */ + .word _ARMV7M_Exception_default /* NMI */ + .word _ARMV7M_Exception_default /* Hard Fault */ + .word _ARMV7M_Exception_default /* MPU Fault */ + .word _ARMV7M_Exception_default /* Bus Fault */ + .word _ARMV7M_Exception_default /* Usage Fault */ + .word _ARMV7M_Exception_default /* Reserved */ + .word _ARMV7M_Exception_default /* Reserved */ + .word _ARMV7M_Exception_default /* Reserved */ + .word _ARMV7M_Exception_default /* Reserved */ + .word _ARMV7M_Exception_default /* SVC */ + .word _ARMV7M_Exception_default /* Debug Monitor */ + .word _ARMV7M_Exception_default /* Reserved */ + .word _ARMV7M_Exception_default /* PendSV */ + .word _ARMV7M_Exception_default /* SysTick */ .rept BSP_INTERRUPT_VECTOR_MAX + 1 - .word bsp_reset /* IRQ */ + .word _ARMV7M_Exception_default /* IRQ */ .endr bsp_start_vector_table_end: diff --git a/c/src/lib/libbsp/arm/smdk2410/Makefile.am b/c/src/lib/libbsp/arm/smdk2410/Makefile.am index 526c7ab45d..e5dee1a99a 100644 --- a/c/src/lib/libbsp/arm/smdk2410/Makefile.am +++ b/c/src/lib/libbsp/arm/smdk2410/Makefile.am @@ -28,7 +28,7 @@ libbsp_a_SOURCES = # startup libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \ - ../gp32/startup/bspstart.c ../../shared/bspclean.c \ + ../gp32/startup/bspstart.c ../gp32/startup/bspidle.c ../../shared/bspclean.c \ startup/bspreset.c startup/memmap.c \ ../../shared/bootcard.c ../../shared/sbrk.c \ ../../shared/bsppretaskinghook.c \ diff --git a/c/src/lib/libbsp/m68k/mvme167/include/bsp.h b/c/src/lib/libbsp/m68k/mvme167/include/bsp.h index f2521e9118..305787d800 100644 --- a/c/src/lib/libbsp/m68k/mvme167/include/bsp.h +++ b/c/src/lib/libbsp/m68k/mvme167/include/bsp.h @@ -1,11 +1,14 @@ -/* bsp.h +/** + * @file * * Following defines must reflect the setup of the particular MVME167. * All page references are to the MVME166/MVME167/MVME187 Single Board * Computer Programmer's Reference Guide (MVME187PG/D2) with the April * 1993 supplements/addenda (MVME187PG/D2A1). - * - * COPYRIGHT (c) 1989-2009. + */ + +/* + * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -309,7 +312,7 @@ rtems_isr_entry set_vector( #define EXTERN extern #endif -extern rtems_isr_entry M68Kvec[]; /* vector table address */ +extern void *M68Kvec[]; /* vector table address */ #ifdef __cplusplus } diff --git a/c/src/lib/libbsp/m68k/mvme167/startup/bspclean.c b/c/src/lib/libbsp/m68k/mvme167/startup/bspclean.c index 820ffe89ed..4be67fec41 100644 --- a/c/src/lib/libbsp/m68k/mvme167/startup/bspclean.c +++ b/c/src/lib/libbsp/m68k/mvme167/startup/bspclean.c @@ -1,9 +1,12 @@ -/* bspclean.c +/** + * @file * * These routines return control to 167Bug after a normal exit from the * application. - * - * COPYRIGHT (c) 1989-2010. + */ + +/* + * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -21,17 +24,11 @@ extern void start( void ); extern void page_table_teardown( void ); -/* - * bsp_return_to_monitor_trap +/** + * @brief bsp_return_to_monitor_trap * * Switch the VBR back to ROM and make a .RETURN syscall to return control to * 167 Bug. If 167Bug ever returns, restart the application. - * - * Input parameters: NONE - * - * Output parameters: NONE - * - * Return values: NONE */ static void bsp_return_to_monitor_trap( void ) { diff --git a/c/src/lib/libbsp/m68k/mvme167/startup/bspstart.c b/c/src/lib/libbsp/m68k/mvme167/startup/bspstart.c index 441c8eb38b..2c7f5ebb21 100644 --- a/c/src/lib/libbsp/m68k/mvme167/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/mvme167/startup/bspstart.c @@ -1,30 +1,5 @@ -/* bspstart.c - * - * This set of routines starts the application. It includes application, - * board, and monitor specific initialization and configuration. The generic - * CPU dependent initialization has been performed before any of these are - * invoked. - * - * COPYRIGHT (c) 1989-2010. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - * - * Modifications of respective RTEMS files: - * Copyright (c) 1998, National Research Council of Canada - */ - -#include <bsp.h> -#include <page_table.h> -#include <fatal.h> - -void M68KFPSPInstallExceptionHandlers (void); -extern rtems_isr_entry M68Kvec[]; - -/* - * bsp_start() +/** + * @file * * Board-specific initialization code. Called from the generic boot_card() * function defined in rtems/c/src/lib/libbsp/shared/main.c. That function @@ -43,22 +18,35 @@ extern rtems_isr_entry M68Kvec[]; * * ASSUMES THAT 167BUG IS PRESENT TO CATCH ANY EXCEPTIONS DURING * INITIALIZATION. + */ + +/* + * COPYRIGHT (c) 1989-2012. + * On-Line Applications Research Corporation (OAR). * - * Input parameters: NONE - * - * Output parameters: NONE + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. * - * Return values: NONE + * Modifications of respective RTEMS files: + * Copyright (c) 1998, National Research Council of Canada */ + +#include <bsp.h> +#include <bsp/bootcard.h> +#include <page_table.h> + +void M68KFPSPInstallExceptionHandlers (void); + void bsp_start( void ) { - rtems_isr_entry *rom_monitor_vector_table; + void **rom_monitor_vector_table; int index; /* * 167Bug Vectors are at 0xFFE00000 */ - rom_monitor_vector_table = (rtems_isr_entry *)0xFFE00000; + rom_monitor_vector_table = (void **)0xFFE00000; m68k_set_vbr( rom_monitor_vector_table ); /* diff --git a/c/src/lib/libbsp/no_cpu/no_bsp/shmsupp/mpisr.c b/c/src/lib/libbsp/no_cpu/no_bsp/shmsupp/mpisr.c index 7d450d6298..064bad4461 100644 --- a/c/src/lib/libbsp/no_cpu/no_bsp/shmsupp/mpisr.c +++ b/c/src/lib/libbsp/no_cpu/no_bsp/shmsupp/mpisr.c @@ -1,6 +1,11 @@ -/* Shm_isr_nobsp() +/** + * @file * - * COPYRIGHT (c) 1989-1999. + * Template for Shared Memory Driver Interrupt Support + */ + +/* + * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -12,7 +17,7 @@ #include <bsp.h> #include <shm_driver.h> -rtems_isr Shm_isr_nobsp( void ) +rtems_isr Shm_isr_nobsp(rtems_vector_number ignored) { /* * If this routine has to do anything other than the mpisr.c @@ -22,20 +27,15 @@ rtems_isr Shm_isr_nobsp( void ) * must be cleared. * * If the generic mpisr.c satisifies your requirements, then - * remove this routine from your target's shmsupp/mpisb.c file. + * remove this routine from your target's shmsupp/mpisr.c file. * Then simply install the generic Shm_isr in the Shm_setvec * routine below. */ } -/* Shm_setvec - * +/* * This driver routine sets the SHM interrupt vector to point to the * driver's SHM interrupt service routine. - * - * Input parameters: NONE - * - * Output parameters: NONE */ void Shm_setvec( void ) diff --git a/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am b/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am index 4ee0d2464e..7d970ae7fa 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am +++ b/c/src/lib/libbsp/powerpc/gen83xx/Makefile.am @@ -66,6 +66,7 @@ libbsp_a_SOURCES += ../../shared/bsplibc.c \ startup/bspstart.c \ ../../shared/bspclean.c \ startup/bspreset.c \ + startup/bsprestart.c \ ../../shared/bspgetworkarea.c \ ../../shared/src/bsp-uboot-board-info.c \ ../shared/uboot_getenv.c diff --git a/c/src/lib/libbsp/powerpc/gen83xx/configure.ac b/c/src/lib/libbsp/powerpc/gen83xx/configure.ac index 0b2435785f..369899820e 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/configure.ac +++ b/c/src/lib/libbsp/powerpc/gen83xx/configure.ac @@ -76,7 +76,7 @@ AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes") AC_CONFIG_FILES([Makefile]) RTEMS_BSP_BOOTCARD_OPTIONS -RTEMS_BSP_CLEANUP_OPTIONS(0, 0) +RTEMS_BSP_CLEANUP_OPTIONS(0, 1) RTEMS_BSP_LINKCMDS RTEMS_PPC_EXCEPTIONS diff --git a/c/src/lib/libbsp/powerpc/gen83xx/i2c/i2c_init.c b/c/src/lib/libbsp/powerpc/gen83xx/i2c/i2c_init.c index 9b30d0fd74..b427da7314 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/i2c/i2c_init.c +++ b/c/src/lib/libbsp/powerpc/gen83xx/i2c/i2c_init.c @@ -20,10 +20,31 @@ #include <mpc83xx/mpc83xx_i2cdrv.h> #include <libchip/i2c-2b-eeprom.h> +#include <libchip/i2c-sc620.h> #include <bsp/irq.h> #include <bsp.h> -static mpc83xx_i2c_desc_t mpc83xx_i2c_bus_tbl[2] = { +static void i2c1_probe(mpc83xx_i2c_softc_t *self) +{ +#if MPC83XX_CHIP_TYPE != 8309 + if (((mpc83xx.clk.sccr >> (31-1)) & 0x03) > 0) { + self->base_frq = + (BSP_bus_frequency + /((mpc83xx.clk.sccr >> (31-1)) & 0x03)); + } +#else /* MPC83XX_CHIP_TYPE != 8309 */ + self->base_frq = BSP_bus_frequency; +#endif /* MPC83XX_CHIP_TYPE != 8309 */ +} + +#ifndef MPC83XX_BOARD_BR_UID +static void i2c2_probe(mpc83xx_i2c_softc_t *self) +{ + self->base_frq = BSP_bus_frequency; +} +#endif /* MPC83XX_BOARD_BR_UID */ + +static mpc83xx_i2c_desc_t mpc83xx_i2c_bus_tbl[] = { /* first channel */ { {/* public fields */ @@ -34,27 +55,26 @@ static mpc83xx_i2c_desc_t mpc83xx_i2c_bus_tbl[2] = { .reg_ptr = &mpc83xx.i2c[0], .initialized = FALSE, .irq_number = BSP_IPIC_IRQ_I2C1, - .base_frq = 0 /* will be set during initiailization */ + .base_frq = 0, /* will be set during probe */ + .probe = i2c1_probe } - }, + } +#ifndef MPC83XX_BOARD_BR_UID /* second channel */ - { + , { { /* public fields */ .ops = &mpc83xx_i2c_ops, - .size = sizeof(mpc83xx_i2c_bus_tbl[1]), + .size = sizeof(mpc83xx_i2c_bus_tbl[0]), }, { /* our private fields */ .reg_ptr = &mpc83xx.i2c[1], .initialized = FALSE, .irq_number = BSP_IPIC_IRQ_I2C2, - .base_frq = 0 /* will be set during initiailization */ + .base_frq = 0, /* will be set during probe */ + .probe = i2c2_probe } } -}; - -rtems_libi2c_bus_t *mpc83xx_i2c_bus_descriptor[2] = { - &mpc83xx_i2c_bus_tbl[0].bus_desc, - &mpc83xx_i2c_bus_tbl[1].bus_desc +#endif /* MPC83XX_BOARD_BR_UID */ }; /*=========================================================================*\ @@ -76,8 +96,10 @@ rtems_status_code bsp_register_i2c \*=========================================================================*/ { - int ret_code; - int i2c1_busno,i2c2_busno; + char device_path[] = "/dev/i2c?"; + size_t n = RTEMS_ARRAY_SIZE(mpc83xx_i2c_bus_tbl); + size_t i; + int i2c_busno[n]; /* * init I2C library (if not already done) @@ -85,54 +107,41 @@ rtems_status_code bsp_register_i2c rtems_libi2c_initialize (); /* - * update input frequency of I2c modules into descriptor - */ - /* - * I2C1 is clocked with TSEC 1 + * init I2C buses */ - if (((mpc83xx.clk.sccr >> (31-1)) & 0x03) > 0) { - mpc83xx_i2c_bus_tbl[0].softc.base_frq = - (BSP_bus_frequency - /((mpc83xx.clk.sccr >> (31-1)) & 0x03)); - } + for (i = 0; i < n; ++i) { + mpc83xx_i2c_desc_t *desc = &mpc83xx_i2c_bus_tbl[i]; - mpc83xx_i2c_bus_tbl[1].softc.base_frq = BSP_bus_frequency; - /* - * register first I2C bus - */ - ret_code = rtems_libi2c_register_bus("/dev/i2c1", - mpc83xx_i2c_bus_descriptor[0]); - if (ret_code < 0) { - return -ret_code; - } - i2c1_busno = ret_code; - /* - * register second I2C bus - */ - ret_code = rtems_libi2c_register_bus("/dev/i2c2", - mpc83xx_i2c_bus_descriptor[1]); - if (ret_code < 0) { - return -ret_code; + (*desc->softc.probe)(&desc->softc); + device_path[sizeof(device_path) - 2] = (char) ('1' + i); + i2c_busno[i] = rtems_libi2c_register_bus(device_path, &desc->bus_desc); } - i2c2_busno = ret_code; #ifdef RTEMS_BSP_I2C_EEPROM_DEVICE_NAME - - /* - * register EEPROM to bus 1, Address 0x50 - */ - ret_code = rtems_libi2c_register_drv(RTEMS_BSP_I2C_EEPROM_DEVICE_NAME, - i2c_2b_eeprom_driver_descriptor, - i2c1_busno,0x50); - - if (ret_code < 0) { - return -ret_code; + if (n > 0) { + /* + * register EEPROM to bus 1, Address 0x50 + */ + rtems_libi2c_register_drv(RTEMS_BSP_I2C_EEPROM_DEVICE_NAME, + i2c_2b_eeprom_driver_descriptor, + i2c_busno[0],0x50); } - #endif /* RTEMS_BSP_I2C_EEPROM_DEVICE_NAME */ +#ifdef MPC83XX_BOARD_BR_UID + if (n > 0) { + rtems_libi2c_register_drv( + "sc620", + &i2c_sc620_driver, + i2c_busno[0], + 0x70 + ); + } +#endif /* MPC83XX_BOARD_BR_UID */ + /* * FIXME: register RTC driver, when available */ - return 0; + + return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libbsp/powerpc/gen83xx/include/bsp.h b/c/src/lib/libbsp/powerpc/gen83xx/include/bsp.h index fcead98b7e..cc97cdc071 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/include/bsp.h +++ b/c/src/lib/libbsp/powerpc/gen83xx/include/bsp.h @@ -145,6 +145,8 @@ void mpc83xx_zero_4( void *dest, size_t n); void cpu_init( void); +void bsp_restart(void *addr); + #ifdef __cplusplus } #endif diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/bsprestart.c b/c/src/lib/libbsp/powerpc/gen83xx/startup/bsprestart.c new file mode 100644 index 0000000000..4e27c4e6c0 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/bsprestart.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2008-2013 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#include <bsp.h> +#include <bsp/u-boot.h> + +#include <libcpu/powerpc-utility.h> + +void bsp_restart(void *addr) +{ + rtems_interrupt_level level; + void (*start)(void) = addr; + #ifdef HAS_UBOOT + const void *mem_begin = (const void *) bsp_uboot_board_info.bi_memstart; + size_t mem_size = bsp_uboot_board_info.bi_memsize; + #else /* HAS_UBOOT */ + const void *mem_begin = bsp_ram_start; + size_t mem_size = (size_t) bsp_ram_size; + #endif /* HAS_UBOOT */ + uint32_t hid0; + + rtems_interrupt_disable(level); + + hid0 = PPC_SPECIAL_PURPOSE_REGISTER(HID0); + + if ((hid0 & HID0_DCE) != 0) { + rtems_cache_flush_multiple_data_lines(mem_begin, mem_size); + } + + hid0 &= ~(HID0_DCE | HID0_ICE); + + PPC_SET_SPECIAL_PURPOSE_REGISTER(HID0, hid0); + + (*start)(); +} diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/cpuinit.c b/c/src/lib/libbsp/powerpc/gen83xx/startup/cpuinit.c index 0cffc24273..ab409ca7ed 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/startup/cpuinit.c +++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/cpuinit.c @@ -141,14 +141,21 @@ void cpu_init( void) { BAT dbat, ibat; uint32_t msr; + uint32_t hid0; /* Clear MMU and segment registers */ clear_mmu_regs(); /* Clear caches */ - PPC_CLEAR_SPECIAL_PURPOSE_REGISTER_BITS( HID0, HID0_ILOCK | HID0_DLOCK | HID0_ICE | HID0_DCE); - PPC_SET_SPECIAL_PURPOSE_REGISTER_BITS( HID0, HID0_ICFI | HID0_DCI); - PPC_CLEAR_SPECIAL_PURPOSE_REGISTER_BITS( HID0, HID0_ICFI | HID0_DCI); + hid0 = PPC_SPECIAL_PURPOSE_REGISTER(HID0); + if ((hid0 & (HID0_ICE | HID0_DCE)) == 0) { + hid0 &= ~(HID0_ILOCK | HID0_DLOCK | HID0_ICE | HID0_DCE); + PPC_SET_SPECIAL_PURPOSE_REGISTER(HID0, hid0); + hid0 |= HID0_ICFI | HID0_DCI; + PPC_SET_SPECIAL_PURPOSE_REGISTER(HID0, hid0); + hid0 &= ~(HID0_ICFI | HID0_DCI); + PPC_SET_SPECIAL_PURPOSE_REGISTER(HID0, hid0); + } /* * Set up IBAT registers in MMU diff --git a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.br_uid b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.br_uid index 2764431fac..db004b819f 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.br_uid +++ b/c/src/lib/libbsp/powerpc/gen83xx/startup/linkcmds.br_uid @@ -8,7 +8,6 @@ MEMORY { RAM : ORIGIN = 0x0, LENGTH = 256M ROM : ORIGIN = 0xfe000000, LENGTH = 2M MPC83XX_REGS : ORIGIN = 0xe0000000, LENGTH = 256k - NIRVANA : ORIGIN = 0x0, LENGTH = 0 } INCLUDE linkcmds.base diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac b/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac index e691b364d8..63f6a9187d 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/configure.ac @@ -32,6 +32,11 @@ RTEMS_BSPOPTS_SET_INSTRUCTION_CACHE_ENABLED([gwlcfm],[]) RTEMS_BSPOPTS_SET_INSTRUCTION_CACHE_ENABLED([*],[1]) RTEMS_BSPOPTS_HELP_INSTRUCTION_CACHE_ENABLED +RTEMS_BSPOPTS_SET([BSP_DATA_CACHE_USE_WRITE_THROUGH],[mpc5674f_ecu508*],[1]) +RTEMS_BSPOPTS_SET([BSP_DATA_CACHE_USE_WRITE_THROUGH],[*],[]) +RTEMS_BSPOPTS_HELP([BSP_DATA_CACHE_USE_WRITE_THROUGH], +[use write-through for data cache]) + RTEMS_BSPOPTS_SET([PPC_EXC_CONFIG_USE_FIXED_HANDLER],[*],[1]) RTEMS_BSPOPTS_HELP([PPC_EXC_CONFIG_USE_FIXED_HANDLER], [use fixed high-level exception handler]) diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/i2c/i2c_init.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/i2c/i2c_init.c index 3103531b33..92e830dcbc 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/i2c/i2c_init.c +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/i2c/i2c_init.c @@ -24,6 +24,11 @@ #include <bsp/mpc83xx_i2cdrv.h> #if MPC55XX_CHIP_FAMILY == 551 + static void i2c_probe(mpc83xx_i2c_softc_t *self) + { + self->base_frq = bsp_clock_speed; + } + static mpc83xx_i2c_desc_t mpc55xx_i2c_bus = { .bus_desc = { .ops = &mpc83xx_i2c_ops, @@ -33,7 +38,8 @@ .reg_ptr = (m83xxI2CRegisters_t *) 0xfff88000, .initialized = FALSE, .irq_number = MPC55XX_IRQ_I2C(0), - .base_frq = 0 + .base_frq = 0, + .probe = i2c_probe } }; @@ -44,7 +50,6 @@ rtems_libi2c_initialize (); - mpc55xx_i2c_bus.softc.base_frq = bsp_clock_speed; busno = rtems_libi2c_register_bus( "/dev/i2c1", &mpc55xx_i2c_bus.bus_desc diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-mmu.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-mmu.c index f1b321221e..6289530987 100644 --- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-mmu.c +++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-mmu.c @@ -85,7 +85,11 @@ const struct MMU_tag mpc55xx_start_config_mmu [] = { MPC55XX_MMU_TAG_INITIALIZER(9, 0x00100000, MPC55XX_MMU_1M, 1, 0, 1, 0), MPC55XX_MMU_TAG_INITIALIZER(10, 0x00200000, MPC55XX_MMU_2M, 1, 0, 1, 0), /* External SRAM 2M */ - MPC55XX_MMU_TAG_INITIALIZER(2, 0x20000000, MPC55XX_MMU_2M, 0, 1, 1, 0), + #ifndef BSP_DATA_CACHE_USE_WRITE_THROUGH + MPC55XX_MMU_TAG_INITIALIZER(2, 0x20000000, MPC55XX_MMU_2M, 0, 1, 1, 0), + #else + MPC55XX_MMU_TAG_INITIALIZER(2, 0x20000000, MPC55XX_MMU_2M, 0, 1, 1, 2), + #endif /* Internal SRAM 256k */ MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000, MPC55XX_MMU_256K, 0, 1, 1, 0), MPC55XX_MMU_TAG_INITIALIZER(11, 0x40020000, MPC55XX_MMU_64K, 0, 1, 1, 0), @@ -118,6 +122,8 @@ const struct MMU_tag mpc55xx_start_config_mmu [] = { MPC55XX_MMU_TAG_INITIALIZER(8, 0x00080000, MPC55XX_MMU_512K, 1, 0, 1, 0), MPC55XX_MMU_TAG_INITIALIZER(9, 0x00100000, MPC55XX_MMU_1M, 1, 0, 1, 0), MPC55XX_MMU_TAG_INITIALIZER(10, 0x00200000, MPC55XX_MMU_2M, 1, 0, 1, 0), + /* External MRAM 4M */ + MPC55XX_MMU_TAG_INITIALIZER(2, 0x20000000, MPC55XX_MMU_4M, 0, 1, 1, 0), /* Internal SRAM 256k */ MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000, MPC55XX_MMU_256K, 0, 1, 1, 0), MPC55XX_MMU_TAG_INITIALIZER(11, 0x40020000, MPC55XX_MMU_64K, 0, 1, 1, 0), @@ -125,13 +131,11 @@ const struct MMU_tag mpc55xx_start_config_mmu [] = { MPC55XX_MMU_TAG_INITIALIZER(13, 0x40038000, MPC55XX_MMU_16K, 0, 1, 1, 0), /* Used as cache-inhibited area (ADC, DSPI queues) */ MPC55XX_MMU_TAG_INITIALIZER(14, 0x4003c000, MPC55XX_MMU_16K, 0, 1, 1, 1), - /* External MRAM 4M */ - MPC55XX_MMU_TAG_INITIALIZER(15, 0x20000000, MPC55XX_MMU_4M, 0, 1, 1, 0), /* External FPGA */ - MPC55XX_MMU_TAG_INITIALIZER(16, 0x21000000, MPC55XX_MMU_8M, 0, 1, 1, 1), + MPC55XX_MMU_TAG_INITIALIZER(15, 0x21000000, MPC55XX_MMU_8M, 0, 1, 1, 1), #if defined(MPC55XX_BOARD_MPC5674F_RSM6_KOMA) /* External Ethernet controller */ - MPC55XX_MMU_TAG_INITIALIZER(18, 0x23000000, MPC55XX_MMU_1K, 0, 1, 1, 1), + MPC55XX_MMU_TAG_INITIALIZER(17, 0x23000000, MPC55XX_MMU_1K, 0, 1, 1, 1), #endif #else /* Used as cache-inhibited area (ADC, DSPI queues) */ diff --git a/c/src/lib/libbsp/powerpc/shared/src/memcpy.c b/c/src/lib/libbsp/powerpc/shared/src/memcpy.c index e4ac29221c..9df0ffecea 100644 --- a/c/src/lib/libbsp/powerpc/shared/src/memcpy.c +++ b/c/src/lib/libbsp/powerpc/shared/src/memcpy.c @@ -15,7 +15,9 @@ #include <bspopts.h> #include <rtems/powerpc/powerpc.h> -#if BSP_DATA_CACHE_ENABLED && PPC_CACHE_ALIGNMENT == 32 +#if BSP_DATA_CACHE_ENABLED \ + && PPC_CACHE_ALIGNMENT == 32 \ + && !defined(BSP_DATA_CACHE_USE_WRITE_THROUGH) #include <string.h> #include <stdint.h> diff --git a/c/src/lib/libbsp/powerpc/virtex4/include/irq.h b/c/src/lib/libbsp/powerpc/virtex4/include/irq.h index 50d3b4c880..d5c2c5cd5c 100644 --- a/c/src/lib/libbsp/powerpc/virtex4/include/irq.h +++ b/c/src/lib/libbsp/powerpc/virtex4/include/irq.h @@ -67,6 +67,8 @@ extern "C" { } rtems_irq_symbolic_name; extern rtems_irq_connect_data *BSP_rtems_irq_tbl; + void BSP_irqexc_on_fnc(const rtems_irq_connect_data *conn_data); + void BSP_irqexc_off_fnc(const rtems_irq_connect_data *unused); void BSP_rtems_irq_mngt_init(unsigned cpuId); #ifdef __cplusplus diff --git a/c/src/lib/libbsp/powerpc/virtex4/irq/irq_init.c b/c/src/lib/libbsp/powerpc/virtex4/irq/irq_init.c index ba22c0275a..ce20ba9692 100644 --- a/c/src/lib/libbsp/powerpc/virtex4/irq/irq_init.c +++ b/c/src/lib/libbsp/powerpc/virtex4/irq/irq_init.c @@ -91,7 +91,7 @@ void BSP_irqexc_off_fnc(const rtems_irq_connect_data *unused) /*********************************************************** * High level IRQ handler called from shared_raw_irq_code_entry */ -int C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned int excNum) +static int C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned int excNum) { /* * Handle interrupt diff --git a/c/src/lib/libbsp/powerpc/virtex4/startup/bspstart.c b/c/src/lib/libbsp/powerpc/virtex4/startup/bspstart.c index 73c2f847ed..6469979938 100644 --- a/c/src/lib/libbsp/powerpc/virtex4/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/virtex4/startup/bspstart.c @@ -139,7 +139,7 @@ void BSP_ask_for_reset(void) void BSP_panic(char *s) { - rtems_interrupt_level level; + __attribute__((unused)) rtems_interrupt_level level; rtems_interrupt_disable(level); @@ -151,7 +151,7 @@ void BSP_panic(char *s) void _BSP_Fatal_error(unsigned int v) { - rtems_interrupt_level level; + __attribute__((unused)) rtems_interrupt_level level; rtems_interrupt_disable(level); diff --git a/c/src/lib/libbsp/powerpc/virtex5/include/irq.h b/c/src/lib/libbsp/powerpc/virtex5/include/irq.h index a87562fdd2..007e414455 100644 --- a/c/src/lib/libbsp/powerpc/virtex5/include/irq.h +++ b/c/src/lib/libbsp/powerpc/virtex5/include/irq.h @@ -67,14 +67,15 @@ extern "C" { } rtems_irq_symbolic_name; extern rtems_irq_connect_data *BSP_rtems_irq_tbl; + void BSP_irqexc_on_fnc(const rtems_irq_connect_data *conn_data); + void BSP_irqexc_off_fnc(const rtems_irq_connect_data *unused); void BSP_rtems_irq_mngt_init(unsigned cpuId); -#ifdef __cplusplus -} - #define BSP_DEC BSP_PIT #define BSP_DECREMENTER BSP_PIT +#ifdef __cplusplus +} #endif #endif /* ASM */ diff --git a/c/src/lib/libbsp/powerpc/virtex5/irq/irq_init.c b/c/src/lib/libbsp/powerpc/virtex5/irq/irq_init.c index 70965128a6..122a9e2317 100644 --- a/c/src/lib/libbsp/powerpc/virtex5/irq/irq_init.c +++ b/c/src/lib/libbsp/powerpc/virtex5/irq/irq_init.c @@ -90,7 +90,7 @@ void BSP_irqexc_off_fnc(const rtems_irq_connect_data *unused) SPR_RW(BOOKE_TSR) -int C_dispatch_dec_handler (BSP_Exception_frame *frame, unsigned int excNum) +static int C_dispatch_dec_handler (BSP_Exception_frame *frame, unsigned int excNum) { /* Acknowledge the interrupt */ _write_BOOKE_TSR( BOOKE_TSR_DIS ); @@ -105,7 +105,7 @@ int C_dispatch_dec_handler (BSP_Exception_frame *frame, unsigned int excNum) /*********************************************************** * High level IRQ handler called from shared_raw_irq_code_entry */ -int C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned int excNum) +static int C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned int excNum) { /* * Handle interrupt diff --git a/c/src/lib/libbsp/powerpc/virtex5/startup/bspstart.c b/c/src/lib/libbsp/powerpc/virtex5/startup/bspstart.c index 4aa89f7bdf..a05016f0bb 100644 --- a/c/src/lib/libbsp/powerpc/virtex5/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/virtex5/startup/bspstart.c @@ -152,7 +152,7 @@ void BSP_ask_for_reset(void) void BSP_panic(char *s) { - rtems_interrupt_level level; + __attribute__((unused)) rtems_interrupt_level level; rtems_interrupt_disable(level); @@ -164,7 +164,7 @@ void BSP_panic(char *s) void _BSP_Fatal_error(unsigned int v) { - rtems_interrupt_level level; + __attribute__((unused)) rtems_interrupt_level level; rtems_interrupt_disable(level); diff --git a/c/src/lib/libbsp/shared/src/irq-server.c b/c/src/lib/libbsp/shared/src/irq-server.c index 0026f0f5a6..a6cdf4c0fb 100644 --- a/c/src/lib/libbsp/shared/src/irq-server.c +++ b/c/src/lib/libbsp/shared/src/irq-server.c @@ -220,8 +220,8 @@ rtems_status_code rtems_interrupt_server_handler_remove( sc = rtems_interrupt_handler_remove( vector, - ie.entry->handler, - ie.entry->arg + bsp_interrupt_server_trigger, + ie.entry ); if (sc != RTEMS_SUCCESSFUL) { return sc; diff --git a/c/src/lib/libbsp/sparc/leon3/leon_open_eth/leon_open_eth.c b/c/src/lib/libbsp/sparc/leon3/leon_open_eth/leon_open_eth.c index 963264edab..f8e700cf4b 100644 --- a/c/src/lib/libbsp/sparc/leon3/leon_open_eth/leon_open_eth.c +++ b/c/src/lib/libbsp/sparc/leon3/leon_open_eth/leon_open_eth.c @@ -54,7 +54,7 @@ int rtems_leon_open_eth_driver_attach( *(volatile int *) base_addr = 0; *(volatile int *) base_addr = 0x800; *(volatile int *) base_addr = 0; - leon_open_eth_configuration.base_address = base_addr; + leon_open_eth_configuration.base_address = (void *) base_addr; leon_open_eth_configuration.vector = eth_irq + 0x10; leon_open_eth_configuration.txd_count = TDA_COUNT; leon_open_eth_configuration.rxd_count = RDA_COUNT; diff --git a/c/src/lib/libbsp/sparc/leon3/shmsupp/getcfg.c b/c/src/lib/libbsp/sparc/leon3/shmsupp/getcfg.c index 60b47ca7cf..d70f495a26 100644 --- a/c/src/lib/libbsp/sparc/leon3/shmsupp/getcfg.c +++ b/c/src/lib/libbsp/sparc/leon3/shmsupp/getcfg.c @@ -1,27 +1,11 @@ -/* void Shm_Get_configuration( localnode, &shmcfg ) +/** + * @file * - * This routine initializes, if necessary, and returns a pointer - * to the Shared Memory Configuration Table for the XXX target. - * - * INPUT PARAMETERS: - * localnode - local node number - * shmcfg - address of pointer to SHM Config Table - * - * OUTPUT PARAMETERS: - * *shmcfg - pointer to SHM Config Table - * -XXX: FIX THE COMMENTS BELOW WHEN THE CPU IS KNOWN - * NOTES: The XYZ does not have an interprocessor interrupt. - * - * The following table illustrates the configuration limitations: - * - * BUS MAX - * MODE ENDIAN NODES - * ========= ====== ======= - * POLLED BIG 2+ - * INTERRUPT **** NOT SUPPORTED **** - * - * COPYRIGHT (c) 1989-1999. + * LEON3 Shared Memory Driver Support - Configuration + */ + +/* + * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -35,7 +19,6 @@ XXX: FIX THE COMMENTS BELOW WHEN THE CPU IS KNOWN /* multiprocessor communications interface (MPCI) table */ - extern rtems_mpci_entry Shm_Get_packet( rtems_packet_prefix ** ); @@ -56,19 +39,11 @@ extern rtems_mpci_entry Shm_Send_packet( ); -/* rtems_mpci_table MPCI_table = { */ -/* 100000, /\* default timeout value in ticks *\/ */ -/* MAX_PACKET_SIZE, /\* maximum packet size *\/ */ -/* Shm_Initialization, /\* initialization procedure *\/ */ -/* Shm_Get_packet, /\* get packet procedure *\/ */ -/* Shm_Return_packet, /\* return packet procedure *\/ */ -/* Shm_Send_packet, /\* packet send procedure *\/ */ -/* Shm_Receive_packet /\* packet receive procedure *\/ */ -/* }; */ - - /* - * configured if currently polling of interrupt driven + * configured if currently polling or interrupt driven + * + * NOTE: Code in mpisr.c is commented out. Fix when interrupt mode + * is added. */ #define INTERRUPT 0 /* XXX: */ @@ -95,7 +70,6 @@ void Shm_Get_configuration( shm_config_table **shmcfg ) { - extern rtems_configuration_table Configuration; int i; unsigned int tmp; diff --git a/c/src/lib/libbsp/sparc/leon3/shmsupp/lock.c b/c/src/lib/libbsp/sparc/leon3/shmsupp/lock.c index be3f64dbd9..91e0b6de98 100644 --- a/c/src/lib/libbsp/sparc/leon3/shmsupp/lock.c +++ b/c/src/lib/libbsp/sparc/leon3/shmsupp/lock.c @@ -1,12 +1,17 @@ -/* Shared Memory Lock Routines +/** + * @file + * + * LEON3 Shared Memory Lock Routines * * This shared memory locked queue support routine need to be * able to lock the specified locked queue. Interrupts are * disabled while the queue is locked to prevent preemption * and deadlock when two tasks poll for the same lock. * previous level. - * - * COPYRIGHT (c) 1989-1999. + */ + +/* + * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -20,11 +25,8 @@ /* - * Shm_Initialize_lock - * * Initialize the lock for the specified locked queue. */ - void Shm_Initialize_lock( Shm_Locked_queue_Control *lq_cb ) @@ -32,12 +34,12 @@ void Shm_Initialize_lock( lq_cb->lock = LQ_UNLOCKED; } -/* void _Shm_Lock( &lq_cb ) - * +/* * This shared memory locked queue support routine locks the * specified locked queue. It disables interrupts to prevent * a deadlock condition. */ +extern unsigned int LEON3_Atomic_Swap(uint32_t value, uint32_t *address); __asm__ ( ".text\n" @@ -63,16 +65,9 @@ void Shm_Lock( Shm_isrstat = isr_level; while ( lock_value ) { lock_value = LEON3_Atomic_Swap(lock_value, lockptr); -/* __asm__ volatile( "" */ -/* : "=r" (lockptr), "=r" (lock_value) */ -/* : "0" (lockptr), "1" (lock_value) */ -/* ); */ /* * If not available, then may want to delay to reduce load on lock. */ - -/* if ( lock_value ) */ -/* rtems_bsp_delay( 10 ); /\* approximately 10 microseconds *\/ */ } } diff --git a/c/src/lib/libbsp/sparc/leon3/shmsupp/mpisr.c b/c/src/lib/libbsp/sparc/leon3/shmsupp/mpisr.c index 6a05dd6197..560828f748 100644 --- a/c/src/lib/libbsp/sparc/leon3/shmsupp/mpisr.c +++ b/c/src/lib/libbsp/sparc/leon3/shmsupp/mpisr.c @@ -1,6 +1,11 @@ -/* Shm_isr_nobsp() +/** + * @file * - * COPYRIGHT (c) 1989-1999. + * LEON3 Shared Memory Driver Interrupt Support + */ + +/* + * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -12,7 +17,8 @@ #include <bsp.h> #include <shm_driver.h> -rtems_isr Shm_isr_nobsp( void ) +#if 0 +void Shm_isr(void) { /* * If this routine has to do anything other than the mpisr.c @@ -22,25 +28,23 @@ rtems_isr Shm_isr_nobsp( void ) * must be cleared. * * If the generic mpisr.c satisifies your requirements, then - * remove this routine from your target's shmsupp/mpisb.c file. + * remove this routine from your target's shmsupp/mpisr.c file. * Then simply install the generic Shm_isr in the Shm_setvec * routine below. */ } +#endif -/* Shm_setvec - * +/* * This driver routine sets the SHM interrupt vector to point to the * driver's SHM interrupt service routine. - * - * Input parameters: NONE - * - * Output parameters: NONE */ - - void Shm_setvec( void ) { + /* + * Interrupt driven mode is not currently supported. + * This is thought to be the interrupt to use. + */ LEON_Unmask_interrupt(LEON3_MP_IRQ); - set_vector(Shm_isr, LEON_TRAP_TYPE(LEON3_MP_IRQ), 1); + set_vector((rtems_isr_entry) Shm_isr, LEON_TRAP_TYPE(LEON3_MP_IRQ), 1); } diff --git a/c/src/lib/libcpu/arm/at91rm9200/irq/irq.c b/c/src/lib/libcpu/arm/at91rm9200/irq/irq.c index 8ef677529c..77b40697e1 100644 --- a/c/src/lib/libcpu/arm/at91rm9200/irq/irq.c +++ b/c/src/lib/libcpu/arm/at91rm9200/irq/irq.c @@ -10,6 +10,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/score/armv4.h> + #include <bsp.h> #include <bsp/irq.h> #include <bsp/irq-generic.h> @@ -50,7 +52,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void) /* disable all interrupts */ AIC_CTL_REG(AIC_IDCR) = 0xffffffff; - _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, arm_exc_interrupt, NULL); + _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL); return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libcpu/arm/lpc22xx/irq/irq.c b/c/src/lib/libcpu/arm/lpc22xx/irq/irq.c index acb25dce81..440c481b62 100644 --- a/c/src/lib/libcpu/arm/lpc22xx/irq/irq.c +++ b/c/src/lib/libcpu/arm/lpc22xx/irq/irq.c @@ -9,6 +9,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/score/armv4.h> + #include <bsp.h> #include <bsp/irq.h> #include <bsp/irq-generic.h> @@ -64,7 +66,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void) VICVectAddr = 0; /* Install the IRQ exception handler */ - _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, arm_exc_interrupt, NULL); + _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL); return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c b/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c index a7e5b670d2..447dedfc8c 100644 --- a/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c +++ b/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c @@ -10,6 +10,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/score/armv4.h> + #include <bsp.h> #include <bsp/irq.h> #include <bsp/irq-generic.h> @@ -36,7 +38,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_facility_initialize(void) { - _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, arm_exc_interrupt, NULL); + _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL); return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libcpu/arm/pxa255/irq/irq.c b/c/src/lib/libcpu/arm/pxa255/irq/irq.c index 214fb3c745..e65af93936 100644 --- a/c/src/lib/libcpu/arm/pxa255/irq/irq.c +++ b/c/src/lib/libcpu/arm/pxa255/irq/irq.c @@ -9,6 +9,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/score/armv4.h> + #include <bsp.h> #include <bsp/irq.h> #include <bsp/irq-generic.h> @@ -45,7 +47,7 @@ rtems_status_code bsp_interrupt_facility_initialize(void) XSCALE_INT_ICLR = 0x0; /* Install the IRQ exception handler */ - _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, arm_exc_interrupt, NULL); + _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL); return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libcpu/arm/s3c24xx/irq/irq.c b/c/src/lib/libcpu/arm/s3c24xx/irq/irq.c index 9aa97935cc..7758b77591 100644 --- a/c/src/lib/libcpu/arm/s3c24xx/irq/irq.c +++ b/c/src/lib/libcpu/arm/s3c24xx/irq/irq.c @@ -12,6 +12,8 @@ * http://www.rtems.com/license/LICENSE. */ +#include <rtems/score/armv4.h> + #include <bsp.h> #include <bsp/irq.h> #include <bsp/irq-generic.h> @@ -37,7 +39,7 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector) rtems_status_code bsp_interrupt_facility_initialize(void) { - _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, arm_exc_interrupt, NULL); + _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL); return RTEMS_SUCCESSFUL; } diff --git a/c/src/lib/libcpu/powerpc/mpc55xx/include/regs-mmu.h b/c/src/lib/libcpu/powerpc/mpc55xx/include/regs-mmu.h index 16612e670b..aaddeec228 100644 --- a/c/src/lib/libcpu/powerpc/mpc55xx/include/regs-mmu.h +++ b/c/src/lib/libcpu/powerpc/mpc55xx/include/regs-mmu.h @@ -157,7 +157,8 @@ extern "C" { .VALID = 1, .IPROT = 1, .TID = 0, .TS = 0, .TSIZE = (size) } \ }, \ .MAS2 = { .B = { \ - .EPN = (addr) >> 10, .VLE = 0, .W = 0, .I = (io), .M = 0, .G = (io), .E = 0 } \ + .EPN = (addr) >> 10, .VLE = 0, \ + .W = (io) == 2, .I = (io) == 1, .M = 0, .G = (io) == 1, .E = 0 } \ }, \ .MAS3 = { .B = { \ .RPN = (addr) >> 10, .U0 = 0, .U1 = 0, .U2 = 0, .U3 = 0, .UX = 0, \ diff --git a/c/src/lib/libcpu/powerpc/mpc83xx/i2c/mpc83xx_i2cdrv.c b/c/src/lib/libcpu/powerpc/mpc83xx/i2c/mpc83xx_i2cdrv.c index 97396434a3..ce4182327b 100644 --- a/c/src/lib/libcpu/powerpc/mpc83xx/i2c/mpc83xx_i2cdrv.c +++ b/c/src/lib/libcpu/powerpc/mpc83xx/i2c/mpc83xx_i2cdrv.c @@ -493,7 +493,6 @@ static rtems_status_code mpc83xx_i2c_send_addr \*=========================================================================*/ { mpc83xx_i2c_softc_t *softc_ptr = &(((mpc83xx_i2c_desc_t *)(bh))->softc); - bool long_addr = false; uint8_t addr_byte; rtems_status_code rc; @@ -505,7 +504,6 @@ static rtems_status_code mpc83xx_i2c_send_addr * determine, whether short or long address is needed, determine rd/wr */ if (addr > 0x7f) { - long_addr = true; addr_byte = (0xf0 | ((addr >> 7) & 0x06) | ((rw) ? 1 : 0)); @@ -565,7 +563,6 @@ static int mpc83xx_i2c_read_bytes mpc83xx_i2c_softc_t *softc_ptr = &(((mpc83xx_i2c_desc_t *)(bh))->softc); rtems_status_code rc; unsigned char *p = buf; - unsigned char dummy; #if defined(DEBUG) printk("mpc83xx_i2c_read_bytes called... "); @@ -579,7 +576,7 @@ static int mpc83xx_i2c_read_bytes /* * we need a dummy transfer here to start the first read */ - dummy = softc_ptr->reg_ptr->i2cdr; + softc_ptr->reg_ptr->i2cdr; while (len-- > 0) { if (len == 0) { diff --git a/c/src/lib/libcpu/powerpc/mpc83xx/i2c/mpc83xx_i2cdrv.h b/c/src/lib/libcpu/powerpc/mpc83xx/i2c/mpc83xx_i2cdrv.h index 0353f62138..bb3547ece8 100644 --- a/c/src/lib/libcpu/powerpc/mpc83xx/i2c/mpc83xx_i2cdrv.h +++ b/c/src/lib/libcpu/powerpc/mpc83xx/i2c/mpc83xx_i2cdrv.h @@ -49,6 +49,7 @@ typedef struct mpc83xx_i2c_softc { rtems_irq_number irq_number; /* IRQ number used for this module */ uint32_t base_frq; /* input frq for baud rate divider */ rtems_id irq_sema_id; /* SEMA used for IRQ signalling */ + void (*probe)(struct mpc83xx_i2c_softc *self); } mpc83xx_i2c_softc_t ; typedef struct { diff --git a/c/src/libchip/Makefile.am b/c/src/libchip/Makefile.am index 46c06b47cc..5e4ffabca9 100644 --- a/c/src/libchip/Makefile.am +++ b/c/src/libchip/Makefile.am @@ -67,6 +67,7 @@ EXTRA_DIST += rtc/README.ds1643 rtc/README.icm7170 rtc/README.m48t08 \ # i2c include_libchip_HEADERS += i2c/i2c-ds1621.h \ i2c/i2c-2b-eeprom.h \ + i2c/i2c-sc620.h \ i2c/spi-memdrv.h \ i2c/spi-flash-m25p40.h \ i2c/spi-fram-fm25l256.h \ @@ -82,6 +83,7 @@ libi2cio_a_SOURCES = i2c/i2c-ds1621.h \ i2c/spi-fram-fm25l256.h \ i2c/i2c-ds1621.c \ i2c/i2c-2b-eeprom.c \ + i2c/i2c-sc620.c \ i2c/spi-memdrv.c \ i2c/spi-flash-m25p40.c \ i2c/spi-fram-fm25l256.c \ diff --git a/c/src/libchip/i2c/i2c-sc620.c b/c/src/libchip/i2c/i2c-sc620.c new file mode 100644 index 0000000000..105d35d7cb --- /dev/null +++ b/c/src/libchip/i2c/i2c-sc620.c @@ -0,0 +1,95 @@ +/** + * @file + * + * @brief I2C Driver for SEMTECH SC620 Octal LED Driver + */ + +/* + * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include <libchip/i2c-sc620.h> + +#include <rtems/libio.h> + +#define SC620_REG_COUNT 10 + +static rtems_status_code i2c_sc620_write( + rtems_device_major_number major, + rtems_device_minor_number minor, + void *arg +) +{ + rtems_status_code sc = RTEMS_IO_ERROR; + rtems_libio_rw_args_t *rw = arg; + unsigned char *buf = (unsigned char *) &rw->buffer[0]; + + if (rw->count == 2 && buf[0] < SC620_REG_COUNT) { + int rv; + + rv = rtems_libi2c_start_write_bytes( + minor, buf, 2 + ); + if (rv == 2) { + sc = rtems_libi2c_send_stop(minor); + } + } + + rw->bytes_moved = sc == RTEMS_SUCCESSFUL ? 2 : 0; + + return sc; +} + +static rtems_status_code i2c_sc620_read( + rtems_device_major_number major, + rtems_device_minor_number minor, + void *arg +) +{ + rtems_status_code sc = RTEMS_IO_ERROR; + rtems_libio_rw_args_t *rw = arg; + unsigned char *buf = (unsigned char *) &rw->buffer[0]; + + if (rw->count == 1 && buf[0] < SC620_REG_COUNT) { + int rv; + + rv = rtems_libi2c_start_write_bytes(minor, buf, 1); + if (rv == 1) { + sc = rtems_libi2c_send_addr(minor, 0); + if (sc == RTEMS_SUCCESSFUL) { + rv = rtems_libi2c_read_bytes(minor, buf, 1); + if (rv == 1) { + sc = rtems_libi2c_send_stop(minor); + } + } + } + } + + rw->bytes_moved = sc == RTEMS_SUCCESSFUL ? 1 : 0; + + return sc; +} + +static rtems_driver_address_table i2c_sc620_ops = { + .read_entry = i2c_sc620_read, + .write_entry = i2c_sc620_write +}; + +rtems_libi2c_drv_t i2c_sc620_driver = { + .ops = &i2c_sc620_ops, + .size = sizeof(i2c_sc620_driver) +}; diff --git a/c/src/libchip/i2c/i2c-sc620.h b/c/src/libchip/i2c/i2c-sc620.h new file mode 100644 index 0000000000..119cd3d559 --- /dev/null +++ b/c/src/libchip/i2c/i2c-sc620.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifndef I2C_SC620_H +#define I2C_SC620_H + +#include <rtems/libi2c.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * @brief I2C driver for SEMTECH SC620 octal LED driver. + * + * A write() must use two character buffer. The buffer[0] value specifies the + * register and the buffer[1] value specifies the register data. + * + * A read() must use a one character buffer. The buffer[0] value specifies the + * register on function entry. The buffer[0] value contains the register value + * after a successful operation. + */ +extern rtems_libi2c_drv_t i2c_sc620_driver; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* I2C_SC620_H */ diff --git a/c/src/libchip/preinstall.am b/c/src/libchip/preinstall.am index 51c9a4d5aa..7e80d6d598 100644 --- a/c/src/libchip/preinstall.am +++ b/c/src/libchip/preinstall.am @@ -126,6 +126,10 @@ $(PROJECT_INCLUDE)/libchip/i2c-2b-eeprom.h: i2c/i2c-2b-eeprom.h $(PROJECT_INCLUD $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libchip/i2c-2b-eeprom.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/libchip/i2c-2b-eeprom.h +$(PROJECT_INCLUDE)/libchip/i2c-sc620.h: i2c/i2c-sc620.h $(PROJECT_INCLUDE)/libchip/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libchip/i2c-sc620.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/libchip/i2c-sc620.h + $(PROJECT_INCLUDE)/libchip/spi-memdrv.h: i2c/spi-memdrv.h $(PROJECT_INCLUDE)/libchip/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/libchip/spi-memdrv.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/libchip/spi-memdrv.h diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am index 5b11e7e6f6..fb8cd53f78 100644 --- a/cpukit/Makefile.am +++ b/cpukit/Makefile.am @@ -42,7 +42,7 @@ if NEWLIB include_sysdir = $(includedir)/sys include_sys_HEADERS = -include_HEADERS += libnetworking/memory.h +include_HEADERS += include/memory.h include_HEADERS += libmd/md4.h include_HEADERS += libmd/md5.h @@ -55,7 +55,8 @@ include_sys_HEADERS += libcsupport/include/sys/ttycom.h include_sys_HEADERS += libcsupport/include/sys/termios.h include_sys_HEADERS += libcsupport/include/sys/utsname.h -include_sys_HEADERS += libnetworking/sys/uio.h +include_sys_HEADERS += include/sys/uio.h +include_sys_HEADERS += include/sys/_iovec.h include_sys_HEADERS += include/sys/priority.h if LIBNETWORKING diff --git a/cpukit/ftpd/ftpd.c b/cpukit/ftpd/ftpd.c index 8ffd878d2d..3b77b3bf33 100644 --- a/cpukit/ftpd/ftpd.c +++ b/cpukit/ftpd/ftpd.c @@ -1914,39 +1914,49 @@ session(rtems_task_argument arg) while(1) { rtems_event_set set; + int rv; rtems_event_receive(FTPD_RTEMS_EVENT, RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &set); chroot_made = chroot_made || chroot(ftpd_root) == 0; - errno = 0; + rv = chroot_made ? chdir("/") : -1; - send_reply(info, 220, FTPD_SERVER_MESSAGE); + errno = 0; - while (1) + if (rv == 0) { - char buf[FTPD_BUFSIZE]; - char *cmd, *opts, *args; + send_reply(info, 220, FTPD_SERVER_MESSAGE); - if (fgets(buf, FTPD_BUFSIZE, info->ctrl_fp) == NULL) + while (1) { - syslog(LOG_INFO, "ftpd: Connection aborted."); - break; - } + char buf[FTPD_BUFSIZE]; + char *cmd, *opts, *args; - split_command(buf, &cmd, &opts, &args); + if (fgets(buf, FTPD_BUFSIZE, info->ctrl_fp) == NULL) + { + syslog(LOG_INFO, "ftpd: Connection aborted."); + break; + } - if (!strcmp("QUIT", cmd)) - { - send_reply(info, 221, "Goodbye."); - break; - } - else - { - exec_command(info, cmd, args); + split_command(buf, &cmd, &opts, &args); + + if (!strcmp("QUIT", cmd)) + { + send_reply(info, 221, "Goodbye."); + break; + } + else + { + exec_command(info, cmd, args); + } } } + else + { + send_reply(info, 421, "Service not available, closing control connection."); + } /* Close connection and put ourselves back into the task pool. */ close_data_socket(info); @@ -1954,8 +1964,6 @@ session(rtems_task_argument arg) free(info->user); free(info->pass); task_pool_release(info); - - chdir("/"); } } diff --git a/cpukit/libnetworking/memory.h b/cpukit/include/memory.h index 99fdb5e1e4..99fdb5e1e4 100644 --- a/cpukit/libnetworking/memory.h +++ b/cpukit/include/memory.h diff --git a/cpukit/include/rtems/bspIo.h b/cpukit/include/rtems/bspIo.h index dc5f304821..db9ac038c1 100644 --- a/cpukit/include/rtems/bspIo.h +++ b/cpukit/include/rtems/bspIo.h @@ -1,6 +1,8 @@ /** * @file rtems/bspIo.h * + * @brief Interface to Kernel Print Methods + * * This include file defines the interface to kernel print methods. */ diff --git a/cpukit/include/rtems/btimer.h b/cpukit/include/rtems/btimer.h index 0e02799734..fb38fd68b2 100644 --- a/cpukit/include/rtems/btimer.h +++ b/cpukit/include/rtems/btimer.h @@ -1,7 +1,7 @@ /** * @file rtems/btimer.h * - * RTEMS benchmark timer API for all boards. + * @brief RTEMS Benchmark Timer API for all Boards */ /* @@ -16,7 +16,7 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ - + /* * All the functions declared as extern after this comment * MUST be implemented in each BSP. diff --git a/cpukit/include/rtems/fs.h b/cpukit/include/rtems/fs.h index 6270877ee5..a403e66f3c 100644 --- a/cpukit/include/rtems/fs.h +++ b/cpukit/include/rtems/fs.h @@ -1,6 +1,8 @@ /** * @file rtems/fs.h * + * @brief Basic Filesystem Types + * * This file defines basic filesystem types */ diff --git a/cpukit/include/rtems/irq-extension.h b/cpukit/include/rtems/irq-extension.h index 644091bb37..ff2c6daff4 100644 --- a/cpukit/include/rtems/irq-extension.h +++ b/cpukit/include/rtems/irq-extension.h @@ -38,9 +38,8 @@ extern "C" { * In addition to the Classic API interrupt handler with a handle are * supported. You can also install multiple shared handler for one interrupt * vector. - * - * @{ */ +/**@{**/ /** * @brief Makes the interrupt handler unique. Prevents other handler from diff --git a/cpukit/include/rtems/status-checks.h b/cpukit/include/rtems/status-checks.h index ce23e25c14..a1e2698e14 100644 --- a/cpukit/include/rtems/status-checks.h +++ b/cpukit/include/rtems/status-checks.h @@ -1,7 +1,7 @@ /** * @file * - * @brief Header file for status checks. + * @brief Header File for Status Checks * * @warning Do not include this file in other header files. Use it only in * source files. @@ -29,15 +29,13 @@ extern "C" { /** * @defgroup rtems_status_checks Status Checks - * - * @{ */ +/**@{**/ /** * @name Print Macros - * - * @{ */ +/**@{**/ /** * @brief General purpose debug print macro. @@ -142,9 +140,8 @@ extern "C" { /** * @name Check Macros - * - * @{ */ +/**@{**/ /** * @brief Prints message @a msg and returns with status code @a sc if the status @@ -248,9 +245,8 @@ extern "C" { /** * @name Cleanup Macros - * - * @{ */ +/**@{**/ /** * @brief Prints message @a msg and jumps to @a label if the status code @a sc diff --git a/cpukit/include/rtems/userenv.h b/cpukit/include/rtems/userenv.h index 8cc7a7c39f..edbef204bd 100644 --- a/cpukit/include/rtems/userenv.h +++ b/cpukit/include/rtems/userenv.h @@ -2,6 +2,7 @@ * @file * * @ingroup LibIOEnv + * @brief User Environment Support */ /* @@ -39,9 +40,8 @@ extern "C" { * @ingroup LibIO * * @brief Provides a POSIX like user environment for tasks. - * - * @{ */ +/**@{**/ #ifndef LOGIN_NAME_MAX #ifdef _POSIX_LOGIN_NAME_MAX diff --git a/cpukit/include/sys/_iovec.h b/cpukit/include/sys/_iovec.h new file mode 100644 index 0000000000..a6ca68361b --- /dev/null +++ b/cpukit/include/sys/_iovec.h @@ -0,0 +1,58 @@ +/*- + * Copyright (c) 1982, 1986, 1993, 1994 + * The Regents of the University of California. All rights reserved. + * + * 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. + * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. + * + * @(#)uio.h 8.5 (Berkeley) 2/22/94 + * $FreeBSD$ + */ + +#ifndef _SYS__IOVEC_HH_ +#define _SYS__IOVEC_HH_ + +#include <sys/_types.h> + +#ifndef _SIZE_T_DECLARED +typedef __size_t size_t; +#define _SIZE_T_DECLARED +#endif + +#ifdef __rtems__ +#ifndef __IOVEC_DEFINED +#define __IOVEC_DEFINED +struct iovec { + void *iov_base; /* Base address. */ + size_t iov_len; /* Length. */ +}; +#endif /* __IOVEC_DEFINED */ +#else +struct iovec { + void *iov_base; /* Base address. */ + size_t iov_len; /* Length. */ +}; +#endif /* rtems */ + +#endif /* !_SYS__IOVEC_HH_ */ diff --git a/cpukit/libnetworking/sys/uio.h b/cpukit/include/sys/uio.h index 71e09a2792..56956f0150 100644 --- a/cpukit/libnetworking/sys/uio.h +++ b/cpukit/include/sys/uio.h @@ -1,4 +1,4 @@ -/* +/*- * Copyright (c) 1982, 1986, 1993, 1994 * The Regents of the University of California. All rights reserved. * @@ -27,23 +27,30 @@ * SUCH DAMAGE. * * @(#)uio.h 8.5 (Berkeley) 2/22/94 - * $FreeBSD: src/sys/sys/uio.h,v 1.40 2006/11/29 19:08:45 alfred Exp $ + * $FreeBSD$ */ - -#ifndef _SYS_UIO_H_ -#define _SYS_UIO_H_ +#ifndef _SYS_UIO_HH_ +#define _SYS_UIO_HH_ #include <sys/cdefs.h> +#ifdef __rtems__ #include <sys/types.h> +#endif /* __rtems__ */ +#include <sys/_types.h> +#include <sys/_iovec.h> -/* - * POSIX compliant iovec definition - */ -struct iovec { - void *iov_base; /* pointer to data to be written */ - size_t iov_len; /* length of this data block */ -}; +#ifndef __rtems__ +#ifndef _SSIZE_T_DECLARED +typedef __ssize_t ssize_t; +#define _SSIZE_T_DECLARED +#endif + +#ifndef _OFF_T_DECLARED +typedef __off_t off_t; +#define _OFF_T_DECLARED +#endif +#endif /* !__rtems__ */ #if __BSD_VISIBLE enum uio_rw { UIO_READ, UIO_WRITE }; @@ -65,11 +72,7 @@ struct uio { ssize_t uio_resid; /* remaining bytes to process */ enum uio_seg uio_segflg; /* address space */ enum uio_rw uio_rw; /* operation */ -#if !defined(__rtems__) struct thread *uio_td; /* owner */ -#else - struct proc *uio_procp; -#endif /* !__rtems__ */ }; /* @@ -85,15 +88,37 @@ struct uio { */ #define UIO_MAXIOV 1024 /* max 1K of iov's */ +struct vm_object; +struct vm_page; + +struct uio *cloneuio(struct uio *uiop); +int copyinfrom(const void * __restrict src, void * __restrict dst, + size_t len, int seg); +int copyiniov(struct iovec *iovp, u_int iovcnt, struct iovec **iov, + int error); +int copyinstrfrom(const void * __restrict src, void * __restrict dst, + size_t len, size_t * __restrict copied, int seg); +int copyinuio(struct iovec *iovp, u_int iovcnt, struct uio **uiop); +void uio_yield(void); int uiomove(void *cp, int n, struct uio *uio); +int uiomove_frombuf(void *buf, int buflen, struct uio *uio); +#ifndef __rtems__ +int uiomove_fromphys(struct vm_page *ma[], vm_offset_t offset, int n, + struct uio *uio); +#endif /* !__rtems__ */ +int uiomoveco(void *cp, int n, struct uio *uio, int disposable); #else /* !_KERNEL */ __BEGIN_DECLS ssize_t readv(int, const struct iovec *, int); ssize_t writev(int, const struct iovec *, int); +#if __BSD_VISIBLE +ssize_t preadv(int, const struct iovec *, int, off_t); +ssize_t pwritev(int, const struct iovec *, int, off_t); +#endif __END_DECLS #endif /* _KERNEL */ -#endif /* !_SYS_UIO_H_ */ +#endif /* !_SYS_UIO_HH_ */ diff --git a/cpukit/libblock/include/rtems/bdbuf.h b/cpukit/libblock/include/rtems/bdbuf.h index 7f1c13d7b0..cde32d7c4c 100644 --- a/cpukit/libblock/include/rtems/bdbuf.h +++ b/cpukit/libblock/include/rtems/bdbuf.h @@ -2,8 +2,7 @@ * @file * * @ingroup rtems_bdbuf - * - * Block device buffer management. + * @brief Block Device Buffer Management */ /* @@ -172,9 +171,8 @@ extern "C" { * issue with this design. The reallocation of a group may forced recently * accessed buffers out of the cache when they should not. The design should be * change to have groups on a LRU list if they have no buffers in use. - * - * @{ */ +/**@{**/ /** * @brief State of a buffer of the cache. diff --git a/cpukit/libblock/include/rtems/bdpart.h b/cpukit/libblock/include/rtems/bdpart.h index 27daae0046..c3141e6eda 100644 --- a/cpukit/libblock/include/rtems/bdpart.h +++ b/cpukit/libblock/include/rtems/bdpart.h @@ -3,7 +3,7 @@ * * @ingroup rtems_bdpart * - * Block device partition management. + * @brief Block Device Partition Management */ /* @@ -79,15 +79,13 @@ extern "C" { * - <a href="http://en.wikipedia.org/wiki/Extended_boot_record">Extended Boot Record</a> * - <a href="http://en.wikipedia.org/wiki/Cylinder-head-sector">Cylinder Head Sector</a> * - <a href="http://www.win.tue.nl/~aeb/partitions/partition_types-1.html">Partition Types</a> - * - * @{ */ +/**@{**/ /** * @name MBR Partition Types and Flags - * - * @{ */ +/**@{**/ #define RTEMS_BDPART_MBR_EMPTY 0x0U diff --git a/cpukit/libblock/include/rtems/blkdev.h b/cpukit/libblock/include/rtems/blkdev.h index f29a34987f..f934871412 100644 --- a/cpukit/libblock/include/rtems/blkdev.h +++ b/cpukit/libblock/include/rtems/blkdev.h @@ -3,7 +3,7 @@ * * @ingroup rtems_blkdev * - * Block device management. + * @brief Block Device Management */ /* @@ -36,9 +36,8 @@ extern "C" { * control. This call puts IO @ref rtems_blkdev_request "requests" to the block * device for asynchronous processing. When a driver executes a request, it * invokes the request done callback function to finish the request. - * - * @{ */ +/**@{**/ /** * @brief Block device request type. @@ -175,9 +174,8 @@ static inline void rtems_blkdev_request_done( /** * @name IO Control Request Codes - * - * @{ */ +/**@{**/ #define RTEMS_BLKIO_REQUEST _IOWR('B', 1, rtems_blkdev_request) #define RTEMS_BLKIO_GETMEDIABLKSIZE _IOR('B', 2, uint32_t) @@ -253,9 +251,8 @@ static inline int rtems_disk_fd_reset_device_stats(int fd) /** * @name Block Device Driver Capabilities - * - * @{ */ +/**@{**/ /** * @brief Only consecutive multi-sector buffer requests are supported. @@ -369,9 +366,8 @@ void rtems_blkstats( * @ingroup rtems_blkdev * * Generic disk device operations for standard RTEMS IO drivers. - * - * @{ */ +/**@{**/ /** * The device driver interface conventions suppose that a driver may contain an diff --git a/cpukit/libblock/include/rtems/diskdevs.h b/cpukit/libblock/include/rtems/diskdevs.h index 3a9967ecb2..3940c5710d 100644 --- a/cpukit/libblock/include/rtems/diskdevs.h +++ b/cpukit/libblock/include/rtems/diskdevs.h @@ -1,9 +1,9 @@ /** * @file * - * @ingroup rtems_disk + * @brief Block Device Disk Management API * - * @brief Block device disk management API. + * @ingroup rtems_disk */ /* @@ -37,9 +37,8 @@ typedef struct rtems_disk_device rtems_disk_device; * contain a subset of consecutive disk blocks. The logical disks are used to * represent the partitions of a disk. The disk devices are accessed via the * @ref rtems_bdbuf "block device buffer module". - * - * @{ */ +/**@{**/ /** * @brief Block device block index type. @@ -94,7 +93,7 @@ typedef struct { typedef struct { /** * @brief Read hit count. - * + * * A read hit occurs in the rtems_bdbuf_read() function in case the block is * in the cached or modified state. */ @@ -102,7 +101,7 @@ typedef struct { /** * @brief Read miss count. - * + * * A read miss occurs in the rtems_bdbuf_read() function in case the block is * in the empty state and a read transfer must be initiated to read the data * from the device. @@ -276,9 +275,8 @@ struct rtems_disk_device { /** * @name Disk Device Data - * - * @{ */ +/**@{**/ static inline dev_t rtems_disk_get_device_identifier( const rtems_disk_device *dd @@ -340,9 +338,8 @@ static inline rtems_blkdev_bnum rtems_disk_get_block_count( /** * @name Disk Device Maintainance - * - * @{ */ +/**@{**/ /** * @brief Creates a physical disk with device identifier @a dev. @@ -443,9 +440,8 @@ rtems_status_code rtems_disk_release(rtems_disk_device *dd); /** * @name Disk Management - * - * @{ */ +/**@{**/ /** * @brief Initializes the disk device management. diff --git a/cpukit/libblock/include/rtems/flashdisk.h b/cpukit/libblock/include/rtems/flashdisk.h index c9f8fd433b..5e4f6a8169 100644 --- a/cpukit/libblock/include/rtems/flashdisk.h +++ b/cpukit/libblock/include/rtems/flashdisk.h @@ -3,6 +3,8 @@ * * @ingroup RTEMSFDisk * + * @brief Interface to a Flash Disk Block Device + * * This file defines the interface to a flash disk block device. */ @@ -116,9 +118,8 @@ * } * close (fd); * @endcode - * - * @{ */ +/**@{**/ /** * @brief The base name of the flash disks. diff --git a/cpukit/libblock/include/rtems/ide_part_table.h b/cpukit/libblock/include/rtems/ide_part_table.h index ea3dcb331d..3868a3dea7 100644 --- a/cpukit/libblock/include/rtems/ide_part_table.h +++ b/cpukit/libblock/include/rtems/ide_part_table.h @@ -1,7 +1,7 @@ /** - * @file rtems/ide_part_table.h - * - * Support for "MS-DOS-style" partition tables + * @file + * + * @brief "MS-DOS-style" Partition Tables Support */ /* diff --git a/cpukit/libblock/include/rtems/media.h b/cpukit/libblock/include/rtems/media.h index 038357c16d..d1132224f7 100644 --- a/cpukit/libblock/include/rtems/media.h +++ b/cpukit/libblock/include/rtems/media.h @@ -40,8 +40,8 @@ extern "C" { * actions. For example a disk attach will lead to inspection of the partition * table and mounted file systems. Clients can register listeners to react to * events. - * @{ */ +/**@{**/ #define RTEMS_MEDIA_MOUNT_BASE "/media" @@ -312,9 +312,8 @@ typedef rtems_status_code (*rtems_media_worker)( /** * @name Base - * - * @{ */ +/**@{**/ /** * @brief Initializes the media manager. @@ -377,9 +376,8 @@ rtems_status_code rtems_media_post_event( /** * @name Server - * - * @{ */ +/**@{**/ /** * @brief Initializes the media manager and media server. @@ -452,9 +450,8 @@ static inline rtems_status_code rtems_media_server_disk_detach( /** * @name Path Construction - * - * @{ */ +/**@{**/ /** * @brief Creates a new path as "prefix/name-major". @@ -490,9 +487,8 @@ char *rtems_media_append_minor( /** * @name Support - * - * @{ */ +/**@{**/ /** * @brief Returns the device identifier for the device located at diff --git a/cpukit/libblock/include/rtems/nvdisk.h b/cpukit/libblock/include/rtems/nvdisk.h index c7693fb6fb..0f9cc8fe9d 100644 --- a/cpukit/libblock/include/rtems/nvdisk.h +++ b/cpukit/libblock/include/rtems/nvdisk.h @@ -1,7 +1,7 @@ /** * @file rtems/nvdisk.h * - * Non-volatile disk block device implementation + * @brief Non-volatile Disk Block Device Implementation */ /* diff --git a/cpukit/libblock/include/rtems/ramdisk.h b/cpukit/libblock/include/rtems/ramdisk.h index 690864ceea..727efddbe8 100644 --- a/cpukit/libblock/include/rtems/ramdisk.h +++ b/cpukit/libblock/include/rtems/ramdisk.h @@ -1,9 +1,7 @@ /** * @file * - * @ingroup rtems_ramdisk - * - * @brief RAM disk block device API. + * @brief RAM Disk Block Device API */ /* @@ -27,14 +25,13 @@ extern "C" { * * @ingroup rtems_blkdev * - * @{ */ +/**@{**/ /** * @name Static Configuration - * - * @{ */ +/**@{**/ /** * @brief RAM disk configuration table entry. @@ -97,9 +94,8 @@ rtems_device_driver ramdisk_initialize( /** * @name Runtime Configuration - * - * @{ */ +/**@{**/ /** * @brief RAM disk descriptor. diff --git a/cpukit/libblock/include/rtems/sparse-disk.h b/cpukit/libblock/include/rtems/sparse-disk.h index 3dc806b407..3f2e41c01a 100644 --- a/cpukit/libblock/include/rtems/sparse-disk.h +++ b/cpukit/libblock/include/rtems/sparse-disk.h @@ -37,8 +37,8 @@ extern "C" { * * @ingroup rtems_blkdev * - * @{ */ +/**@{**/ typedef struct { rtems_blkdev_bnum block; diff --git a/cpukit/libcsupport/include/clockdrv.h b/cpukit/libcsupport/include/clockdrv.h index fc85c7abf6..999af92d9c 100644 --- a/cpukit/libcsupport/include/clockdrv.h +++ b/cpukit/libcsupport/include/clockdrv.h @@ -1,5 +1,7 @@ /** - * @file rtems/clockdrv.h + * @file + * + * @brief Clock Driver for all Boards * * This file describes the Clock Driver for all boards. */ diff --git a/cpukit/libcsupport/include/console.h b/cpukit/libcsupport/include/console.h index 137959a915..6b8b8c9455 100644 --- a/cpukit/libcsupport/include/console.h +++ b/cpukit/libcsupport/include/console.h @@ -1,5 +1,7 @@ /** - * @file rtems/console.h + * @file + * + * @brief Console Driver for all Boards * * This file describes the Console Device Driver for all boards. * This driver provides support for the standard C Library. @@ -24,30 +26,29 @@ extern "C" { #endif /** - * This macro defines the standard name for the console device - * that is available to applications. + * This macro defines the standard name for the console device + * that is available to applications. */ #define CONSOLE_DEVICE_NAME "/dev/console" /** - * This macro defines the standard device driver table entry for - * a console device driver. + * This macro defines the standard device driver table entry for + * a console device driver. */ #define CONSOLE_DRIVER_TABLE_ENTRY \ { console_initialize, console_open, console_close, \ console_read, console_write, console_control } /** - * @brief Console Initialization Entry Point + * @brief Console initialization entry point. * - * This method initializes the console device driver. + * This method initializes the console device driver. * - * @param[in] major is the device driver major number - * @param[in] minor is the device driver minor number - * @param[in] arg is the parameters to this call + * @param[in] major is the device driver major number. + * @param[in] minor is the device driver minor number. + * @param[in] arg is the parameters to this call. * - * @return This method returns RTEMS_SUCCESSFUL when - * the device driver is successfully initialized. + * @retval RTEMS_SUCCESSFUL The device driver is successfully initialized. */ rtems_device_driver console_initialize( rtems_device_major_number major, @@ -56,17 +57,16 @@ rtems_device_driver console_initialize( ); /** - * @brief Console Open Entry Point + * @brief Console open entry point. * - * This method opens a specific device supported by the - * console device driver. + * This method opens a specific device supported by the + * console device driver. * - * @param[in] major is the device driver major number - * @param[in] minor is the device driver minor number - * @param[in] arg is the parameters to this call + * @param[in] major is the device driver major number + * @param[in] minor is the device driver minor number + * @param[in] arg is the parameters to this call * - * @return This method returns RTEMS_SUCCESSFUL when - * the device driver is successfully opened. + * @retval RTEMS_SUCCESSFUL The device driver is successfully opened. */ rtems_device_driver console_open( rtems_device_major_number major, @@ -75,17 +75,16 @@ rtems_device_driver console_open( ); /** - * @brief Console Close Entry Point + * @brief Console close entry point. * - * This method closes a specific device supported by the - * console device driver. + * This method closes a specific device supported by the + * console device driver. * - * @param[in] major is the device driver major number - * @param[in] minor is the device driver minor number - * @param[in] arg is the parameters to this call + * @param[in] major is the device driver major number + * @param[in] minor is the device driver minor number + * @param[in] arg is the parameters to this call * - * @return This method returns RTEMS_SUCCESSFUL when - * the device is successfully closed. + * @retval RTEMS_SUCCESSFUL The device driver is successfully closed. */ rtems_device_driver console_close( rtems_device_major_number major, @@ -94,17 +93,16 @@ rtems_device_driver console_close( ); /** - * @brief Console Read Entry Point + * @brief Console read entry point. * - * This method reads from a specific device supported by the - * console device driver. + * This method reads from a specific device supported by the + * console device driver. * - * @param[in] major is the device driver major number - * @param[in] minor is the device driver minor number - * @param[in] arg is the parameters to this call + * @param[in] major is the device driver major number + * @param[in] minor is the device driver minor number + * @param[in] arg is the parameters to this call * - * @return This method returns RTEMS_SUCCESSFUL when - * the device is successfully read from. + * @retval RTEMS_SUCCESSFUL The device is successfully read from. */ rtems_device_driver console_read( rtems_device_major_number major, @@ -113,17 +111,16 @@ rtems_device_driver console_read( ); /** - * @brief Console Write Entry Point + * @brief Console write entry point. * - * This method writes to a specific device supported by the - * console device driver. + * This method writes to a specific device supported by the + * console device driver. * - * @param[in] major is the device driver major number - * @param[in] minor is the device driver minor number - * @param[in] arg is the parameters to this call + * @param[in] major is the device driver major number + * @param[in] minor is the device driver minor number + * @param[in] arg is the parameters to this call * - * @return This method returns RTEMS_SUCCESSFUL when - * the device is successfully written. + * @retval RTEMS_SUCCESSFUL The device is successfully written. */ rtems_device_driver console_write( rtems_device_major_number major, @@ -132,18 +129,17 @@ rtems_device_driver console_write( ); /** - * @brief Console IO Control Entry Point + * @brief Console IO control entry point. * - * This method performs an IO Control operation on a - * specific device supported by the console device driver. + * This method performs an IO Control operation on a + * specific device supported by the console device driver. * - * @param[in] major is the device driver major number - * @param[in] minor is the device driver minor number - * @param[in] arg is the parameters to this call - * - * @return This method returns RTEMS_SUCCESSFUL when - * the device driver IO control operation is - * successfully performed. + * @param[in] major is the device driver major number + * @param[in] minor is the device driver minor number + * @param[in] arg is the parameters to this call + * + * @retval RTEMS_SUCCESSFUL the device driver IO control operation is + * successfully performed. */ rtems_device_driver console_control( rtems_device_major_number major, diff --git a/cpukit/libcsupport/include/ringbuf.h b/cpukit/libcsupport/include/ringbuf.h index 71b0532f41..99e72a5bb3 100644 --- a/cpukit/libcsupport/include/ringbuf.h +++ b/cpukit/libcsupport/include/ringbuf.h @@ -1,7 +1,9 @@ /** - * @file rtems/ringbuf.h + * @file * - * This file provides simple ring buffer functionality. + * @brief Simple Ring Buffer Functionality + * + * This file provides simple ring buffer functionality. */ diff --git a/cpukit/libcsupport/include/rtc.h b/cpukit/libcsupport/include/rtc.h index 4b8e601940..36965ce194 100644 --- a/cpukit/libcsupport/include/rtc.h +++ b/cpukit/libcsupport/include/rtc.h @@ -1,6 +1,8 @@ /** * @file * + * @brief Real-Time Clock Driver Interface + * * Real-time clock driver interface. */ @@ -27,9 +29,8 @@ extern "C" { * * This driver interface provides support to read and set the real-time clock * and to initialize the time of day for the system. - * - * @{ */ +/**@{**/ /** * Device file name path. diff --git a/cpukit/libcsupport/include/rtems/assoc.h b/cpukit/libcsupport/include/rtems/assoc.h index 06a74849ef..c4933159e0 100644 --- a/cpukit/libcsupport/include/rtems/assoc.h +++ b/cpukit/libcsupport/include/rtems/assoc.h @@ -1,6 +1,8 @@ /** * @file rtems/assoc.h * + * @brief RTEMS Associativity Routines + * * RTEMS associativity routines. Mainly used to convert a value from * one space to another (eg: our errno's to host errno's and vice-versa) */ @@ -10,7 +12,7 @@ #define _RTEMS_RTEMS_ASSOC_H /** - * @defgroup Associativity Routines + * @defgroup Associativity Associativity Routines */ /**@{*/ @@ -139,7 +141,7 @@ const rtems_assoc_t *rtems_assoc_ptr_by_local( /** * @brief RTEMS Associate Bad Name - * + * * what to return if a value is not found * this is not reentrant, but it really shouldn't be invoked anyway */ diff --git a/cpukit/libcsupport/include/rtems/deviceio.h b/cpukit/libcsupport/include/rtems/deviceio.h index b832942750..571b3e14ec 100644 --- a/cpukit/libcsupport/include/rtems/deviceio.h +++ b/cpukit/libcsupport/include/rtems/deviceio.h @@ -1,7 +1,7 @@ /** - * @file rtems/deviceio.h + * @file * - * @brief Map Operations on IMFS Device Nodes to the RTEMS Classic API IO Manager + * @brief Operations on IMFS Device Nodes */ /* @@ -16,24 +16,28 @@ #ifndef _RTEMS_DEVICEIO_H #define _RTEMS_DEVICEIO_H +#include <rtems/libio.h> + /** - * @defgroup Device IO Handler + * @defgroup IMFSDevices IMFS Device IO Handler + * + * @ingroup IMFS + * + * This contains the interface to device drivers using the RTEMS Classic API. */ /**@{*/ -#include <rtems/libio.h> - #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** - * @brief IMFS Device Node Handlers + * @brief IMFS device node handlers. * - * IMFS Device Node Handlers + * IMFS Device Node Handlers * - * This file contains the set of handlers used to map operations on - * IMFS device nodes onto calls to the RTEMS Classic API IO Manager. + * This file contains the set of handlers used to map operations on + * IMFS device nodes onto calls to the RTEMS Classic API IO Manager. */ int rtems_deviceio_errno( rtems_status_code status ); @@ -79,7 +83,8 @@ int rtems_deviceio_control( #ifdef __cplusplus } #endif -/**@}*/ /* __cplusplus */ +/**@}*/ + #endif /* _RTEMS_DEVICEIO_H */ diff --git a/cpukit/libcsupport/include/rtems/error.h b/cpukit/libcsupport/include/rtems/error.h index 056fb8f9c0..4eae14f912 100644 --- a/cpukit/libcsupport/include/rtems/error.h +++ b/cpukit/libcsupport/include/rtems/error.h @@ -1,10 +1,12 @@ /** * @file rtems/error.h * + * @brief RTEMS Error Reporting + * * Defines and externs for rtems error reporting - * + * * Currently just used by RTEMS monitor. - * + * * These routines provide general purpose error reporting. * rtems_error reports an error to stderr and allows use of * printf style formatting. A newline is appended to all messages. @@ -18,27 +20,32 @@ * It can also include a rtems_status value which can be OR'd * with the above flags. * * - * EXAMPLE + * Example 1: + * @code * #include <rtems.h> * #include <rtems/error.h> * rtems_error(0, "stray interrupt %d", intr); + * @endcode * - * EXAMPLE + * Example 2: + * @code * if ((status = rtems_task_create(...)) != RTEMS_SUCCCESSFUL) * { * rtems_error(status | RTEMS_ERROR_ABORT, * "could not create task"); * } + * @endcode * - * EXAMPLE + * Example 3: + * @code * if ((fd = open(pathname, O_RDNLY)) < 0) * { * rtems_error(RTEMS_ERROR_ERRNO, "open of '%s' failed", pathname); * goto failed; * } + * @endcode */ - #ifndef _RTEMS_RTEMS_ERROR_H #define _RTEMS_RTEMS_ERROR_H @@ -53,11 +60,10 @@ extern "C" { * @defgroup ErrorPanicSupport Error And Panic Support * * @ingroup libcsupport - * + * * @brief Defines and externs for rtems error reporting - * + * */ - typedef Internal_errors_t rtems_error_code_t; /* @@ -82,13 +88,13 @@ const char *rtems_status_text(rtems_status_code sc); /** * @brief Report an Error - * + * * @param[in] error_code can be specified as any of the following: * RTEMS_ERROR_ERRNO -- include errno text in output * RTEMS_ERROR_PANIC -- halts local system after output * RTEMS_ERROR_ABORT -- abort after output - * - * @param[in] printf_format is a normal printf(3) format string, + * + * @param[in] printf_format is a normal printf(3) format string, * with its concommitant arguments * * @return the number of characters written. diff --git a/cpukit/libcsupport/include/rtems/framebuffer.h b/cpukit/libcsupport/include/rtems/framebuffer.h index 8a05f5ac75..a0548d3499 100644 --- a/cpukit/libcsupport/include/rtems/framebuffer.h +++ b/cpukit/libcsupport/include/rtems/framebuffer.h @@ -1,6 +1,8 @@ /** * @file rtems/framebuffer.h * + * @brief Frame Buffer Device Driver for all Boards + * * This file describes the Frame Buffer Device Driver for all boards. */ diff --git a/cpukit/libcsupport/include/rtems/libcsupport.h b/cpukit/libcsupport/include/rtems/libcsupport.h index 2c498848b5..582e16b4bc 100644 --- a/cpukit/libcsupport/include/rtems/libcsupport.h +++ b/cpukit/libcsupport/include/rtems/libcsupport.h @@ -1,6 +1,8 @@ /** - * @file rtems/libcsupport.h - * + * @file + * + * @brief Standard C Library Support + * * This include file contains the information regarding the * RTEMS specific support for the standard C library. */ @@ -28,29 +30,31 @@ extern "C" { #endif /** - * @defgroup libcsupport Standard C Library Support + * @defgroup libcsupport Standard C Library Support + * + * @brief RTEMS Specific Support for the Standard C Library * - * @brief RTEMS Specific Support for the Standard C Library */ +/**@{**/ extern void malloc_dump(void); /** - * @brief Malloc Walk + * @brief Malloc walk. */ extern bool malloc_walk(int source, bool printf_enabled); /** - * @brief RTEMS Malloc Set Heap Pointer + * @brief Set malloc heap pointer. * - * This routine is primarily used for debugging. + * This routine is primarily used for debugging. */ void malloc_set_heap_pointer(Heap_Control *new_heap); /** - * @brief RTEMS Malloc Get Heap Pointer + * @brief Get malloc heap pointer. * - * This routine is primarily used for debugging. + * This routine is primarily used for debugging. */ Heap_Control *malloc_get_heap_pointer( void ); extern void libc_init(void); @@ -58,17 +62,17 @@ extern int host_errno(void); extern void fix_syscall_errno(void); /** - * @brief RTEMS Malloc Get Free Information + * @brief Get free malloc information. * - * Find amount of free heap remaining + * Find amount of free heap remaining */ extern size_t malloc_free_space(void); extern void open_dev_console(void); /** - * @brief RTEMS Malloc Get Status Information + * @brief Get malloc status information. * - * Find amount of free heap remaining. + * Find amount of free heap remaining. */ extern int malloc_info(Heap_Information_block *the_info); @@ -163,8 +167,11 @@ void rtems_resource_snapshot_take(rtems_resource_snapshot *snapshot); /** * @brief Compares two resource snapshots for equality. * - * @return Returns true if the resource snapshots are equal, and false - * otherwise. + * @param[in] a One resource snapshot. + * @param[in] b Another resource snapshot. + * + * @retval true The resource snapshots are equal. + * @retval false Otherwise. * * @see rtems_resource_snapshot_take(). */ @@ -175,17 +182,20 @@ bool rtems_resource_snapshot_equal( /** * @brief Takes a new resource snapshot and checks that it is equal to the - * given snapshot. + * given resource snapshot. * - * @param[in] snapshot The snapshot used for comparison with the new snapshot. + * @param[in] snapshot The resource snapshot used for comparison with the new + * resource snapshot. * - * @return Returns true if the resource snapshots are equal, and false - * otherwise. + * @retval true The resource snapshots are equal. + * @retval false Otherwise. * * @see rtems_resource_snapshot_take(). */ bool rtems_resource_snapshot_check(const rtems_resource_snapshot *snapshot); +/** @} */ + #ifdef __cplusplus } #endif diff --git a/cpukit/libcsupport/include/rtems/libio.h b/cpukit/libcsupport/include/rtems/libio.h index 84f3dc7451..51e25c98c7 100644 --- a/cpukit/libcsupport/include/rtems/libio.h +++ b/cpukit/libcsupport/include/rtems/libio.h @@ -3,8 +3,8 @@ * * @ingroup LibIO * - * @brief Basic IO API. - * + * @brief Basic IO API + * * This file contains the support infrastructure used to manage the * table of integer style file descriptors used by the low level * POSIX system calls like open(), read, fstat(), etc. @@ -47,9 +47,8 @@ extern "C" { * @ingroup LibIO * * @brief File system operations. - * - * @{ */ +/**@{**/ /** * @brief File system node types. @@ -749,9 +748,8 @@ int rtems_filesystem_default_statvfs( * @ingroup LibIO * * @brief File system node handler. - * - * @{ */ +/**@{**/ /** * @brief Opens a node. @@ -1143,9 +1141,8 @@ int rtems_filesystem_default_fcntl( * system call behavior under RTEMS. Initially this supported only * IO to devices but has since been enhanced to support networking * and support for mounted file systems. - * - * @{ */ +/**@{**/ typedef off_t rtems_off64_t __attribute__((deprecated)); @@ -1240,9 +1237,8 @@ typedef struct { /** * @name Flag Values - * - * @{ */ +/**@{**/ #define LIBIO_FLAGS_NO_DELAY 0x0001U /* return immediately if no data */ #define LIBIO_FLAGS_READ 0x0002U /* reading */ @@ -1257,16 +1253,15 @@ typedef struct { /** * @brief RTEMS LibIO Initialization - * + * * Called by BSP startup code to initialize the libio subsystem. */ void rtems_libio_init(void); /** * @name External I/O Handlers - * - * @{ */ +/**@{**/ typedef int (*rtems_libio_open_t)( const char *pathname, @@ -1306,9 +1301,8 @@ typedef off_t (*rtems_libio_lseek_t)( /** * @name Permission Macros - * - * @{ */ +/**@{**/ /* * The following macros are used to build up the permissions sets @@ -1384,7 +1378,7 @@ static inline rtems_device_minor_number rtems_filesystem_dev_minor_t( /** * @brief Base File System Initialization - * + * * Initialize the foundation of the file system. This is specified * by the structure rtems_filesystem_mount_table. The usual * configuration is a single instantiation of the IMFS or miniIMFS with @@ -1422,15 +1416,13 @@ extern int rtems_mkdir(const char *path, mode_t mode); * @ingroup LibIO * * @brief File system types and mount. - * - * @{ */ +/**@{**/ /** * @name File System Types - * - * @{ */ +/**@{**/ #define RTEMS_FILESYSTEM_TYPE_IMFS "imfs" #define RTEMS_FILESYSTEM_TYPE_MINIIMFS "mimfs" @@ -1701,9 +1693,8 @@ extern const rtems_filesystem_mount_configuration * @ingroup LibIO * * @brief Termios - * - * @{ */ +/**@{**/ typedef struct rtems_termios_callbacks { int (*firstOpen)(int major, int minor, void *arg); diff --git a/cpukit/libcsupport/include/rtems/libio_.h b/cpukit/libcsupport/include/rtems/libio_.h index 6ef4b6ccb6..1f7f654da4 100644 --- a/cpukit/libcsupport/include/rtems/libio_.h +++ b/cpukit/libcsupport/include/rtems/libio_.h @@ -1,6 +1,8 @@ /** - * @file rtems/libio_.h + * @file * + * @brief LibIO Internal Interface + * * This file is the libio internal interface. */ @@ -30,12 +32,12 @@ extern "C" { #endif /** - * @defgroup LibIOInternal IO Internal Library + * @defgroup LibIOInternal IO Internal Library * - * @brief Internal IO library API and implementation. + * @brief Internal IO library API and implementation. * - * @{ */ +/**@{**/ #define RTEMS_FILESYSTEM_SYMLOOP_MAX 32 @@ -69,8 +71,8 @@ extern rtems_filesystem_mount_table_entry_t rtems_filesystem_null_mt_entry; * The purpose of this location is to deliver the error return status for a * previous error condition which must set the errno accordingly. * - * The usage of this null location instead of the NULL pointer eliminates a lot - * of branches. + * The usage of this null location instead of the NULL pointer eliminates + * a lot of branches. * * The user environment root and current directory are statically initialized * with the null location. Due to that all file system services are in a @@ -200,7 +202,7 @@ void rtems_filesystem_location_clone( * * @param[in] loc The location of the node. * - * @return The node type. + * @retval type The node type. * * @see rtems_filesystem_instance_lock(). */ @@ -215,8 +217,8 @@ rtems_filesystem_node_types_t rtems_filesystem_node_type( * * @param[in] loc The location to free. * - * @note The file system root location is released by the file system instance - * destruction handler (see @ref rtems_filesystem_fsunmount_me_t). + * @note The file system root location is released by the file system + * instance destruction handler (see @ref rtems_filesystem_fsunmount_me_t). * * @see rtems_filesystem_freenode_t. */ @@ -277,24 +279,24 @@ static inline void rtems_filesystem_instance_unlock( */ /** - * This routine searches the IOP Table for an unused entry. If it - * finds one, it returns it. Otherwise, it returns NULL. + * This routine searches the IOP Table for an unused entry. If it + * finds one, it returns it. Otherwise, it returns NULL. */ rtems_libio_t *rtems_libio_allocate(void); /** - * Convert UNIX fnctl(2) flags to ones that RTEMS drivers understand + * Convert UNIX fnctl(2) flags to ones that RTEMS drivers understand */ uint32_t rtems_libio_fcntl_flags( int fcntl_flags ); /** - * Convert RTEMS internal flags to UNIX fnctl(2) flags + * Convert RTEMS internal flags to UNIX fnctl(2) flags */ int rtems_libio_to_fcntl_flags( uint32_t flags ); /** - * This routine frees the resources associated with an IOP (file descriptor) - * and clears the slot in the IOP Table. + * This routine frees the resources associated with an IOP (file descriptor) + * and clears the slot in the IOP Table. */ void rtems_libio_free( rtems_libio_t *iop @@ -359,7 +361,7 @@ void rtems_filesystem_eval_path_cleanup_with_parent( * current location. The previous start and current locations are released. * * @param[in, out] ctx The path evaluation context. - * @param[in, out] newstartloc_ptr Pointer to new start location. + * @param[in, out] newstartloc_ptr Pointer to the new start location. */ void rtems_filesystem_eval_path_restart( rtems_filesystem_eval_path_context_t *ctx, @@ -413,9 +415,6 @@ typedef struct { rtems_filesystem_eval_path_eval_token eval_token; } rtems_filesystem_eval_path_generic_config; -/** - * @brief RTEMS File System Eval Generic Path - */ void rtems_filesystem_eval_path_generic( rtems_filesystem_eval_path_context_t *ctx, void *arg, @@ -431,7 +430,7 @@ void rtems_filesystem_initialize(void); * corresponding mount entry. * * @param[out] dst The destination location. - * @param[in] src The source location. + * @param[in] src The source location. * * @retval dst The destination location. * @@ -552,9 +551,7 @@ static inline void rtems_filesystem_location_error( errno = eno; } } -/** - * @brief RTEMS File System Mknod - */ + int rtems_filesystem_mknod( const rtems_filesystem_location_info_t *parentloc, const char *name, @@ -565,9 +562,6 @@ int rtems_filesystem_mknod( int rtems_filesystem_chdir( rtems_filesystem_location_info_t *loc ); -/** - * @brief Change Owner and Group of a File - */ int rtems_filesystem_chown( const char *path, uid_t owner, @@ -697,9 +691,6 @@ static inline void rtems_filesystem_eval_path_put_back_token( ctx->tokenlen = 0; } -/** - * @brief RTEMS File System Eval Eat Delimiter Path - */ void rtems_filesystem_eval_path_eat_delimiter( rtems_filesystem_eval_path_context_t *ctx ); diff --git a/cpukit/libcsupport/include/sys/statvfs.h b/cpukit/libcsupport/include/sys/statvfs.h index 13185e7e2e..eccc7d2881 100644 --- a/cpukit/libcsupport/include/sys/statvfs.h +++ b/cpukit/libcsupport/include/sys/statvfs.h @@ -1,10 +1,12 @@ /** - * @file sys/statvfs.h + * @file + * + * @brief Interface to the statvfs() Set of API Methods * * This include file defines the interface to the statvfs() set of * API methods. The statvfs as defined by the SUS: * - * - http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/statvfs.h.html + * - http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/statvfs.h.html */ /* diff --git a/cpukit/libcsupport/include/sys/termios.h b/cpukit/libcsupport/include/sys/termios.h index 1046eb8c87..93c3a25ad7 100644 --- a/cpukit/libcsupport/include/sys/termios.h +++ b/cpukit/libcsupport/include/sys/termios.h @@ -1,7 +1,7 @@ /** - * @file sys/termios.h + * @file * - * @brief POSIX termios implementation for RTEMS console device driver. + * @brief POSIX Termios Implementation for RTEMS Console Device Driver * * The Open Group Base Specifications Issue 6 * IEEE Std 1003.1, 2004 Edition @@ -27,10 +27,12 @@ extern "C" { #endif /** - * @ingroup Termios + * @ingroup Termios * - * @brief POSIX Termios Implementation + * @brief POSIX Termios Implementation + * */ +/**@{**/ typedef unsigned char cc_t; typedef unsigned int speed_t; @@ -47,8 +49,8 @@ struct termios { }; /** - * This value is used to disable processing of a member of c_cc - * in the struct termios. + * This value is used to disable processing of a member of c_cc + * in the struct termios. */ #define _POSIX_VDISABLE 0 @@ -208,6 +210,8 @@ int cfsetospeed(struct termios *tp, speed_t speed); speed_t cfgetispeed(const struct termios *tp); int cfsetispeed(struct termios *tp, speed_t speed); +/** @} */ + #ifdef __cplusplus } #endif diff --git a/cpukit/libcsupport/include/sys/utsname.h b/cpukit/libcsupport/include/sys/utsname.h index a56d74abfd..2bad0e2572 100644 --- a/cpukit/libcsupport/include/sys/utsname.h +++ b/cpukit/libcsupport/include/sys/utsname.h @@ -1,5 +1,7 @@ /** - * @file sys/utsname.h + * @file + * + * @brief Interface to the POSIX utsname() Service * * This include file defines the interface to the POSIX utsname() service. */ @@ -17,7 +19,9 @@ #define __POSIX_SYS_UTSNAME_h /** - * @defgroup utsname Service + * @defgroup UTSNAME utsname Service + * + * @ingroup POSIXAPI */ /**@{*/ @@ -43,7 +47,8 @@ extern "C" { #endif struct utsname { - char sysname[SYS_NMLN]; /* Name of this implementation of the operating system */ + char sysname[SYS_NMLN]; /* Name of this implementation of the */ + /* operating system */ char nodename[SYS_NMLN]; /* Name of this node within an implementation */ /* specified communication network */ char release[SYS_NMLN]; /* Current release level of this implementation */ @@ -53,15 +58,19 @@ struct utsname { }; /** - * @brief 4.4.1 Get System Name, P1003.1b-1993, p. 90 + * @brief Get system name. + * + * 4.4.1 Get System Name, P1003.1b-1993, p. 90 */ int uname( struct utsname *name ); +/** @} */ + #ifdef __cplusplus } #endif -/**@}*/ + #endif /* end of include file */ diff --git a/cpukit/libcsupport/include/timerdrv.h b/cpukit/libcsupport/include/timerdrv.h index c51768bb4b..ad74bc6ccc 100644 --- a/cpukit/libcsupport/include/timerdrv.h +++ b/cpukit/libcsupport/include/timerdrv.h @@ -1,7 +1,9 @@ /** - * @file rtems/timerdrv.h + * @file * - * This file describes the Timer Driver for all boards. + * @brief Timer Driver for all Boards + * + * This file describes the Timer Driver for all boards. */ /* diff --git a/cpukit/libcsupport/include/vmeintr.h b/cpukit/libcsupport/include/vmeintr.h index 7e88bd0965..db1bf4d625 100644 --- a/cpukit/libcsupport/include/vmeintr.h +++ b/cpukit/libcsupport/include/vmeintr.h @@ -1,9 +1,11 @@ /** - * @file rtems/vmeintr.h + * @file + * + * @brief VMEbus Interface Library * - * This file is the specification for the VMEbus interface library - * which should be provided by all BSPs for VMEbus Single Board - * Computers but currently only a few do so. + * This file is the specification for the VMEbus interface library + * which should be provided by all BSPs for VMEbus Single Board + * Computers but currently only a few do so. */ /* diff --git a/cpukit/libcsupport/include/zilog/z8036.h b/cpukit/libcsupport/include/zilog/z8036.h index 260003646d..686787d8ca 100644 --- a/cpukit/libcsupport/include/zilog/z8036.h +++ b/cpukit/libcsupport/include/zilog/z8036.h @@ -1,5 +1,7 @@ /** - * @file rtems/zilog/z8036.h + * @file + * + * @brief Zilog Z8036 Counter/Timer/IO Chip * * This include file defines information related to a Zilog Z8036 * Counter/Timer/IO Chip. It is a memory mapped part. diff --git a/cpukit/libcsupport/include/zilog/z8530.h b/cpukit/libcsupport/include/zilog/z8530.h index d11698de50..8fd9f399c3 100644 --- a/cpukit/libcsupport/include/zilog/z8530.h +++ b/cpukit/libcsupport/include/zilog/z8530.h @@ -1,10 +1,10 @@ /** - * @file rtems/zilog/z8530.h + * @file * * @brief Information Related to a Zilog Z8530 SCC Chip * - * This include file defines information related to a Zilog Z8530 - * SCC Chip. It is a IO mapped part. + * This include file defines information related to a Zilog Z8530 + * SCC Chip. It is a IO mapped part. */ /* diff --git a/cpukit/libcsupport/include/zilog/z8536.h b/cpukit/libcsupport/include/zilog/z8536.h index 326e75531e..1970fb1af9 100644 --- a/cpukit/libcsupport/include/zilog/z8536.h +++ b/cpukit/libcsupport/include/zilog/z8536.h @@ -1,5 +1,5 @@ /** - * @file rtems/zilog/z8536.h + * @file * * @brief Information Related to a Zilog Z8536 Counter/Timer/IO Chip * diff --git a/cpukit/libcsupport/src/lstat.c b/cpukit/libcsupport/src/lstat.c index abdc0465cd..66a333d294 100644 --- a/cpukit/libcsupport/src/lstat.c +++ b/cpukit/libcsupport/src/lstat.c @@ -26,4 +26,4 @@ /** * BSD 4.3 and SVR4 - Get File Status - */
\ No newline at end of file + */ diff --git a/cpukit/libfs/src/defaults/default_are_nodes_equal.c b/cpukit/libfs/src/defaults/default_are_nodes_equal.c index c1e7777c40..b20da2de23 100644 --- a/cpukit/libfs/src/defaults/default_are_nodes_equal.c +++ b/cpukit/libfs/src/defaults/default_are_nodes_equal.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System has nodes equal + * @ingroup LibIOFSOps File System Operations + */ + /* * Copyright (c) 2012 embedded brains GmbH. All rights reserved. * diff --git a/cpukit/libfs/src/defaults/default_chown.c b/cpukit/libfs/src/defaults/default_chown.c index dc457d2838..2880f8e04a 100644 --- a/cpukit/libfs/src/defaults/default_chown.c +++ b/cpukit/libfs/src/defaults/default_chown.c @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief RTEMS Default File System Change Owner + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_clone.c b/cpukit/libfs/src/defaults/default_clone.c index 5224b01d19..576a07ce03 100644 --- a/cpukit/libfs/src/defaults/default_clone.c +++ b/cpukit/libfs/src/defaults/default_clone.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System creates a child process + * @ingroup LibIOFSOps File System Operations + */ + /* * Copyright (c) 2012 embedded brains GmbH. All rights reserved. * diff --git a/cpukit/libfs/src/defaults/default_close.c b/cpukit/libfs/src/defaults/default_close.c index 3f650b99fb..5cf35e1c48 100644 --- a/cpukit/libfs/src/defaults/default_close.c +++ b/cpukit/libfs/src/defaults/default_close.c @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief RTEMS Default File System Close + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_eval_path.c b/cpukit/libfs/src/defaults/default_eval_path.c index e639f9985c..868d2e5769 100644 --- a/cpukit/libfs/src/defaults/default_eval_path.c +++ b/cpukit/libfs/src/defaults/default_eval_path.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System evaluates relative pathname to absolute + * @ingroup LibIOFSOps File System Operations + */ + /* * Copyright (c) 2012 embedded brains GmbH. All rights reserved. * diff --git a/cpukit/libfs/src/defaults/default_fchmod.c b/cpukit/libfs/src/defaults/default_fchmod.c index 5e4b6059dc..0004279130 100644 --- a/cpukit/libfs/src/defaults/default_fchmod.c +++ b/cpukit/libfs/src/defaults/default_fchmod.c @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief RTEMS Default File System Change File Mode + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_fcntl.c b/cpukit/libfs/src/defaults/default_fcntl.c index f05cce2614..bd4a08042c 100644 --- a/cpukit/libfs/src/defaults/default_fcntl.c +++ b/cpukit/libfs/src/defaults/default_fcntl.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default Filesystem - Default FCNTL + * @ingroup libfs + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_freenode.c b/cpukit/libfs/src/defaults/default_freenode.c index f128fb3124..16c111679d 100644 --- a/cpukit/libfs/src/defaults/default_freenode.c +++ b/cpukit/libfs/src/defaults/default_freenode.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default Filesystem - Default Freenode + * @ingroup libfs + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_fsmount.c b/cpukit/libfs/src/defaults/default_fsmount.c index 924ba313fc..b505142746 100644 --- a/cpukit/libfs/src/defaults/default_fsmount.c +++ b/cpukit/libfs/src/defaults/default_fsmount.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System Mounts + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_fstat.c b/cpukit/libfs/src/defaults/default_fstat.c index 42b7339e0b..e12d8c0fe0 100644 --- a/cpukit/libfs/src/defaults/default_fstat.c +++ b/cpukit/libfs/src/defaults/default_fstat.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System gets file status + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_fsunmount.c b/cpukit/libfs/src/defaults/default_fsunmount.c index 54dd80eafd..b5e1fd1391 100644 --- a/cpukit/libfs/src/defaults/default_fsunmount.c +++ b/cpukit/libfs/src/defaults/default_fsunmount.c @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief RTEMS Default File System Unmount + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_fsync.c b/cpukit/libfs/src/defaults/default_fsync.c index 276c059bb5..53dce0c260 100644 --- a/cpukit/libfs/src/defaults/default_fsync.c +++ b/cpukit/libfs/src/defaults/default_fsync.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System Synchronises changes to a file + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_fsync_success.c b/cpukit/libfs/src/defaults/default_fsync_success.c index 591527e3e8..1d02e82b29 100644 --- a/cpukit/libfs/src/defaults/default_fsync_success.c +++ b/cpukit/libfs/src/defaults/default_fsync_success.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default Filesystem succeeds synchronizing file's in-core state + * @ingroup LibIOFSOps File System Operations + */ + /* * Copyright (c) 2012 embedded brains GmbH. All rights reserved. * diff --git a/cpukit/libfs/src/defaults/default_ftruncate.c b/cpukit/libfs/src/defaults/default_ftruncate.c index 2455a7b9f2..8016956ecb 100644 --- a/cpukit/libfs/src/defaults/default_ftruncate.c +++ b/cpukit/libfs/src/defaults/default_ftruncate.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System Truncates a file to indicated length + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_ftruncate_directory.c b/cpukit/libfs/src/defaults/default_ftruncate_directory.c index e438154d77..ad6af022d3 100644 --- a/cpukit/libfs/src/defaults/default_ftruncate_directory.c +++ b/cpukit/libfs/src/defaults/default_ftruncate_directory.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default Filesystem - Default Ftruncate Directory + * @ingroup libfs + */ + /* * Copyright (c) 2012 embedded brains GmbH. All rights reserved. * diff --git a/cpukit/libfs/src/defaults/default_ioctl.c b/cpukit/libfs/src/defaults/default_ioctl.c index edd1c622ba..f9e9a9cf29 100644 --- a/cpukit/libfs/src/defaults/default_ioctl.c +++ b/cpukit/libfs/src/defaults/default_ioctl.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System controls a STREAMS device + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_link.c b/cpukit/libfs/src/defaults/default_link.c index d4b30143c7..ab58c9b6fe 100644 --- a/cpukit/libfs/src/defaults/default_link.c +++ b/cpukit/libfs/src/defaults/default_link.c @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief RTEMS Default File System Link + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_lock_and_unlock.c b/cpukit/libfs/src/defaults/default_lock_and_unlock.c index a88a99d4a5..2efcdba6e5 100644 --- a/cpukit/libfs/src/defaults/default_lock_and_unlock.c +++ b/cpukit/libfs/src/defaults/default_lock_and_unlock.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System locks and unlocks rtems filesystem + * @ingroup LibIOFSOps File System Operations + */ + /* * Copyright (c) 2012 embedded brains GmbH. All rights reserved. * diff --git a/cpukit/libfs/src/defaults/default_lseek.c b/cpukit/libfs/src/defaults/default_lseek.c index 5af355513e..2dc2e654ac 100644 --- a/cpukit/libfs/src/defaults/default_lseek.c +++ b/cpukit/libfs/src/defaults/default_lseek.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System reposits the read/write file offset + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_lseek_directory.c b/cpukit/libfs/src/defaults/default_lseek_directory.c index e50eefd667..15ac19a5a3 100644 --- a/cpukit/libfs/src/defaults/default_lseek_directory.c +++ b/cpukit/libfs/src/defaults/default_lseek_directory.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System reposits read/write file offset directory + * @ingroup LibIOFSOps File System Operations + */ + /* * Copyright (c) 2012 embedded brains GmbH. All rights reserved. * diff --git a/cpukit/libfs/src/defaults/default_lseek_file.c b/cpukit/libfs/src/defaults/default_lseek_file.c index 9d80b2a176..cafc4dcf76 100644 --- a/cpukit/libfs/src/defaults/default_lseek_file.c +++ b/cpukit/libfs/src/defaults/default_lseek_file.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System reposits the offset of the open file fd + * @ingroup LibIOFSOps File System Operations + */ + /* * Copyright (c) 2012 embedded brains GmbH. All rights reserved. * diff --git a/cpukit/libfs/src/defaults/default_mknod.c b/cpukit/libfs/src/defaults/default_mknod.c index 2527cc89b8..9a6ce7cc16 100644 --- a/cpukit/libfs/src/defaults/default_mknod.c +++ b/cpukit/libfs/src/defaults/default_mknod.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System creates a special or ordinary file + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_mount.c b/cpukit/libfs/src/defaults/default_mount.c index 24c164dd8e..902f1182b3 100644 --- a/cpukit/libfs/src/defaults/default_mount.c +++ b/cpukit/libfs/src/defaults/default_mount.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System mounts a filesystem + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_open.c b/cpukit/libfs/src/defaults/default_open.c index a0e9d00c08..00f03b5231 100644 --- a/cpukit/libfs/src/defaults/default_open.c +++ b/cpukit/libfs/src/defaults/default_open.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default Filesystem - Default Open + * @ingroup libfs + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_read.c b/cpukit/libfs/src/defaults/default_read.c index 8a463e7452..729b3613f0 100644 --- a/cpukit/libfs/src/defaults/default_read.c +++ b/cpukit/libfs/src/defaults/default_read.c @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief RTEMS Default File System Read + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_readlink.c b/cpukit/libfs/src/defaults/default_readlink.c index a4132639e0..516f5278a8 100644 --- a/cpukit/libfs/src/defaults/default_readlink.c +++ b/cpukit/libfs/src/defaults/default_readlink.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default Filesystem - Default Readlink + * @ingroup libfs + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_rename.c b/cpukit/libfs/src/defaults/default_rename.c index c3b1a5a0d3..5b5bafaf08 100644 --- a/cpukit/libfs/src/defaults/default_rename.c +++ b/cpukit/libfs/src/defaults/default_rename.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTESM Default File System Rename Files + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_rmnod.c b/cpukit/libfs/src/defaults/default_rmnod.c index 3bb6ccfeb8..edb21e7b7d 100644 --- a/cpukit/libfs/src/defaults/default_rmnod.c +++ b/cpukit/libfs/src/defaults/default_rmnod.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default Filesystem - Default Remove Node + * @ingroup libfs + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_statvfs.c b/cpukit/libfs/src/defaults/default_statvfs.c index ed30ff51b2..139d0b0742 100644 --- a/cpukit/libfs/src/defaults/default_statvfs.c +++ b/cpukit/libfs/src/defaults/default_statvfs.c @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief RTEMS Default File System Get Statistics + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_symlink.c b/cpukit/libfs/src/defaults/default_symlink.c index 0652fc03a1..55852abb05 100644 --- a/cpukit/libfs/src/defaults/default_symlink.c +++ b/cpukit/libfs/src/defaults/default_symlink.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System creates a symbolic link to a file + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_unmount.c b/cpukit/libfs/src/defaults/default_unmount.c index b4820b9410..de520c1033 100644 --- a/cpukit/libfs/src/defaults/default_unmount.c +++ b/cpukit/libfs/src/defaults/default_unmount.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System Unmounts + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_utime.c b/cpukit/libfs/src/defaults/default_utime.c index 5d1dd82a04..f9ec57c41a 100644 --- a/cpukit/libfs/src/defaults/default_utime.c +++ b/cpukit/libfs/src/defaults/default_utime.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System sets file access and modification times + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/defaults/default_write.c b/cpukit/libfs/src/defaults/default_write.c index 7328c81eb7..c5aff4b534 100644 --- a/cpukit/libfs/src/defaults/default_write.c +++ b/cpukit/libfs/src/defaults/default_write.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS Default File System sends a message to another user + * @ingroup LibIOFSOps File System Operations + */ + /* * COPYRIGHT (c) 2010. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/libfs/src/devfs/devfs.h b/cpukit/libfs/src/devfs/devfs.h index 2317b10852..0213e072f9 100644 --- a/cpukit/libfs/src/devfs/devfs.h +++ b/cpukit/libfs/src/devfs/devfs.h @@ -1,8 +1,10 @@ /** -* @file libfs/devfs/devfs.h -* -* This include file contains all constants and structures associated -* with the 'device-only' filesystem. +* @file +* +* @brief Device Only File System +* +* This include file contains all constants and structures associated +* with the 'device-only' filesystem. */ #ifndef _RTEMS_DEVFS_H @@ -10,19 +12,25 @@ #include <rtems/libio_.h> -#ifdef __cplusplus -extern "C" { -#endif /** - * @defgroup DevFsDeviceTable Define Device Table Type + * @defgroup DevFsDeviceTable Device Only File System * - * @ingroup DevFs + * @ingroup FileSystemTypesAndMount * * @brief This structure defines the type of device table - * - * @{ */ +/**@{*/ + +#ifdef __cplusplus +extern "C" { +#endif +/** + * @brief Per Device Node Control Structure + * + * This structure is instanced per device node and contains all information + * used by this file system implementation to manage that device node. + */ typedef struct { /** This member points to device name which is not a null-terminated string */ const char *name; @@ -38,23 +46,27 @@ typedef struct { typedef struct { devFS_node *nodes; - size_t count; + size_t count; } devFS_data; /** * The following defines the device-only filesystem operating * operations. */ - extern const rtems_filesystem_operations_table devFS_ops; /** * The following defines the device-only filesystem operating * handlers. */ - extern const rtems_filesystem_file_handlers_r devFS_file_handlers; +/** + * @brief Obtain Immutable Pointer to Immutable File System Data + * + * This methods returns the immutable file system specific information + * associated with this file. + */ static inline const devFS_data *devFS_get_data( const rtems_filesystem_location_info_t *loc ) @@ -63,7 +75,7 @@ static inline const devFS_data *devFS_get_data( } /** - * @brief Evaluate Patch + * @brief Evaluate Path */ extern void devFS_eval_path( rtems_filesystem_eval_path_context_t *ctx @@ -71,14 +83,16 @@ extern void devFS_eval_path( /** * @brief Maps Open Operation to rtems_io_open + * * This handler maps open operation to rtems_io_open. + * * @param iop This is the RTEMS's internal representation of file. * @param pathname a null-terminated string that starts with /dev. - * @param flag access flags + * @param oflag access flags * @param mode access mode + * * @retval the same as open */ - extern int devFS_open( rtems_libio_t *iop, const char *pathname, @@ -91,107 +105,110 @@ extern int devFS_open( * @brief Maps Close Operation to rtems_io_close * * This handler maps close operation to rtems_io_close. + * * @param iop This is the RTEMS's internal representation of file + * * @retval the same as close */ - - extern int devFS_close( rtems_libio_t *iop ); - /** * @brief Maps Read Operation to rtems_io_read + * * This handler maps read operation to rtems_io_read. + * * @param iop This is the RTEMS's internal representation of file * @param buffer memory location to store read data * @param count how many bytes to read + * * @retval On successful, this routine returns total bytes read. On error * it returns -1 and errno is set to proper value. */ - extern ssize_t devFS_read( rtems_libio_t *iop, void *buffer, size_t count ); - /** * @brief Writes Operation to rtems_io_write + * * This handler maps write operation to rtems_io_write. + * * @param iop This is the RTEMS's internal representation of file * @param buffer data to be written * @param count how many bytes to write + * * @retval On successful, this routine returns total bytes written. On error * it returns -1 and errno is set to proper value. */ - extern ssize_t devFS_write( rtems_libio_t *iop, const void *buffer, size_t count ); - /** * @brief Maps ioctl Operation to rtems_io_ioctl + * * This handler maps ioctl operation to rtems_io_ioctl. + * * @param iop This is the RTEMS's internal representation of file * @param command io control command * @param buffer io control parameters + * * @retval On successful, this routine returns total bytes written. On error * it returns -1 and errno is set to proper value. */ - extern int devFS_ioctl( rtems_libio_t *iop, ioctl_command_t command, void *buffer ); - - - /** * @brief Gets the Device File Information * - * This handler gets the device file information. This routine only set the following member of struct stat: - * st_dev : device number - * st_mode: device file creation mode, only two mode are accepted: - * S_IFCHR: character device file - * S_IFBLK: block device file + * This handler gets the device file information. This routine only + * set the following member of struct stat: + * + * - st_dev: device number + * - st_mode: device file creation mode, only two mode are accepted: + * + S_IFCHR: character device file + * + S_IFBLK: block device file + * * @param loc contains filesystem access information * @param buf buffer to hold the device file's information + * * @retval On successful, this routine returns 0. On error * it returns -1 and errno is set to proper value. */ - extern int devFS_stat( const rtems_filesystem_location_info_t *loc, - struct stat *buf + struct stat *buf ); - - /** * @brief Invoked upon Determination of a Node Type + * * This routine is invoked upon determination of a node type. * Since this is a device-only filesystem, so there is only * one node type in the system. * * @param loc contains filesytem access information, this * parameter is ignored + * * @retval always returns RTEMS_FILESYSTEM_DEVICE */ - extern rtems_filesystem_node_types_t devFS_node_type( const rtems_filesystem_location_info_t*loc ); /** * @brief Creates an item in the main device table. + * * This routine is invoked upon registration of a new device * file. It is responsible for creating a item in the main * device table. This routine searches the device table in @@ -200,18 +217,17 @@ extern rtems_filesystem_node_types_t devFS_node_type( * * @see rtems_filesystem_mknod_t. */ - extern int devFS_mknod( const rtems_filesystem_location_info_t *parentloc, - const char *name, - size_t namelen, - mode_t mode, - dev_t dev + const char *name, + size_t namelen, + mode_t mode, + dev_t dev ); - /** * @brief Creates the Main Device Table + * * This routine is invoked upon rtems filesystem initialization. * It is responsible for creating the main device table, * initializing it to a known state, and set device file operation @@ -219,17 +235,16 @@ extern int devFS_mknod( * * @param mt_entry The filesystem mount table entry. * @param data Filesystem specific data. + * * @retval upon success, this routine returns 0; otherwise it returns * -1 and errno is set to proper value. The only error is when malloc * failed, and errno is set to NOMEM. */ - extern int devFS_initialize( rtems_filesystem_mount_table_entry_t *mt_entry, const void *data ); - /** * @brief Retrieves and Prints all the Device Registered in System * @@ -237,20 +252,21 @@ extern int devFS_initialize( * prints out their detail information. For example, on one system, * devFS_show will print out following message: * - * /dev/console 0 0 - * /dev/clock 1 0 - * /dev/tty0 0 0 - * /flash 2 0 + * @code + * /dev/console 0 0 + * /dev/clock 1 0 + * /dev/tty0 0 0 + * /flash 2 0 + * @end code * * This routine is intended for debugging, and can be used by shell * program to provide user with the system information. */ - extern void devFS_Show(void); -/** @} */ + #ifdef __cplusplus } #endif - +/** @} */ #endif diff --git a/cpukit/libfs/src/dosfs/dosfs.h b/cpukit/libfs/src/dosfs/dosfs.h index 2374e63f2b..211fc2d3f2 100644 --- a/cpukit/libfs/src/dosfs/dosfs.h +++ b/cpukit/libfs/src/dosfs/dosfs.h @@ -1,7 +1,9 @@ /** - * @file rtems/dosfs.h + * @file rtems/dosfs.h * - * Application interface to MSDOS filesystem. + * @brief Application Interface to MSDOS Filesystem + * + * @ingroup rtems_msdos_format */ /* @@ -31,8 +33,8 @@ int rtems_dosfs_initialize(rtems_filesystem_mount_table_entry_t *mt_entry, * * @ingroup FileSystemTypesAndMount * - * @{ */ +/**@{**/ #define MSDOS_FMT_INFO_LEVEL_NONE (0) #define MSDOS_FMT_INFO_LEVEL_INFO (1) diff --git a/cpukit/libfs/src/dosfs/fat.c b/cpukit/libfs/src/dosfs/fat.c index a672f42c7a..8e9da218ed 100644 --- a/cpukit/libfs/src/dosfs/fat.c +++ b/cpukit/libfs/src/dosfs/fat.c @@ -1,8 +1,11 @@ -/* - * fat.c - * - * Low-level operations on a volume with FAT filesystem +/** + * @file * + * @brief Low-level Operations on a Volume with a DOSFS FAT filesystem + * @ingroup libfs + */ + +/* * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru> */ diff --git a/cpukit/libfs/src/dosfs/fat.h b/cpukit/libfs/src/dosfs/fat.h index 5d36fb45c0..0219075594 100644 --- a/cpukit/libfs/src/dosfs/fat.h +++ b/cpukit/libfs/src/dosfs/fat.h @@ -1,8 +1,15 @@ -/* - * fat.h +/** + * @file + * + * @brief Constants/Data Structures/Prototypes on a Volume with FAT Filesystem * - * Constants/data structures/prototypes for low-level operations on a volume - * with FAT filesystem + * @ingroup libfs_dosfs + * + * Constants/Data Structures/Prototypes for Low-Level + * Operations on a Volume with FAT Filesystem + */ + +/* * * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru> @@ -23,6 +30,12 @@ #include <errno.h> #include <rtems/bdbuf.h> +/** + * @defgroup libfs_dosfs FAT FileSystem + * + * @ingroup libfs + */ +/**@{*/ #ifdef __cplusplus extern "C" { #endif @@ -545,5 +558,5 @@ fat_sync(fat_fs_info_t *fs_info); #ifdef __cplusplus } #endif - +/**@}*/ #endif /* __DOSFS_FAT_H__ */ diff --git a/cpukit/libfs/src/dosfs/fat_fat_operations.h b/cpukit/libfs/src/dosfs/fat_fat_operations.h index 278947ffca..69589153d2 100644 --- a/cpukit/libfs/src/dosfs/fat_fat_operations.h +++ b/cpukit/libfs/src/dosfs/fat_fat_operations.h @@ -1,9 +1,15 @@ -/* - * fat_fat_operations.h +/** + * @file * - * Constants/data structures/prototypes for operations on Files Allocation - * Table + * @brief Constants/Data Structures/Prototypes for Files Allocation Table * + * @ingroup libfs_ffo + * + * Constants/Data Structures/Prototypes for + * Operations on Files Allocation Table + */ + +/* * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru> * @@ -11,6 +17,7 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ + #ifndef __DOSFS_FAT_FAT_OPERATIONS_H__ #define __DOSFS_FAT_FAT_OPERATIONS_H__ diff --git a/cpukit/libfs/src/dosfs/fat_file.c b/cpukit/libfs/src/dosfs/fat_file.c index 3e2d60967c..7f05447187 100644 --- a/cpukit/libfs/src/dosfs/fat_file.c +++ b/cpukit/libfs/src/dosfs/fat_file.c @@ -191,45 +191,46 @@ fat_file_close( ) { int rc = RC_OK; - uint32_t key = 0; /* * if links_num field of fat-file descriptor is greater than 1 - * decrement the count of links and return + * decrement only the count of links */ if (fat_fd->links_num > 1) { fat_fd->links_num--; - return rc; } - - key = fat_construct_key(fs_info, &fat_fd->dir_pos.sname); - - if (fat_fd->flags & FAT_FILE_REMOVED) + else { - rc = fat_file_truncate(fs_info, fat_fd, 0); - if ( rc != RC_OK ) - return rc; + uint32_t key = fat_construct_key(fs_info, &fat_fd->dir_pos.sname); - _hash_delete(fs_info->rhash, key, fat_fd->ino, fat_fd); + if (fat_fd->flags & FAT_FILE_REMOVED) + { + rc = fat_file_truncate(fs_info, fat_fd, 0); + if (rc == RC_OK) + { + _hash_delete(fs_info->rhash, key, fat_fd->ino, fat_fd); - if ( fat_ino_is_unique(fs_info, fat_fd->ino) ) - fat_free_unique_ino(fs_info, fat_fd->ino); + if (fat_ino_is_unique(fs_info, fat_fd->ino)) + fat_free_unique_ino(fs_info, fat_fd->ino); - free(fat_fd); - } - else - { - if (fat_ino_is_unique(fs_info, fat_fd->ino)) - { - fat_fd->links_num = 0; + free(fat_fd); + } } else { - _hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd); - free(fat_fd); + if (fat_ino_is_unique(fs_info, fat_fd->ino)) + { + fat_fd->links_num = 0; + } + else + { + _hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd); + free(fat_fd); + } } } + /* * flush any modified "cached" buffer back to disk */ diff --git a/cpukit/libfs/src/dosfs/fat_file.h b/cpukit/libfs/src/dosfs/fat_file.h index 0e22c90e60..46bf07fca5 100644 --- a/cpukit/libfs/src/dosfs/fat_file.h +++ b/cpukit/libfs/src/dosfs/fat_file.h @@ -1,7 +1,12 @@ -/* - * fat_file.h +/** + * @file * - * Constants/data structures/prototypes for operations on "fat-file" + * @brief Constants/Data Structures/Prototypes for Operations on "fat-file" + * + * @ingroup libfs_ff + */ + +/* * * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru> @@ -10,6 +15,7 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ + #ifndef __DOSFS_FAT_FILE_H__ #define __DOSFS_FAT_FILE_H__ @@ -26,11 +32,13 @@ * @ingroup libfs */ /**@{*/ + #ifdef __cplusplus extern "C" { #endif -/* "fat-file" representation +/** + * @brief The "fat-file" representation. * * the idea is: fat-file is nothing but a cluster chain, any open fat-file is * represented in system by fat-file descriptor and has well-known @@ -44,7 +52,6 @@ extern "C" { * Such interface hides the architecture of fat-file and represents it like * linear file */ - typedef rtems_filesystem_node_types_t fat_file_type_t; #define FAT_DIRECTORY RTEMS_FILESYSTEM_DIRECTORY @@ -56,8 +63,9 @@ typedef struct fat_file_map_s uint32_t disk_cln; uint32_t last_cln; } fat_file_map_t; -/* - * descriptor of a fat-file + +/** + * @brief Descriptor of a fat-file. * * To each particular clusters chain */ @@ -109,18 +117,17 @@ typedef struct fat_file_fd_s #define FAT_EOF 0x00 -/* fat_construct_key -- - * Construct key for hash access: convert (cluster num, offset) to - * (sector512 num, new offset) and than construct key as - * key = (sector512 num) << 4 | (new offset) +/* @brief Construct key for hash access. + * + * Construct key for hash access: convert (cluster num, offset) to + * (sector512 num, new offset) and than construct key as + * key = (sector512 num) << 4 | (new offset) * - * PARAMETERS: - * cl - cluster number - * ofs - offset inside cluster 'cl' - * fs_info - FS info + * @param[in] cl - cluster number + * @param[in] ofs - offset inside cluster 'cl' + * @param[in] fs_info - FS info * - * RETURNS: - * constructed key + * @retval constructed key */ static inline uint32_t fat_construct_key( diff --git a/cpukit/libfs/src/dosfs/msdos.h b/cpukit/libfs/src/dosfs/msdos.h index ad0841297c..9465d268d7 100644 --- a/cpukit/libfs/src/dosfs/msdos.h +++ b/cpukit/libfs/src/dosfs/msdos.h @@ -1,8 +1,12 @@ -/* - * msdos.h +/** + * @file * - * The MSDOS filesystem constants/data structures/prototypes + * @brief The MSDOS Filesystem Constants/Data Structures/Prototypes * + * @ingroup libfs_msdos + */ + +/* * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru> * @@ -10,6 +14,7 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ + #ifndef __DOSFS_MSDOS_H__ #define __DOSFS_MSDOS_H__ @@ -80,7 +85,7 @@ extern const rtems_filesystem_file_handlers_r msdos_file_handlers; #define MSDOS_HARD_LINK RTEMS_FILESYSTEM_HARD_LINK /* pseudo type */ /** - * @brief Type of Node that Loc Refers To + * @brief Type of node that loc refers to. * * The following returns the type of node that the loc refers to. * @@ -233,7 +238,7 @@ typedef enum msdos_token_types_e #define MSDOS_DPS512_NUM 16 /** - * @brief Shut Down MSDOS FileSystem + * @brief Shut down the MSDOS filesystem. * * MSDOS shut down handler implementation */ @@ -242,7 +247,7 @@ void msdos_shut_down(rtems_filesystem_mount_table_entry_t *temp_mt_entry); void msdos_eval_path(rtems_filesystem_eval_path_context_t *ctx); /** - * @brief Call Fat-File Close Routine + * @brief Call the Fat-File close routine. * * Free node handler implementation for the filesystem operations table. */ @@ -252,6 +257,11 @@ rtems_filesystem_node_types_t msdos_node_type( const rtems_filesystem_location_info_t *loc ); +/** + * @brief Routine for node creation in a MSDOS filesystem. + * + * MSDOS Directory Handlers Implementation + */ int msdos_mknod( const rtems_filesystem_location_info_t *loc, const char *name, @@ -261,7 +271,7 @@ int msdos_mknod( ); /** - * @brief Remove Node from MSDOS Directory + * @brief Remove node from MSDOS directory. * * MSDOS Directory Handlers Implementation */ @@ -271,7 +281,7 @@ int msdos_rmnod( ); /** - * @brief Rename a MSDOS FileSystem Node + * @brief Rename a MSDOS filesystem node. * * Routine to rename a MSDOS filesystem node */ @@ -288,7 +298,7 @@ void msdos_lock(const rtems_filesystem_mount_table_entry_t *mt_entry); void msdos_unlock(const rtems_filesystem_mount_table_entry_t *mt_entry); /** - * @brief MSDOS Filesystem Initialization + * @brief MSDOS filesystem initialization routine. * * MSDOS Initialization support routine implementation */ @@ -342,7 +352,7 @@ int msdos_dir_stat( ); /** - * @brief Implements wake up version of the "signal" operation + * @brief Implements wake up version of the "signal" operation. * * Routine to create a new MSDOS filesystem node * diff --git a/cpukit/libfs/src/dosfs/msdos_eval.c b/cpukit/libfs/src/dosfs/msdos_eval.c index 19e7406e89..d009f440f9 100644 --- a/cpukit/libfs/src/dosfs/msdos_eval.c +++ b/cpukit/libfs/src/dosfs/msdos_eval.c @@ -1,6 +1,11 @@ -/* - * MSDOS evaluation routines +/** + * @file * + * @brief MSDOS Evaluation Routines + * @ingroup libfs + */ + +/* * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru> * diff --git a/cpukit/libfs/src/dosfs/msdos_mknod.c b/cpukit/libfs/src/dosfs/msdos_mknod.c index 4cf41089fd..0c247e92fd 100644 --- a/cpukit/libfs/src/dosfs/msdos_mknod.c +++ b/cpukit/libfs/src/dosfs/msdos_mknod.c @@ -1,6 +1,11 @@ -/* - * Routine for node creation in MSDOS filesystem. +/** + * @file * + * @brief Routine for Node Creation in MSDOS Filesystem + * @ingroup libfs_msdos MSDOS FileSystem + */ + +/* * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru> * diff --git a/cpukit/libfs/src/imfs/imfs.h b/cpukit/libfs/src/imfs/imfs.h index 46fee024c3..6874523154 100644 --- a/cpukit/libfs/src/imfs/imfs.h +++ b/cpukit/libfs/src/imfs/imfs.h @@ -1,7 +1,7 @@ /** - * @file rtems/imfs.h + * @file * - * @brief Header file for the In-Memory File System + * @brief Header File for the In-Memory File System */ /* @@ -22,10 +22,13 @@ #include <rtems/pipe.h> /** - * @defgroup IMFS POSIX In-Memory File System Support + * @brief In-Memory File System Support. * - * @brief In-Memory File System Support + * @defgroup IMFS In-Memory File System Support + * + * @ingroup FileSystemTypesAndMount */ +/**@{*/ #ifdef __cplusplus extern "C" { @@ -64,7 +67,7 @@ typedef struct { void *context; } IMFS_generic_t; -/* +/** * IMFS "memfile" information * * The data structure for the in-memory "memfiles" is based on classic UNIX. @@ -77,14 +80,15 @@ typedef struct { * memory wasted due to internal file fragmentation. The following * is a list of maximum file sizes based on various settings * + * @code * max_filesize with blocks of 16 is 1,328 * max_filesize with blocks of 32 is 18,656 * max_filesize with blocks of 64 is 279,488 * max_filesize with blocks of 128 is 4,329,344 * max_filesize with blocks of 256 is 68,173,568 * max_filesize with blocks of 512 is 1,082,195,456 + * @endcode */ - #define IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK 128 extern int imfs_rq_memfile_bytes_per_block; extern int imfs_memfile_bytes_per_block; @@ -111,7 +115,6 @@ typedef struct { /* * Important block numbers for "memfiles" */ - #define FIRST_INDIRECT (0) #define LAST_INDIRECT (IMFS_MEMFILE_BLOCK_SLOTS - 1) @@ -132,7 +135,6 @@ typedef struct { /* * What types of IMFS file systems entities there can be. */ - typedef enum { IMFS_DIRECTORY = RTEMS_FILESYSTEM_DIRECTORY, IMFS_DEVICE = RTEMS_FILESYSTEM_DEVICE, @@ -159,11 +161,12 @@ typedef union { IMFS_generic_t generic; } IMFS_types_union; +/** @} */ + /** * @addtogroup IMFSGenericNodes - * - * @{ */ +/**@{*/ /** * @brief Initializes an IMFS node. @@ -276,6 +279,11 @@ typedef struct { /** @} */ +/** + * @addtogroup IMFS + */ +/**@{*/ + /* * Major device number for the IMFS. This is not a real device number because * the IMFS is just a file system and does not have a driver. @@ -392,7 +400,7 @@ extern int miniIMFS_initialize( ); /** - * @brief IMFS Initialization Support + * @brief IMFS initialization support. */ extern int IMFS_initialize_support( rtems_filesystem_mount_table_entry_t *mt_entry, @@ -400,14 +408,14 @@ extern int IMFS_initialize_support( const IMFS_node_control *const node_controls [IMFS_TYPE_COUNT] ); /** - * @brief Unmount this Instance of IMFS + * @brief Unmount this instance of IMFS. */ extern void IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *mt_entry ); /** - * @brief RTEMS Load Tarfs + * @brief RTEMS load tarfs. * * This file implements the "mount" procedure for tar-based IMFS * extensions. The TAR is not actually mounted under the IMFS. @@ -425,32 +433,37 @@ extern void IMFS_fsunmount( * * TAR file format: * - * Offset Length Contents - * 0 100 bytes File name ('\0' terminated, 99 maxmum length) - * 100 8 bytes File mode (in octal ascii) - * 108 8 bytes User ID (in octal ascii) - * 116 8 bytes Group ID (in octal ascii) - * 124 12 bytes File size (s) (in octal ascii) - * 136 12 bytes Modify time (in octal ascii) - * 148 8 bytes Header checksum (in octal ascii) - * 156 1 bytes Link flag - * 157 100 bytes Linkname ('\0' terminated, 99 maxmum length) - * 257 8 bytes Magic PAX ("ustar\0" + 2 bytes padding) - * 257 8 bytes Magic GNU tar ("ustar \0") - * 265 32 bytes User name ('\0' terminated, 31 maxmum length) - * 297 32 bytes Group name ('\0' terminated, 31 maxmum length) - * 329 8 bytes Major device ID (in octal ascii) - * 337 8 bytes Minor device ID (in octal ascii) - * 345 167 bytes Padding - * 512 (s+p)bytes File contents (s+p) := (((s) + 511) & ~511), - * round up to 512 bytes + * @code + * Offset Length Contents + * 0 100 bytes File name ('\0' terminated, 99 maxmum length) + * 100 8 bytes File mode (in octal ascii) + * 108 8 bytes User ID (in octal ascii) + * 116 8 bytes Group ID (in octal ascii) + * 124 12 bytes File size (s) (in octal ascii) + * 136 12 bytes Modify time (in octal ascii) + * 148 8 bytes Header checksum (in octal ascii) + * 156 1 bytes Link flag + * 157 100 bytes Linkname ('\0' terminated, 99 maxmum length) + * 257 8 bytes Magic PAX ("ustar\0" + 2 bytes padding) + * 257 8 bytes Magic GNU tar ("ustar \0") + * 265 32 bytes User name ('\0' terminated, 31 maxmum length) + * 297 32 bytes Group name ('\0' terminated, 31 maxmum length) + * 329 8 bytes Major device ID (in octal ascii) + * 337 8 bytes Minor device ID (in octal ascii) + * 345 167 bytes Padding + * 512 (s+p) bytes File contents (s+p) := (((s) + 511) & ~511), + * round up to 512 bytes + * @endcode * * Checksum: - * int i, sum; - * char* header = tar_header_pointer; - * sum = 0; - * for(i = 0; i < 512; i++) - * sum += 0xFF & header[i]; + * @code + * int i, sum; + * char *header = tar_header_pointer; + * + * sum = 0; + * for (i = 0; i < 512; i++) + * sum += 0xFF & header[i]; + * @endcode */ extern int rtems_tarfs_load( const char *mountpoint, @@ -459,7 +472,7 @@ extern int rtems_tarfs_load( ); /** - * @brief IMFS Dump + * @brief Dump the entire IMFS. * * This routine dumps the entire IMFS that is mounted at the root * directory. @@ -470,7 +483,8 @@ extern int rtems_tarfs_load( extern void IMFS_dump( void ); /** - * @brief IMFS Memory File Maximum Size + * @brief Get the size of the largest file which can be created + * using the IMFS memory file type. * * Return the size of the largest file which can be created * using the IMFS memory file type. @@ -478,22 +492,22 @@ extern void IMFS_dump( void ); extern int IMFS_memfile_maximum_size( void ); /** - * @brief Destroy IMFS Node + * @brief Destroy an IMFS node. */ extern void IMFS_node_destroy( IMFS_jnode_t *node ); /** - * @brief Clone IMFS Node + * @brief Clone an IMFS node. */ extern int IMFS_node_clone( rtems_filesystem_location_info_t *loc ); /** - * @brief Free IMFS Node + * @brief Free an IMFS node. */ extern void IMFS_node_free( const rtems_filesystem_location_info_t *loc ); /** - * @brief IMFS Node Type + * @brief IMFS Node Type Get the type of an IMFS node. * * The following verifies that returns the type of node that the * loc refers to. @@ -503,7 +517,7 @@ extern rtems_filesystem_node_types_t IMFS_node_type( ); /** - * @brief IMFS Stat + * @brief Perform a status processing for the IMFS. * * This routine provides a stat for the IMFS file system. */ @@ -513,14 +527,14 @@ extern int IMFS_stat( ); /** - * @brief Evaluation IMFS Node Support + * @brief IMFS evaluation node support. */ extern void IMFS_eval_path( rtems_filesystem_eval_path_context_t *ctx ); /** - * @brief IMFS Create a New Link Node + * @brief Create a new IMFS link node. * * The following rouine creates a new link node under parent with the * name given in name. The link node is set to point to the node at @@ -534,7 +548,7 @@ extern int IMFS_link( ); /** - * @brief IMFS Change Owner + * @brief Change the owner of IMFS. * * This routine is the implementation of the chown() system * call for the IMFS. @@ -546,7 +560,7 @@ extern int IMFS_chown( ); /** - * @brief Create a IMFS Node + * @brief Create an IMFS node. * * Routine to create a node in the IMFS file system. */ @@ -559,7 +573,7 @@ extern int IMFS_mknod( ); /** - * @brief Create a New IMFS Node + * @brief Create a new IMFS node. * * Routine to create a new in memory file system node. */ @@ -573,7 +587,7 @@ extern IMFS_jnode_t *IMFS_allocate_node( ); /** - * @brief Create an IMFS Node + * @brief Create an IMFS node. * * Create an IMFS filesystem node of an arbitrary type that is NOT * the root directory node. @@ -591,6 +605,7 @@ extern bool IMFS_is_imfs_instance( const rtems_filesystem_location_info_t *loc ); +/** @} */ /** * @defgroup IMFSGenericNodes IMFS Generic Nodes @@ -604,9 +619,8 @@ extern bool IMFS_is_imfs_instance( * more features like support for fsync() and fdatasync(). The generic nodes * use the reference counting of the IMFS. This provides automatic node * destruction when the last reference vanishes. - * - * @{ */ +/**@{*/ /** * @brief Makes a generic IMFS node. @@ -658,14 +672,19 @@ extern int IMFS_make_generic_node( /** @} */ /** - * @brief Mount an IMFS + * @addtogroup IMFS + */ +/**@{*/ + +/** + * @brief Mount an IMFS. */ extern int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry /* IN */ ); /** - * @brief Unmount an IMFS + * @brief Unmount an IMFS. */ extern int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry /* IN */ @@ -676,7 +695,7 @@ extern IMFS_jnode_t *IMFS_memfile_remove( ); /** - * @brief Truncate a Memory File + * @brief Truncate a memory file. * * This routine processes the ftruncate() system call. */ @@ -686,7 +705,7 @@ extern int memfile_ftruncate( ); /** - * @brief IMFS Read Next Directory + * @brief Read the next directory of the IMFS. * * This routine will read the next directory entry based on the directory * offset. The offset should be equal to -n- time the size of an individual @@ -713,12 +732,11 @@ extern ssize_t imfs_dir_read( * malloc'ed memory. Thus any data stored in one of these files is lost * at system shutdown unless special arrangements to copy the data to * some type of non-volailte storage are made by the application. - * - * @{ */ +/**@{*/ /** - * @brief Open a Memory File + * @brief Open a memory file. * * This routine processes the open() system call. Note that there is * nothing special to be done at open() time. @@ -731,7 +749,7 @@ extern int memfile_open( ); /** - * @brief Read a Memory File + * @brief Read a memory file. * * This routine processes the read() system call. */ @@ -742,7 +760,7 @@ extern ssize_t memfile_read( ); /** - * @brief Write a Memory File + * @brief Write a memory file. * * This routine processes the write() system call. */ @@ -754,16 +772,13 @@ extern ssize_t memfile_write( /** @} */ - /** * @name IMFS Device Node Handlers * * This section contains the set of handlers used to map operations on * IMFS device nodes onto calls to the RTEMS Classic API IO Manager. - * - * @{ */ - +/**@{*/ extern int device_open( rtems_libio_t *iop, /* IN */ @@ -802,7 +817,7 @@ extern int device_ftruncate( /** @} */ /** - * @brief Set IMFS File Access and Modification Times + * @brief Set IMFS file access and modification times. * * * This routine is the implementation of the utime() system @@ -815,7 +830,7 @@ extern int IMFS_utime( ); /** - * @brief Change IMFS File Mode + * @brief Change the IMFS file mode. */ extern int IMFS_fchmod( const rtems_filesystem_location_info_t *loc, @@ -823,7 +838,7 @@ extern int IMFS_fchmod( ); /** - * @brief IMFS Create a New Symbolic Link Node + * @brief Create a new IMFS symbolic link node. * * The following rouine creates a new symbolic link node under parent * with the name given in name. The node is set to point to the node at @@ -837,9 +852,9 @@ extern int IMFS_symlink( ); /** - * @brief IMFS Put Symbolic Link into Buffer + * @brief Put IMFS symbolic link into buffer. * - * The following rouine puts the symblic links destination name into + * The following rouine puts the symbolic links destination name into * buff. * */ @@ -850,7 +865,7 @@ extern ssize_t IMFS_readlink( ); /** - * @brief IMFS Rename + * @brief Rename the IMFS. * * The following rouine creates a new link node under parent with the * name given in name and removes the old. @@ -863,7 +878,7 @@ extern int IMFS_rename( size_t namelen ); /** - * @brief IMFS Node Removal Handler + * @brief IMFS node removal handler. * * This file contains the handler used to remove a node when a file type * does not require special actions. @@ -939,11 +954,12 @@ static inline IMFS_jnode_t *IMFS_create_node( ); } +/** @} */ + /** * @addtogroup IMFSGenericNodes - * - * @{ */ +/**@{*/ static inline void *IMFS_generic_get_context_by_node( const IMFS_jnode_t *node @@ -978,11 +994,9 @@ static inline dev_t IMFS_generic_get_device_identifier_by_node( ); } -/** @} */ - #ifdef __cplusplus } #endif - +/** @} */ #endif /* end of include file */ diff --git a/cpukit/libfs/src/nfsclient/proto/mount_prot.h b/cpukit/libfs/src/nfsclient/proto/mount_prot.h index 1cde517aea..a5cac29217 100644 --- a/cpukit/libfs/src/nfsclient/proto/mount_prot.h +++ b/cpukit/libfs/src/nfsclient/proto/mount_prot.h @@ -1,6 +1,9 @@ -/* - * Please do not edit this file. - * It was generated using rpcgen. +/** + * @file + * + * @brief Nfsclient Mount Prot + * + * @ingroup rtems-nfsclient */ #ifndef _MOUNT_PROT_H_RPCGEN @@ -8,7 +11,12 @@ #include <rpc/rpc.h> - +/** + * @defgroup libfs_nfsclient_mount_prot Mount Prot + * + * @ingroup libfs + */ +/**@{*/ #ifdef __cplusplus extern "C" { #endif @@ -140,5 +148,5 @@ extern bool_t xdr_exportnode (); #ifdef __cplusplus } #endif - +/**@}*/ #endif /* !_MOUNT_PROT_H_RPCGEN */ diff --git a/cpukit/libfs/src/nfsclient/proto/mount_prot_xdr.c b/cpukit/libfs/src/nfsclient/proto/mount_prot_xdr.c index b439ef341f..a7950c1b39 100644 --- a/cpukit/libfs/src/nfsclient/proto/mount_prot_xdr.c +++ b/cpukit/libfs/src/nfsclient/proto/mount_prot_xdr.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief Mount Prot XDR + * @ingroup libfs_nfsclient_mount_prot Mount Prot + */ + /* * Please do not edit this file. * It was generated using rpcgen. diff --git a/cpukit/libfs/src/nfsclient/proto/nfs_prot.h b/cpukit/libfs/src/nfsclient/proto/nfs_prot.h index 45fddf3ee0..80fd2db9d7 100644 --- a/cpukit/libfs/src/nfsclient/proto/nfs_prot.h +++ b/cpukit/libfs/src/nfsclient/proto/nfs_prot.h @@ -8,7 +8,12 @@ #include <rpc/rpc.h> - +/** + * @defgroup libfs_nfsclient_nfs_prot NFS Prot + * + * @ingroup libfs + */ +/**@{*/ #ifdef __cplusplus extern "C" { #endif @@ -451,5 +456,5 @@ extern bool_t xdr_statfsres (); #ifdef __cplusplus } #endif - +/**@}*/ #endif /* !_NFS_PROT_H_RPCGEN */ diff --git a/cpukit/libfs/src/nfsclient/proto/nfs_prot_xdr.c b/cpukit/libfs/src/nfsclient/proto/nfs_prot_xdr.c index cde005e2b4..40496a72ff 100644 --- a/cpukit/libfs/src/nfsclient/proto/nfs_prot_xdr.c +++ b/cpukit/libfs/src/nfsclient/proto/nfs_prot_xdr.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief NFS Prot XDR + * @ingroup libfs_nfsclient_nfs_prot NFS Prot + */ + /* * Please do not edit this file. * It was generated using rpcgen. diff --git a/cpukit/libfs/src/nfsclient/src/cexphelp.c b/cpukit/libfs/src/nfsclient/src/cexphelp.c index d0406ad33a..09c73774f6 100644 --- a/cpukit/libfs/src/nfsclient/src/cexphelp.c +++ b/cpukit/libfs/src/nfsclient/src/cexphelp.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief CEXP Help Information + * @ingroup libfs + */ + #if HAVE_CONFIG_H #include "config.h" #endif diff --git a/cpukit/libfs/src/nfsclient/src/dirutils.c b/cpukit/libfs/src/nfsclient/src/dirutils.c index 357aab96df..65e2053ddc 100644 --- a/cpukit/libfs/src/nfsclient/src/dirutils.c +++ b/cpukit/libfs/src/nfsclient/src/dirutils.c @@ -1,8 +1,13 @@ -/* very crude and basic fs utilities for testing the NFS */ - -/* Till Straumann, <strauman@slac.stanford.edu>, 10/2002 */ +/** + * @file + * + * @brief Basic NFS Filesystem Utilities for Testing the NFS + * @ingroup libfs + */ /* + * Author: Till Straumann, <strauman@slac.stanford.edu>, 10/2002 + * * Authorship * ---------- * This software (NFS-2 client implementation for RTEMS) was created by diff --git a/cpukit/libfs/src/nfsclient/src/librtemsNfs.h b/cpukit/libfs/src/nfsclient/src/librtemsNfs.h index fc4802874a..f1b2b4f50c 100644 --- a/cpukit/libfs/src/nfsclient/src/librtemsNfs.h +++ b/cpukit/libfs/src/nfsclient/src/librtemsNfs.h @@ -1,11 +1,14 @@ -#ifndef LIB_RTEMS_NFS_CLIENT_H -#define LIB_RTEMS_NFS_CLIENT_H - -/* public interface to the NFS client library for RTEMS */ - -/* Author: Till Straumann <strauman@slac.stanford.edu> 2002-2003 */ +/** + * @file + * + * @brief Public Interface to the NFS Client Library for RTEMS + * + * @ingroup rtems-nfsclient + */ /* + * Author: Till Straumann <strauman@slac.stanford.edu> 2002-2003 + * * Authorship * ---------- * This software (NFS-2 client implementation for RTEMS) was created by @@ -50,6 +53,16 @@ * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03 */ +#ifndef LIB_RTEMS_NFS_CLIENT_H +#define LIB_RTEMS_NFS_CLIENT_H + +/** + * @defgroup rtems-nfsclient NFS Client Library + * + * @ingroup nfsclient + * @{ + */ + #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -73,40 +86,41 @@ extern "C" { #endif -/* RPCIO driver interface. +/** RPCIO driver interface. * If you need RPCIO for other purposes than NFS * you may want to include <rpcio.h> #include "rpcio.h" */ -/* Priority of daemon; may be setup prior to calling rpcUdpInit(); +/** Priority of daemon; may be setup prior to calling rpcUdpInit(); * otherwise the network task priority from the rtems_bsdnet_config * is used... */ extern rtems_task_priority rpciodPriority; -/* Initialize the driver. +/** Initialize the driver. * * Note, called in nfsfs initialise when mount is called. * - * RETURNS: 0 on success, -1 on failure + * @retval 0 on success, -1 on failure */ int rpcUdpInit(void); -/* Cleanup/Stop +/** + * @brief RPC cleanup and stop. * - * RETURNS: 0 on success, nonzero if still in use + * @retval 0 on success, nonzero if still in use */ int rpcUdpCleanup(void); -/* NFS driver interface */ +/** NFS driver interface */ -/* Initialize the NFS driver. +/** + * @brief Initialize the NFS driver. * - * NOTE: The RPCIO driver must have been initialized prior to - * calling this. + * The RPCIO driver must have been initialized prior to calling this. * * Note, called in nfsfs initialise when mount is called with defaults. * @@ -121,54 +135,67 @@ rpcUdpCleanup(void); * * Supply zero values to have the * driver chose reasonable defaults. + * + * @retval 0 Successful operation. + * @retval -1 An error occurred. The errno is set to indicate the error. */ -void +int nfsInit(int smallPoolDepth, int bigPoolDepth); -/* Driver cleanup code +/** + * @brief Driver cleanup code. * - * RETURNS: 0 on success, nonzero if still in use + * @retval 0 on success, nonzero if still in use */ int nfsCleanup(void); -/* Dump a list of the currently mounted NFS to a file +/** + * @brief Dump a list of the currently mounted NFS to a file. + * + * Dump a list of the currently mounted NFS to a file * (stdout is used in case f==NULL) */ int nfsMountsShow(FILE *f); -/* +/** + * @brief Filesystem mount table mount handler. + * * Filesystem mount table mount handler. Do not call, use the mount call. */ -int +int rtems_nfs_initialize(rtems_filesystem_mount_table_entry_t *mt_entry, const void *data); -/* A utility routine to find the path leading to a +/** + * @brief A utility routine to find the path leading to a * rtems_filesystem_location_info_t node. * * This should really be present in libcsupport... * - * INPUT: 'loc' and a buffer 'buf' (length 'len') to hold the - * path. - * OUTPUT: path copied into 'buf' + * @param[in] 'loc' and a buffer 'buf' (length 'len') to hold the path. * - * RETURNS: 0 on success, RTEMS error code on error. + * @param[out] path copied into 'buf' + * + * @retval 0 on success, RTEMS error code on error. */ rtems_status_code rtems_filesystem_resolve_location(char *buf, int len, rtems_filesystem_location_info_t *loc); -/* Set the timeout (initial default: 10s) for NFS and mount calls. +/** + * @brief Set the timeout (initial default: 10s) for NFS and mount calls. + * + * Set the timeout (initial default: 10s) for NFS and mount calls. * - * RETURNS 0 on success, nonzero if the requested timeout is less than + * @retval 0 on success, nonzero if the requested timeout is less than * a clock tick or if the system clock rate cannot be determined. */ int nfsSetTimeout(uint32_t timeout_ms); -/* Read current timeout (in milliseconds) */ +/** Read current timeout (in milliseconds) */ uint32_t nfsGetTimeout(void); @@ -176,4 +203,5 @@ nfsGetTimeout(void); } #endif +/** @} */ #endif diff --git a/cpukit/libfs/src/nfsclient/src/nfs.c b/cpukit/libfs/src/nfsclient/src/nfs.c index 2627726dc0..99e34d5ac7 100644 --- a/cpukit/libfs/src/nfsclient/src/nfs.c +++ b/cpukit/libfs/src/nfsclient/src/nfs.c @@ -1,15 +1,20 @@ -/* NFS client implementation for RTEMS; hooks into the RTEMS filesystem */ - -/* Author: Till Straumann <strauman@slac.stanford.edu> 2002 */ +/** + * @file + * + * @brief NFS Client Implementation for RTEMS + * @ingroup libfs + * + * Hooks Into the RTEMS NFS Filesystem + */ /* + * Author: Till Straumann <strauman@slac.stanford.edu>, 2002 + * * Hacked on by others. * * Modifications to support reference counting in the file system are * Copyright (c) 2012 embedded brains GmbH. - */ - -/* + * * Authorship * ---------- * This software (NFS-2 client implementation for RTEMS) was created by @@ -674,7 +679,19 @@ static struct nfsstats { * during the system lifetime */ u_short fs_ids; -} nfsGlob = {0, 0, 0, 0, 0, 0}; + + /* Two pools of RPC transactions; + * One with small send buffers + * the other with a big one. + * The actual size of the small + * buffer is configurable (see top). + * + * Note: The RX buffers are always + * big + */ + RpcUdpXactPool smallPool; + RpcUdpXactPool bigPool; +} nfsGlob = {0, 0, 0xffffffff, 0, 0, 0, NULL, NULL}; /* * Global variable to tune the 'st_blksize' (stat(2)) value this nfs @@ -686,18 +703,6 @@ static struct nfsstats { #endif int nfsStBlksize = DEFAULT_NFS_ST_BLKSIZE; -/* Two pools of RPC transactions; - * One with small send buffers - * the other with a big one. - * The actual size of the small - * buffer is configurable (see top). - * - * Note: The RX buffers are always - * big - */ -static RpcUdpXactPool smallPool = 0; -static RpcUdpXactPool bigPool = 0; - /***************************************** Implementation @@ -992,7 +997,7 @@ NfsNode rval = nfsNodeCreate(node->nfs, 0); * they are created and destroyed * on the fly). */ -void +int nfsInit(int smallPoolDepth, int bigPoolDepth) { static int initialised = 0; @@ -1000,7 +1005,7 @@ entry dummy; rtems_status_code status; if (initialised) - return; + return 0; initialised = 1; @@ -1013,7 +1018,8 @@ rtems_status_code status; if (RTEMS_SUCCESSFUL != rtems_io_register_driver(0, &drvNfs, &nfsGlob.nfs_major)) { fprintf(stderr,"Registering NFS driver failed - %s\n", strerror(errno)); - return; + errno = ENOMEM; + return -1; } if (0==smallPoolDepth) @@ -1034,19 +1040,23 @@ rtems_status_code status; dummy.name = "somename"; /* guess average length of a filename */ dirres_entry_size = xdr_sizeof((xdrproc_t)xdr_entry, &dummy); - smallPool = rpcUdpXactPoolCreate( + nfsGlob.smallPool = rpcUdpXactPoolCreate( NFS_PROGRAM, NFS_VERSION_2, CONFIG_NFS_SMALL_XACT_SIZE, smallPoolDepth); - assert( smallPool ); + if (nfsGlob.smallPool == NULL) { + goto cleanup; + } - bigPool = rpcUdpXactPoolCreate( + nfsGlob.bigPool = rpcUdpXactPoolCreate( NFS_PROGRAM, NFS_VERSION_2, CONFIG_NFS_BIG_XACT_SIZE, bigPoolDepth); - assert( bigPool ); + if (nfsGlob.bigPool == NULL) { + goto cleanup; + } status = rtems_semaphore_create( rtems_build_name('N','F','S','l'), @@ -1054,14 +1064,19 @@ rtems_status_code status; MUTEX_ATTRIBUTES, 0, &nfsGlob.llock); - assert( status == RTEMS_SUCCESSFUL ); + if (status != RTEMS_SUCCESSFUL) { + goto cleanup; + } + status = rtems_semaphore_create( rtems_build_name('N','F','S','m'), 1, MUTEX_ATTRIBUTES, 0, &nfsGlob.lock); - assert( status == RTEMS_SUCCESSFUL ); + if (status != RTEMS_SUCCESSFUL) { + goto cleanup; + } if (sizeof(ino_t) < sizeof(u_int)) { fprintf(stderr, @@ -1070,6 +1085,15 @@ rtems_status_code status; "you should fix newlib's sys/stat.h - for now I'll enable a hack...\n"); } + + return 0; + +cleanup: + + nfsCleanup(); + initialised = 0; + + return -1; } /* Driver cleanup code @@ -1077,38 +1101,47 @@ rtems_status_code status; int nfsCleanup(void) { -rtems_id l; int refuse; - if (!nfsGlob.llock) { - /* registering the driver failed - let them still cleanup */ - return 0; + if (nfsGlob.llock != 0) { + LOCK(nfsGlob.llock); + if ( (refuse = nfsGlob.num_mounted_fs) ) { + fprintf(stderr,"Refuse to unload NFS; %i filesystems still mounted.\n", + refuse); + nfsMountsShow(stderr); + /* yes, printing is slow - but since you try to unload the driver, + * you assume nobody is using NFS, so what if they have to wait? + */ + UNLOCK(nfsGlob.llock); + return -1; + } } - LOCK(nfsGlob.llock); - if ( (refuse = nfsGlob.num_mounted_fs) ) { - fprintf(stderr,"Refuse to unload NFS; %i filesystems still mounted.\n", - refuse); - nfsMountsShow(stderr); - /* yes, printing is slow - but since you try to unload the driver, - * you assume nobody is using NFS, so what if they have to wait? - */ - UNLOCK(nfsGlob.llock); - return -1; + if (nfsGlob.lock != 0) { + rtems_semaphore_delete(nfsGlob.lock); + nfsGlob.lock = 0; } - rtems_semaphore_delete(nfsGlob.lock); - nfsGlob.lock = 0; + if (nfsGlob.smallPool != NULL) { + rpcUdpXactPoolDestroy(nfsGlob.smallPool); + nfsGlob.smallPool = NULL; + } + + if (nfsGlob.bigPool != NULL) { + rpcUdpXactPoolDestroy(nfsGlob.bigPool); + nfsGlob.bigPool = NULL; + } - /* hold the lock while cleaning up... */ + if (nfsGlob.nfs_major != 0xffffffff) { + rtems_io_unregister_driver(nfsGlob.nfs_major); + nfsGlob.nfs_major = 0xffffffff; + } - rpcUdpXactPoolDestroy(smallPool); - rpcUdpXactPoolDestroy(bigPool); - l = nfsGlob.llock; - rtems_io_unregister_driver(nfsGlob.nfs_major); + if (nfsGlob.llock != 0) { + rtems_semaphore_delete(nfsGlob.llock); + nfsGlob.llock = 0; + } - rtems_semaphore_delete(l); - nfsGlob.llock = 0; return 0; } @@ -1148,8 +1181,8 @@ int rval = -1; switch (proc) { case NFSPROC_SYMLINK: case NFSPROC_WRITE: - pool = bigPool; break; - default: pool = smallPool; break; + pool = nfsGlob.bigPool; break; + default: pool = nfsGlob.smallPool; break; } xact = rpcUdpXactPoolGet(pool, XactGetCreate); @@ -1313,7 +1346,7 @@ int len; } memcpy(&psa->sin_addr, h->h_addr, sizeof (struct in_addr)); - + /* END OF NON-THREAD SAFE REGION */ psa->sin_family = AF_INET; @@ -1770,13 +1803,16 @@ char *path = mt_entry->dev; fprintf (stderr, "error: initialising RPC\n"); return -1; } - - nfsInit(0, 0); + + if (nfsInit(0, 0) != 0) { + fprintf (stderr, "error: initialising NFS\n"); + return -1; + }; #if 0 printf("Trying to mount %s on %s\n",path,mntpoint); #endif - + if ( buildIpAddr(&uid, &gid, &host, &saddr, &path) ) return -1; diff --git a/cpukit/libfs/src/nfsclient/src/nfs.modini.c b/cpukit/libfs/src/nfsclient/src/nfs.modini.c index 22095cf53f..57adf23aa1 100644 --- a/cpukit/libfs/src/nfsclient/src/nfs.modini.c +++ b/cpukit/libfs/src/nfsclient/src/nfs.modini.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief NFS Module Initialize + * @ingroup libfs + */ + #if HAVE_CONFIG_H #include "config.h" #endif diff --git a/cpukit/libfs/src/nfsclient/src/nfsTest.c b/cpukit/libfs/src/nfsclient/src/nfsTest.c index 18bd0a3cb4..5b6951af58 100644 --- a/cpukit/libfs/src/nfsclient/src/nfsTest.c +++ b/cpukit/libfs/src/nfsclient/src/nfsTest.c @@ -1,8 +1,10 @@ -/* Test program for evaluating NFS read throughput */ - -/* Author: Till Straumann <strauman@slac.stanford.edu>, 2006 */ - -/* This test code allows for evaluating NFS read performance +/** + * @file + * + * @brief Test Program for Evaluating NFS Read Throughput + * @ingroup libfs + * + * This test code allows for evaluating NFS read performance * under various scenarios: * - synchronous reads with various buffer sizes (select * 'num_readers' == 0, see below). @@ -48,7 +50,12 @@ * performed at 'big block' boundaries (num_readers * chunk_size). */ + + + /* + * Author: Till Straumann <strauman@slac.stanford.edu>, 2006 + * * Authorship * ---------- * This software (NFS-2 client implementation for RTEMS) was created by diff --git a/cpukit/libfs/src/nfsclient/src/rpcio.c b/cpukit/libfs/src/nfsclient/src/rpcio.c index eeadd53f58..e1bc4c59ba 100644 --- a/cpukit/libfs/src/nfsclient/src/rpcio.c +++ b/cpukit/libfs/src/nfsclient/src/rpcio.c @@ -1,8 +1,10 @@ -/* RPC multiplexor for a multitasking environment */ - -/* Author: Till Straumann <strauman@slac.stanford.edu>, 2002 */ - -/* This code funnels arbitrary task's UDP/RPC requests +/** + * @file + * + * @brief RPC Multiplexor for a Multitasking Environment + * @ingroup libfs + * + * This code funnels arbitrary task's UDP/RPC requests * through one socket to arbitrary servers. * The replies are gathered and dispatched to the * requestors. @@ -15,6 +17,8 @@ */ /* + * Author: Till Straumann <strauman@slac.stanford.edu>, 2002 + * * Authorship * ---------- * This software (NFS-2 client implementation for RTEMS) was created by diff --git a/cpukit/libfs/src/nfsclient/src/rpcio.h b/cpukit/libfs/src/nfsclient/src/rpcio.h index 8078209610..02cd34ffe7 100644 --- a/cpukit/libfs/src/nfsclient/src/rpcio.h +++ b/cpukit/libfs/src/nfsclient/src/rpcio.h @@ -1,11 +1,14 @@ -#ifndef RPCIO_H -#define RPCIO_H - -/* A multihreaded RPC/UDP multiplexor */ - -/* Author: Till Straumann, <strauman@slac.stanford.edu>, 2002 */ +/** + * @file + * + * @brief A Multithreaded RPC/UDP Multiplexor + * + * @ingroup rtems-nfsclient + */ /* + * Author: Till Straumann, <strauman@slac.stanford.edu>, 2002 + * * Authorship * ---------- * This software (NFS-2 client implementation for RTEMS) was created by @@ -50,6 +53,16 @@ * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03 */ +#ifndef RPCIO_H +#define RPCIO_H + +/** + * @defgroup rtems-nfsclient RPC/UDP Multiplexor + * + * @ingroup nfsclient + * @{ + */ + #ifdef __rtems #include <rtems.h> #endif @@ -84,8 +97,9 @@ rpcUdpServerCreate( void rpcUdpServerDestroy(RpcUdpServer s); -/* Dump statistics to a file (stdout if NULL); - * returns 0 for convenience +/** + * @brief Dump statistics to a file (stdout if NULL); + * @retval 0 for convenience */ int rpcUdpStats(FILE *f); @@ -103,7 +117,9 @@ rpcUdpClntCreate( void RpcUdpClntDestroy(RpcUdpClnt clnt); -/* mute compiler warnings */ +/** + * @brief Mute compiler warnings. + */ typedef void *XdrProcT; typedef void *CaddrT; @@ -130,7 +146,9 @@ rpcUdpXactDestroy( RpcUdpXact xact ); -/* send a transaction */ +/** + * Send a transaction. + */ enum clnt_stat rpcUdpSend( RpcUdpXact xact, @@ -144,7 +162,9 @@ rpcUdpSend( ... /* 0 terminated xdrproc/pobj additional argument list */ ); -/* wait for a transaction to complete */ +/** + * @brief Wait for a transaction to complete. + */ enum clnt_stat rpcUdpRcv(RpcUdpXact xact); @@ -165,9 +185,11 @@ rpcUdpCallRp( ); -/* manage pools of transactions */ -/* A pool of transactions. The idea is not to malloc/free them +/* + * @brief Manage pools of transactions. + * + * A pool of transactions. The idea is not to malloc/free them * all the time but keep a limited number around in a 'pool'. * Users who need a XACT may get it from the pool and put it back * when done. @@ -205,4 +227,5 @@ rpcUdpXactPoolGet(RpcUdpXactPool pool, XactPoolGetMode mode); void rpcUdpXactPoolPut(RpcUdpXact xact); +/** @} */ #endif diff --git a/cpukit/libfs/src/nfsclient/src/rpcio.modini.c b/cpukit/libfs/src/nfsclient/src/rpcio.modini.c index 7aa802fe51..f0359974de 100644 --- a/cpukit/libfs/src/nfsclient/src/rpcio.modini.c +++ b/cpukit/libfs/src/nfsclient/src/rpcio.modini.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RPCIO Module Initialize + * @ingroup libfs + */ + #if HAVE_CONFIG_H #include "config.h" #endif diff --git a/cpukit/libfs/src/nfsclient/src/sock_mbuf.c b/cpukit/libfs/src/nfsclient/src/sock_mbuf.c index e07c63bcf2..3f07b757b5 100644 --- a/cpukit/libfs/src/nfsclient/src/sock_mbuf.c +++ b/cpukit/libfs/src/nfsclient/src/sock_mbuf.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief Sock Mbuf + * @ingroup libfs + */ + /* * NOTE: * This is derived from libnetworking/rtems/rtems_syscall.c @@ -9,70 +16,64 @@ * Till Straumann, <strauman@slac.stanford.edu> * Licensing: 'LICENSE.NET' file in the RTEMS top source directory * for more information. + * + * The RTEMS TCP/IP stack is a port of the FreeBSD TCP/IP stack. The following + * copyright and licensing information applies to this code. + * + * This code is found under the c/src/libnetworking directory but does not + * constitute the entire contents of that subdirectory. + * + * + * Copyright (c) 1980, 1983, 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgment: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. + + * Portions Copyright (c) 1993 by Digital Equipment Corporation. + + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies, and that + * the name of Digital Equipment Corporation not be used in advertising or + * publicity pertaining to distribution of the document or software without + * specific, written prior permission. + + * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT + * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. */ -/* -The RTEMS TCP/IP stack is a port of the FreeBSD TCP/IP stack. The following -copyright and licensing information applies to this code. - -This code is found under the c/src/libnetworking directory but does not -constitute the entire contents of that subdirectory. - -============================================================================= - -Copyright (c) 1980, 1983, 1988, 1993 - The Regents of the University of California. All rights reserved. - -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. All advertising materials mentioning features or use of this software - must display the following acknowledgment: - This product includes software developed by the University of - California, Berkeley and its contributors. -4. Neither the name of the University 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 REGENTS 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 REGENTS 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. - -- -Portions Copyright (c) 1993 by Digital Equipment Corporation. - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies, and that -the name of Digital Equipment Corporation not be used in advertising or -publicity pertaining to distribution of the document or software without -specific, written prior permission. - -THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL -WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT -CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL -DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR -PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS -ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -============================================================================= -*/ - #if HAVE_CONFIG_H #include "config.h" #endif diff --git a/cpukit/libfs/src/nfsclient/src/xdr_mbuf.c b/cpukit/libfs/src/nfsclient/src/xdr_mbuf.c index 3c73639750..0f71538419 100644 --- a/cpukit/libfs/src/nfsclient/src/xdr_mbuf.c +++ b/cpukit/libfs/src/nfsclient/src/xdr_mbuf.c @@ -1,8 +1,15 @@ -/* xdr_mbuf is derived from xdr_mem */ - -/* Author (mbuf specifica): Till Straumann <strauman@slac.stanford.edu>, 10/2002 */ +/** + * @file + * + * @brief XDR Implementation Using mbuf Buffers + * @ingroup libfs + * + * xdr_mbuf is derived from xdr_mem + */ /* + * Author (mbuf specifica): Till Straumann <strauman@slac.stanford.edu>, 10/2002 + * * Sun RPC is a product of Sun Microsystems, Inc. and is provided for * unrestricted use provided that this legend is included on all tape * media and as a part of the software program in whole or part. Users diff --git a/cpukit/libfs/src/pipe/pipe.h b/cpukit/libfs/src/pipe/pipe.h index 6ba3c5ef42..e9b9117f54 100644 --- a/cpukit/libfs/src/pipe/pipe.h +++ b/cpukit/libfs/src/pipe/pipe.h @@ -1,5 +1,7 @@ /** - * @file rtems/pipe.h + * @file + * + * @brief POSIX FIFO/pipe File System Support * * This include file defines the interface to the POSIX FIFO/pipe file system * support. @@ -18,16 +20,19 @@ #include <rtems/libio.h> +/** + * @defgroup FIFO_PIPE FIFO/Pipe File System Support + * + * @ingroup FileSystemTypesAndMount + * + * @brief Interface to the POSIX FIFO/Pipe File System + */ +/**@{*/ + #ifdef __cplusplus extern "C" { #endif -/** - * @defgroup FIFO_PIPE FIFO/pipe File System Support - * - * @brief Interface to the POSIX FIFO/pipe File System - */ - /* Control block to manage each pipe */ typedef struct pipe_control { char *Buffer; @@ -49,8 +54,8 @@ typedef struct pipe_control { } pipe_control_t; /** - * @brief Create an Anonymous Pipe - * + * @brief Create an anonymous pipe. + * * Called by pipe() to create an anonymous pipe. */ extern int pipe_create( @@ -58,8 +63,8 @@ extern int pipe_create( ); /** - * @brief Release a Pipe - * + * @brief Release a pipe. + * * Interface to file system close. * * *pipep points to pipe control structure. When the last user releases pipe, @@ -71,7 +76,7 @@ extern void pipe_release( ); /** - * @brief FIFO Open + * @brief File system open. * Interface to file system open. * * *pipep points to pipe control structure. If called with *pipep = NULL, @@ -84,8 +89,8 @@ extern int fifo_open( ); /** - * @brief Pipe Read - * + * @brief File system read. + * * Interface to file system read. */ extern ssize_t pipe_read( @@ -96,8 +101,8 @@ extern ssize_t pipe_read( ); /** - * @brief Pipe Write - * + * @brief File system write. + * * Interface to file system write. */ extern ssize_t pipe_write( @@ -108,8 +113,8 @@ extern ssize_t pipe_write( ); /** - * @brief Pipe IO Control - * + * @brief File system Input/Output control. + * * Interface to file system ioctl. */ extern int pipe_ioctl( @@ -119,6 +124,8 @@ extern int pipe_ioctl( rtems_libio_t *iop ); +/** @} */ + #ifdef __cplusplus } #endif diff --git a/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.c b/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.c index c14c69d1fe..c4050b2da8 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.c @@ -2,7 +2,7 @@ * @file * * @brief RTEMS File Systems Bitmap Routines - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * These functions manage bit maps. A bit map consists of the map of bit * allocated in a block and a search map where a bit represents 32 actual diff --git a/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.h b/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.h index 01d4f0f28c..b8ed9c8d54 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-bitmaps.h @@ -3,7 +3,7 @@ * * @brief RTEMS File Systems Bitmap Routines * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File Systems Bitmap Routines. * @@ -186,7 +186,8 @@ typedef struct rtems_rfs_bitmap_control_s * Create a bit mask with the specified number of bits up to an element's * size. The mask is aligned to bit 0 of the element. * - * @param size The number of bits in the mask. + * @param[in] size is the number of bits in the mask. + * * @return The mask of the argument size number of bits. */ rtems_rfs_bitmap_element rtems_rfs_bitmap_mask (unsigned int size); @@ -195,8 +196,9 @@ rtems_rfs_bitmap_element rtems_rfs_bitmap_mask (unsigned int size); * Create a bit mask section. A mask section is a mask that is not aligned to * an end of the element. * - * @param start The first bit of the mask numbered from 0. - * @param end The end bit of the mask numbered from 0. + * @param[in] start is the first bit of the mask numbered from 0. + * @param[in] end is the end bit of the mask numbered from 0. + * * @return Mask section as defined by the start and end arguments. */ rtems_rfs_bitmap_element rtems_rfs_bitmap_mask_section (unsigned int start, @@ -206,9 +208,11 @@ rtems_rfs_bitmap_element rtems_rfs_bitmap_mask_section (unsigned int start, * Set a bit in a map and if all the bits are set, set the search map bit as * well. * - * @param control The control for the map. - * @param bit The bit in the map to set. - * @return int The error number (errno). No error if 0. + * @param[in] control is the control for the map. + * @param[in] bit is the bit in the map to set. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_bitmap_map_set (rtems_rfs_bitmap_control* control, rtems_rfs_bitmap_bit bit); @@ -217,9 +221,11 @@ int rtems_rfs_bitmap_map_set (rtems_rfs_bitmap_control* control, * Clear a bit in a map and make sure the search map bit is clear so a search * will find this bit available. * - * @param control The control for the map. - * @param bit The bit in the map to clear. - * @return int The error number (errno). No error if 0. + * @param[in] control is the control for the map. + * @param[in] bit is the bit in the map to clear. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_bitmap_map_clear (rtems_rfs_bitmap_control* control, rtems_rfs_bitmap_bit bit); @@ -227,10 +233,12 @@ int rtems_rfs_bitmap_map_clear (rtems_rfs_bitmap_control* control, /** * Test a bit in the map. * - * @param control The bitmap control. - * @param bit The bit to test. - * @param state The state of the bit if no error is returned. - * @return int The error number (errno). No error if 0. + * @param[in] control is the bitmap control. + * @param[in] bit is the bit to test. + * @param[in] state is the state of the bit if no error is returned. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_bitmap_map_test (rtems_rfs_bitmap_control* control, @@ -240,31 +248,37 @@ rtems_rfs_bitmap_map_test (rtems_rfs_bitmap_control* control, /** * Set all bits in the bitmap and set the dirty bit. * - * @param control The bitmap control. - * @return int The error number (errno). No error if 0. + * @param[in] control is the bitmap control. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_bitmap_map_set_all (rtems_rfs_bitmap_control* control); /** * Clear all bits in the bitmap and set the dirty bit. * - * @param control The bitmap control. - * @return int The error number (errno). No error if 0. + * @param[in] control is the bitmap control. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_bitmap_map_clear_all (rtems_rfs_bitmap_control* control); /** * Find a free bit searching from the seed up and down until found. The search * is performing by moving up from the seed for the window distance then to - * search down from the seed for the window distance. This is repeated out from - * the seed for each window until a free bit is found. The search is performed - * by checking the search map to see if the map has a free bit. + * search down from the seed for the window distance. This is repeated out + * from the seed for each window until a free bit is found. The search is + * performed by checking the search map to see if the map has a free bit. + * + * @param[in] control is the map control. + * @param[in] seed is the bit to search out from. + * @param[out] allocate A bit was allocated. + * @param[out] bit will contain the bit found free if true is returned. * - * @param control The map control. - * @param seed The bit to search out from. - * @param allocate A bit was allocated. - * @param bit Returns the bit found free if true is returned. - * @return int The error number (errno). No error if 0. + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control, rtems_rfs_bitmap_bit seed, @@ -274,19 +288,24 @@ int rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control, /** * Create a search bit map from the actual bit map. * - * @param control The map control. - * @return int The error number (errno). No error if 0. + * @param[in] control is the map control. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_bitmap_create_search (rtems_rfs_bitmap_control* control); /** * Open a bitmap control with a map and search map. * - * @param control The map control. - * @param fs The file system data. - * @param buffer The buffer handle the map is stored in. - * @param size The number of bits in the map. - * @return int The error number (errno). No error if 0. + * @param[in] control is the map control. + * @param[in] fs is the file system data. + * @param[in] buffer is a pointer to the buffer handle the map is + * stored in. + * @param[in] size is the number of bits in the map. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_bitmap_open (rtems_rfs_bitmap_control* control, rtems_rfs_file_system* fs, @@ -297,8 +316,10 @@ int rtems_rfs_bitmap_open (rtems_rfs_bitmap_control* control, /** * Close a bitmap. * - * @param control The bit map control. - * @return int The error number (errno). No error if 0. + * @param[in] control is the bit map control. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_bitmap_close (rtems_rfs_bitmap_control* control); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-block-pos.h b/cpukit/libfs/src/rfs/rtems-rfs-block-pos.h index b0de7c1846..3a3aab6b97 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-block-pos.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-block-pos.h @@ -3,7 +3,7 @@ * * @brief RTEMS File Systems Block Position and Size Management * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File Systems Block Position and Size Management. * @@ -72,8 +72,8 @@ typedef struct rtems_rfs_block_pos_s /** * Copy a block position. * - * @param _lhs The left hand side. - * @param _rhs The right hand side. + * @param[in] _lhs is the left hand side. + * @param[in] _rhs is the right hand side. */ #define rtems_rfs_block_copy_bpos(_lhs, _rhs) \ do { (_lhs)->bno = (_rhs)->bno; \ @@ -83,7 +83,7 @@ typedef struct rtems_rfs_block_pos_s /** * Zero a block position. * - * @param bpos A pointer to the block position. + * @param[in] bpos is a pointer to the block position. */ static inline void rtems_rfs_block_set_bpos_zero (rtems_rfs_block_pos* bpos) @@ -96,9 +96,9 @@ rtems_rfs_block_set_bpos_zero (rtems_rfs_block_pos* bpos) /** * Given a position compute the block number and block offset. * - * @param fs The file system data. - * @param pos The position as an absolute offset from the start. - * @param bpos Pointer to the block position to fill in. + * @param[in] fs is the file system data. + * @param[in] pos is the position as an absolute offset from the start. + * @param[out] bpos is a pointer to the block position to fill in. */ void rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs, rtems_rfs_pos pos, @@ -107,9 +107,10 @@ void rtems_rfs_block_get_bpos (rtems_rfs_file_system* fs, /** * Given a block position compute the absolute offset. * - * @param fs The file system data. - * @param bpos Pointer to the block position to fill in. - * @return rtems_rfs_pos The absolute offset. + * @param[in] fs is the file system data. + * @param[out] bpos is a pointer to the block position to fill in. + * + * @retval offset The absolute offset. */ rtems_rfs_pos rtems_rfs_block_get_pos (rtems_rfs_file_system* fs, rtems_rfs_block_pos* bpos); @@ -118,9 +119,9 @@ rtems_rfs_pos rtems_rfs_block_get_pos (rtems_rfs_file_system* fs, * Add the relative position to the block position. The relative position is * signed. * - * @param fs The file system data. - * @param offset The relative offset add to the block position. - * @param bpos Pointer to the block position to fill in. + * @param[in] fs is the file system data. + * @param[in] offset is the relative offset add to the block position. + * @param[out] bpos is a pointer to the block position to fill in. */ static inline void rtems_rfs_block_add_pos (rtems_rfs_file_system* fs, @@ -156,8 +157,8 @@ typedef struct rtems_rfs_block_size_s /** * Copy a block size. * - * @param _lhs The left hand side. - * @param _rhs The right hand side. + * @param[in] _lhs is the left hand side. + * @param[in] _rhs is the right hand side. */ #define rtems_rfs_block_copy_size(_lhs, _rhs) \ do { (_lhs)->count = (_rhs)->count; \ @@ -202,7 +203,7 @@ typedef struct rtems_rfs_block_size_s /** * Zero a block size. * - * @param size A pointer to the block size. + * @param[in] size is a pointer to the block size. */ static inline void rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size) @@ -214,9 +215,9 @@ rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size) /** * Set the size given a position. * - * @param fs The file system data. - * @param pos The position as an absolute offset from the start. - * @param size Pointer to the block size to fill in. + * @param[in] fs is the file system data. + * @param[in] pos is the position as an absolute offset from the start. + * @param[out] size is a pointer to the block size to fill in. */ void rtems_rfs_block_get_block_size (rtems_rfs_file_system* fs, rtems_rfs_pos pos, @@ -230,9 +231,10 @@ void rtems_rfs_block_get_block_size (rtems_rfs_file_system* fs, * blocks is 1 and offset is 0 the size is the block size. If the block count * is 1 and size is 100 the size is 100. * - * @param fs The file system data. - * @param size The size in blocks and offset. - * @return rtems_rfs_pos The size in bytes. + * @param[in] fs is the file system data. + * @param[in] size The size in blocks and offset. + * + * @retval size The size in bytes. */ rtems_rfs_pos rtems_rfs_block_get_size (rtems_rfs_file_system* fs, rtems_rfs_block_size* size); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-block.c b/cpukit/libfs/src/rfs/rtems-rfs-block.c index 4ad73b2ee3..1c6329a10a 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-block.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-block.c @@ -2,7 +2,7 @@ * @file * * @brief RTEMS File Systems Block Routines - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * These functions manage blocks in the RFS file system. A block is an area of * the media and its size is set for a each specific media. The block size is diff --git a/cpukit/libfs/src/rfs/rtems-rfs-block.h b/cpukit/libfs/src/rfs/rtems-rfs-block.h index c93cb20b24..ee758bafb3 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-block.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-block.h @@ -3,7 +3,7 @@ * * @brief RTEMS File Systems Block Management * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File Systems Block Management. * @@ -30,9 +30,10 @@ /** * Get a block number in the media format and return it in the host format. * - * @param _h The buffer handle of the block. - * @param _b The block number index. - * @return uint32_t The block number. + * @param[in] _h is the buffer handle of the block. + * @param[in] _b is the block number index. + * + * @retval block The block number. */ #define rtems_rfs_block_get_number(_h, _b) \ ((rtems_rfs_block_no) \ @@ -42,10 +43,10 @@ /** * Set a block number in the media format given a number in the host format. * - * @param _h The buffer handle of the block. - * @param _b The block number index, ie the number of block number not the + * @param[in] _h is the buffer handle of the block. + * @param[in] _b is the block number index, ie the number of block number not the * buffer offset. - * @param _n The block number. + * @param[in] _n is the block number. */ #define rtems_rfs_block_set_number(_h, _b, _n) \ do { \ @@ -195,8 +196,8 @@ typedef struct rtems_rfs_block_map_s /** * Set the size offset for the map. The map is tagged as dirty. * - * @param map Pointer to the open map to set the offset in. - * @param offset The offset to set in the map's size. + * @param[in] map is a pointer to the open map to set the offset in. + * @param[in] offset is the offset to set in the map's size. */ static inline void rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map, @@ -209,8 +210,8 @@ rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map, /** * Set the map's size. The map is tagged as dirty. * - * @param map Pointer to the open map to set the offset in. - * @param size The size to set in the map's size. + * @param[in] map is a pointer to the open map to set the offset in. + * @param[in] size is the size to set in the map's size. */ static inline void rtems_rfs_block_map_set_size (rtems_rfs_block_map* map, @@ -224,10 +225,12 @@ rtems_rfs_block_map_set_size (rtems_rfs_block_map* map, * map. The buffer handles are opened. The block position is set to the start * so a seek of offset 0 will return the first block. * - * @param fs The file system data. - * @param inode The inode the map belongs to. - * @param map The map that is opened. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] inode is a pointer to the inode the map belongs to. + * @param[in] map is a pointer to the map that is opened. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_block_map_open (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* inode, @@ -237,9 +240,11 @@ int rtems_rfs_block_map_open (rtems_rfs_file_system* fs, * Close the map. The buffer handles are closed and any help buffers are * released. * - * @param fs The file system data. - * @param map The map that is opened. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] map is a pointer to the map that is opened. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_block_map_close (rtems_rfs_file_system* fs, rtems_rfs_block_map* map); @@ -247,11 +252,13 @@ int rtems_rfs_block_map_close (rtems_rfs_file_system* fs, /** * Find a block number in the map from the position provided. * - * @param fs The file system data. - * @param map The map to search. - * @param bpos The block position to find. - * @param block Pointer to place the block in when found. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] map is a pointer to the map to search. + * @param[in] bpos is a pointer to the block position to find. + * @param[out] block will contain the block in when found. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_block_map_find (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, @@ -261,12 +268,14 @@ int rtems_rfs_block_map_find (rtems_rfs_file_system* fs, /** * Seek around the map. * - * @param fs The file system data. - * @param map The map to search. - * @param offset The distance to seek. It is signed. - * @param block Pointer to place the block in when found. + * @param[in] fs is the file system data. + * @param[in] map is a pointer to the map to search. + * @param[in] offset is the distance to seek. It is signed. + * @param[out] block will contain the block in when found. + * + * @retval 0 Successful operation. * @retval ENXIO Failed to seek because it is outside the block map. - * @return int The error number (errno). No error if 0. + * @retval error_code An error occurred. */ int rtems_rfs_block_map_seek (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, @@ -276,11 +285,13 @@ int rtems_rfs_block_map_seek (rtems_rfs_file_system* fs, /** * Seek to the next block. * - * @param fs The file system data. - * @param map The map to search. - * @param block Pointer to place the block in when found. + * @param[in] fs is the file system data. + * @param[in] map is a pointer to the map to search. + * @param[out] block will contain the block in when found. + * + * @retval 0 Successful operation. * @retval ENXIO Failed to seek because it is outside the block map. - * @return int The error number (errno). No error if 0. + * @retval error_code An error occurred. */ int rtems_rfs_block_map_next_block (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, @@ -289,11 +300,14 @@ int rtems_rfs_block_map_next_block (rtems_rfs_file_system* fs, /** * Grow the block map by the specified number of blocks. * - * @param fs The file system data. - * @param map Pointer to the open map to grow. - * @param blocks The number of blocks to grow the map by. - * @param new_block The first of the blocks allocated to the map. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] map is a pointer to the open map to grow. + * @param[in] blocks is the number of blocks to grow the map by. + * @param[out] new_block will contain first of the blocks allocated + * to the map. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_block_map_grow (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, @@ -303,11 +317,13 @@ int rtems_rfs_block_map_grow (rtems_rfs_file_system* fs, /** * Grow the block map by the specified number of blocks. * - * @param fs The file system data. - * @param map Pointer to the open map to shrink. - * @param blocks The number of blocks to shrink the map by. If more than the - * number of blocks the map is emptied. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] map is a pointer to the open map to shrink. + * @param[in] blocks is the number of blocks to shrink the map by. If more + * than the number of blocks the map is emptied. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, @@ -316,9 +332,11 @@ int rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs, /** * Free all blocks in the map. * - * @param fs The file system data. - * @param map Pointer to the open map to free all blocks from. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] map is a pointer to the open map to free all blocks from. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_block_map_free_all (rtems_rfs_file_system* fs, rtems_rfs_block_map* map); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-buffer-bdbuf.c b/cpukit/libfs/src/rfs/rtems-rfs-buffer-bdbuf.c index ef382aeecc..57e0664046 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-buffer-bdbuf.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-buffer-bdbuf.c @@ -1,19 +1,21 @@ -/* - * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - */ /** * @file * - * @ingroup rtems-rfs + * @brief RTEMS File Systems Buffer Routines + * @ingroup rtems_rfs * * RTEMS File Systems Buffer Routines for the RTEMS libblock BD buffer cache. * */ +/* + * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + #if HAVE_CONFIG_H #include "config.h" #endif diff --git a/cpukit/libfs/src/rfs/rtems-rfs-buffer-devio.c b/cpukit/libfs/src/rfs/rtems-rfs-buffer-devio.c index a855b8f846..2911ca9c9c 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-buffer-devio.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-buffer-devio.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS File Systems Buffer Routines + * @ingroup rtems_rfs + */ + /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,14 +12,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File Systems Buffer Routines. - * - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-buffer.c b/cpukit/libfs/src/rfs/rtems-rfs-buffer.c index 5ab86177b3..7904f74297 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-buffer.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-buffer.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS File Systems Buffer Routines + * @ingroup rtems_rfs + */ + /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,14 +12,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File Systems Buffer Routines. - * - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-buffer.h b/cpukit/libfs/src/rfs/rtems-rfs-buffer.h index c6b1f05c53..40b5891a2f 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-buffer.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-buffer.h @@ -1,7 +1,7 @@ /** * @file * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * @brief Maps Blocks to the Media Interface Layers * @@ -159,14 +159,16 @@ typedef struct rtems_rfs_buffer_handle_t #define rtems_rfs_buffer_refs_down(_h) ((_h)->buffer->references -= 1) /** - * Request a buffer. The buffer can be filled with data from the media (read == - * true) or you can request a buffer to fill with data. + * Request a buffer. The buffer can be filled with data from the media + * (read == true) or you can request a buffer to fill with data. * - * @param fs The file system data. - * @param handle The handle the requested buffer is attached to. - * @param block The block number. - * @param read Read the data from the disk. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] handle is the handle the requested buffer is attached to. + * @param[in] block is the block number. + * @param[in] read Read the data from the disk. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_buffer_handle_request (rtems_rfs_file_system* fs, rtems_rfs_buffer_handle* handle, @@ -178,9 +180,11 @@ int rtems_rfs_buffer_handle_request (rtems_rfs_file_system* fs, * result does not indicate if the data was successfully written to the disk as * this operation may be performed in asynchronously to this release. * - * @param fs The file system data. - * @param handle The handle the requested buffer is attached to. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] handle is the handle the requested buffer is attached to. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs, rtems_rfs_buffer_handle* handle); @@ -188,9 +192,11 @@ int rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs, /** * Open a handle. * - * @param fs The file system data. - * @param handle The buffer handle to open. - * @return int The error number (errno). No error if 0. + * @param[in] fs i the file system data. + * @param[in] handle i the buffer handle to open. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ static inline int rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs, @@ -205,9 +211,11 @@ rtems_rfs_buffer_handle_open (rtems_rfs_file_system* fs, /** * Close a handle. * - * @param fs The file system data. - * @param handle The buffer handle to close. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] handle is the buffer handle to close. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ static inline int rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs, @@ -223,42 +231,52 @@ rtems_rfs_buffer_handle_close (rtems_rfs_file_system* fs, /** * Open the buffer interface. * - * @param name The device name to the media. - * @param fs Pointer to the file system data. - * @return int The error number (errno). No error if 0. + * @param[in] name is a pointer to the device name to the media. + * @param[in] fs is the file system data. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_buffer_open (const char* name, rtems_rfs_file_system* fs); /** * Close the buffer interface. * - * @param fs Pointer to the file system data. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_buffer_close (rtems_rfs_file_system* fs); /** * Sync all buffers to the media. * - * @param fs Pointer to the file system data. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_buffer_sync (rtems_rfs_file_system* fs); /** * Set the block size of the device. * - * @param fs Pointer to the file system data. - * @param size The new block size. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] size is the new block size. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_buffer_setblksize (rtems_rfs_file_system* fs, size_t size); /** * Release any chained buffers. * - * @param fs The file system data. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_buffers_release (rtems_rfs_file_system* fs); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-data.h b/cpukit/libfs/src/rfs/rtems-rfs-data.h index 0e20423adc..954f4bc697 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-data.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-data.h @@ -3,7 +3,7 @@ * * @brief RTEMS File System Data * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File System Data. * diff --git a/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.c b/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.c index db8f21a8b0..a0669992d3 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.c @@ -2,7 +2,7 @@ * @file * * @brief RTEMS File Systems Directory Hash function - * @ingroup rtems-rfs + * @ingroup rtems_rfs */ #if HAVE_CONFIG_H diff --git a/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.h b/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.h index f7908d8716..0b2d7a40b6 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-dir-hash.h @@ -3,7 +3,7 @@ * * @brief Provides a 32bit Hash of a String used to Search a Directory * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File Systems Directory Hash provides a 32bit hash of a string. This is * used to search a directory. @@ -26,9 +26,10 @@ /** * Compute a hash of the key over the length of string. * - * @param key The key to calculate the hash of. - * @param length The length of the key in bytes. - * @return uint32_t The hash. + * @param[in] key is a pointer to the key to calculate the hash of. + * @param[in] length is the length of the key in bytes. + * + * @retval hash The computed uint32_t hash. */ uint32_t rtems_rfs_dir_hash (const void *key, size_t length); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-dir.c b/cpukit/libfs/src/rfs/rtems-rfs-dir.c index 677bdc8571..d52bf24159 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-dir.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-dir.c @@ -1,16 +1,8 @@ -/* - * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - */ /** * @file * - * @ingroup rtems-rfs - * - * RTEMS File Systems Directory Routines. + * @brief RTEMS File Systems Directory Routines + * @ingroup rtems_rfs * * These functions manage blocks in the directory format. A directory entry is * a variable length record in the block. The entry consists of a length, hash @@ -23,6 +15,14 @@ * superblock. */ +/* + * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + #if HAVE_CONFIG_H #include "config.h" #endif diff --git a/cpukit/libfs/src/rfs/rtems-rfs-dir.h b/cpukit/libfs/src/rfs/rtems-rfs-dir.h index 50c89eccc5..91ea713710 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-dir.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-dir.h @@ -3,7 +3,7 @@ * * @brief RTEMS File System Directory Support * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File System Directory Support * @@ -55,8 +55,9 @@ /** * Return the hash of the entry. * - * @param _e Pointer to the directory entry. - * @return uint32_t The hash. + * @param[in] _e is a pointer to the directory entry. + * + * @retval hash The uint32_t hash of the entry. */ #define rtems_rfs_dir_entry_hash(_e) \ rtems_rfs_read_u32 (_e + RTEMS_RFS_DIR_ENTRY_HASH) @@ -64,8 +65,9 @@ /** * Set the hash of the entry. * - * @param _e Pointer to the directory entry. - * @param _h The hash. + * @param[in] _e is a pointer to the directory entry. + * + * @param[in] _h is the hash of the entry. */ #define rtems_rfs_dir_set_entry_hash(_e, _h) \ rtems_rfs_write_u32 (_e + RTEMS_RFS_DIR_ENTRY_HASH, _h) @@ -73,8 +75,9 @@ /** * Return the ino of the entry. * - * @param _e Pointer to the directory entry. - * @return uint32_t The ino. + * @param[in] _e is a pointer to the directory entry. + * + * @retval ino The ino of the entry. */ #define rtems_rfs_dir_entry_ino(_e) \ rtems_rfs_read_u32 (_e + RTEMS_RFS_DIR_ENTRY_INO) @@ -82,8 +85,9 @@ /** * Set the ino of the entry. * - * @param _e Pointer to the directory entry. - * @param _i The ino. + * @param[in] _e is a pointer to the directory entry. + * + * @param[in] _i is the ino of the entry. */ #define rtems_rfs_dir_set_entry_ino(_e, _i) \ rtems_rfs_write_u32 (_e + RTEMS_RFS_DIR_ENTRY_INO, _i) @@ -91,8 +95,9 @@ /** * Return the length of the entry. * - * @param _e Pointer to the directory entry. - * @return uint16_t The length. + * @param[in] _e Pointer to the directory entry. + * + * @retval length The length of the entry. */ #define rtems_rfs_dir_entry_length(_e) \ rtems_rfs_read_u16 (_e + RTEMS_RFS_DIR_ENTRY_LEN) @@ -100,8 +105,8 @@ /** * Set the length of the entry. * - * @param _e Pointer to the directory entry. - * @param _l The length. + * @param[in] _e is a pointer to the directory entry. + * @param[in] _l is the length. */ #define rtems_rfs_dir_set_entry_length(_e, _l) \ rtems_rfs_write_u16 (_e + RTEMS_RFS_DIR_ENTRY_LEN, _l) @@ -110,13 +115,17 @@ * Look up a directory entry in the directory pointed to by the inode. The look * up is local to this directory. No need to decend. * - * @param fs The file system. - * @param inode The inode of the directory to search. - * @param name The name to look up. The name may not be nul terminated. - * @param length The length of the name. - * @param ino The return inode number if there is no error. - * @param offset The offset in the directory for the entry. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system. + * @param[in] inode is a pointer to the inode of the directory to search. + * @param[in] name is a pointer to the name to look up. The name may not be + * nul terminated. + * @param[in] length is the length of the name. + * @param[out] ino will be filled in with the inode number + * if there is no error. + * @param[in] offset is the offset in the directory for the entry. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_dir_lookup_ino (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* inode, @@ -129,12 +138,15 @@ int rtems_rfs_dir_lookup_ino (rtems_rfs_file_system* fs, * Add an entry to the directory returing the inode number allocated to the * entry. * - * @param fs The file system data. - * @param dir Pointer to the directory inode the entry is to be added too. - * @param name The name of the entry to be added. - * @param length The length of the name excluding a terminating 0. - * @param ino The ino of the entry. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] dir is a pointer to the directory inode the + * entry is to be added too. + * @param[in] name is a pointer to the name of the entry to be added. + * @param[in] length is the length of the name excluding a terminating 0. + * @param[in] ino is the ino of the entry. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, @@ -145,12 +157,15 @@ int rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs, /** * Del an entry from the directory using an inode number as a key. * - * @param fs The file system data. - * @param dir Pointer to the directory inode the entry is to be deleted from. - * @param ino The ino of the entry. - * @param offset The offset in the directory of the entry to delete. If 0 - * search from the start for the ino. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] dir is a pointer to the directory inode the + * entry is to be deleted from. + * @param[in] ino is the ino of the entry. + * @param[in] offset is the offset in the directory of the entry + * to delete. If 0 search from the start for the ino. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, @@ -161,12 +176,16 @@ int rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs, * Read the directory entry from offset into the directory entry buffer and * return the length of space this entry uses in the directory table. * - * @param fs The file system data. - * @param dir The direct inode handler. - * @param offset The offset in the directory to read from. - * @param dirent Pointer to the dirent structure the entry is written into. - * @param length Set the length this entry takes in the directory. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] dir is a pointer to the direct inode handler. + * @param[in] offset is the offset in the directory to read from. + * @param[in] dirent is a ointer to the dirent structure the entry + * is written into. + * @param[out] length will contain the length this entry + * takes in the directory. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_dir_read (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, @@ -178,9 +197,11 @@ int rtems_rfs_dir_read (rtems_rfs_file_system* fs, * Check if the directory is empty. The current and parent directory entries * are ignored. * - * @param fs The file system data - * @param dir The directory inode to check. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data + * @param[in] dir is a pointer to the directory inode to check. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_dir_empty (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-file-system-fwd.h b/cpukit/libfs/src/rfs/rtems-rfs-file-system-fwd.h index ae45acf55e..8010c40a16 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-file-system-fwd.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-file-system-fwd.h @@ -1,9 +1,9 @@ /** * @file * - * @brief RTEMS File Systems Data forward decl + * @brief RTEMS File Systems Data Forward Declaration * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File Systems Data forward decl. */ diff --git a/cpukit/libfs/src/rfs/rtems-rfs-file-system.c b/cpukit/libfs/src/rfs/rtems-rfs-file-system.c index bceb08d5df..5ab671bcc2 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-file-system.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-file-system.c @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief RTEMS File Systems Open + * @ingroup rtems_rfs + * + * Open the file system by reading the superblock and then the group data. + */ /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,15 +13,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File Systems Open - * - * Open the file system by reading the superblock and then the group data. - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-file-system.h b/cpukit/libfs/src/rfs/rtems-rfs-file-system.h index c1f3dd7465..7c80aed5da 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-file-system.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-file-system.h @@ -3,7 +3,7 @@ * * @brief RTEMS File System Data * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File System Data * @@ -50,8 +50,8 @@ #define RTEMS_RFS_VERSION_MASK INT32_C(0x00000000) /** - * The root inode number. Do not use 0 as this has special meaning in some Unix - * operating systems. + * The root inode number. Do not use 0 as this has special meaning in some + * Unix operating systems. */ #define RTEMS_RFS_ROOT_INO (1) @@ -61,8 +61,8 @@ #define RTEMS_RFS_EMPTY_INO (0) /** - * The number of blocks in the inode. This number effects the size of the inode - * and that effects the overhead of the inode tables in a group. + * The number of blocks in the inode. This number effects the size of the + * inode and that effects the overhead of the inode tables in a group. */ #define RTEMS_RFS_INODE_BLOCKS (5) @@ -262,27 +262,27 @@ struct _rtems_rfs_file_system /** * Return the flags. * - * @param _fs Pointer to the file system. + * @param[in] _fs is a pointer to the file system. */ #define rtems_rfs_fs_flags(_f) ((_f)->flags) /** * Should bitmap buffers be released when finished ? * - * @param _fs Pointer to the file system. + * @param[in] _fs is a pointer to the file system. */ #define rtems_rfs_fs_release_bitmaps(_f) (!((_f)->flags & RTEMS_RFS_FS_BITMAPS_HOLD)) /** * Are the buffers locally cache or released back to the buffering layer ? * - * @param _fs Pointer to the file system. + * @param[in] _fs is a pointer to the file system. */ #define rtems_rfs_fs_no_local_cache(_f) ((_f)->flags & RTEMS_RFS_FS_NO_LOCAL_CACHE) /** * The disk device number. * - * @param _fs Pointer to the file system. + * @param[in] _fs is a pointer to the file system. */ #if RTEMS_RFS_USE_LIBBLOCK #define rtems_rfs_fs_device(_fs) ((_fs)->disk) @@ -293,21 +293,21 @@ struct _rtems_rfs_file_system /** * The size of the disk in blocks. * - * @param _fs Pointer to the file system. + * @param[in] _fs is a pointer to the file system. */ #define rtems_rfs_fs_blocks(_fs) ((_fs)->blocks) /** * The block size. * - * @param _fs Pointer to the file system. + * @param[in] _fs is a pointer to the file system. */ #define rtems_rfs_fs_block_size(_fs) ((_fs)->block_size) /** * The number of inodes. * - * @param _fs Pointer to the file system. + * @param[in] _fs is a pointer to the file system. */ #define rtems_rfs_fs_inodes(_fs) ((_fs)->inodes) @@ -315,9 +315,9 @@ struct _rtems_rfs_file_system * Calculate a block in the file system given the group and the block within * the group. * - * @param _fs Pointer to the file system. - * @param _grp The group. - * @param _blk The block within the group. + * @param[in] _fs is a pointer to the file system. + * @param[in] _grp is the group. + * @param[in] _blk is the block within the group. * @return The absolute block number. */ #define rtems_rfs_fs_block(_fs, _grp, _blk) \ @@ -326,7 +326,7 @@ struct _rtems_rfs_file_system /** * The media size of the disk in media size blocks. * - * @param _fs Pointer to the file system. + * @param[in] _fs is a pointer to the file system. */ #if RTEMS_RFS_USE_LIBBLOCK #define rtems_rfs_fs_media_blocks(_fs) ((_fs)->disk->size) @@ -338,7 +338,7 @@ struct _rtems_rfs_file_system * The media block size. This is the size of a block on disk. For a device I/O * this value is 1. * - * @param _fs Pointer to the file system. + * @param[in] _fs is a pointer to the file system. */ #if RTEMS_RFS_USE_LIBBLOCK #define rtems_rfs_fs_media_block_size(_fs) ((_fs)->disk->media_block_size) @@ -366,7 +366,7 @@ struct _rtems_rfs_file_system /** * Return the size of the disk in bytes. * - * @param fs Pointer to the file system. + * @param[in] fs is a pointer to the file system. * @return uint64_t The size of the disk in bytes. */ uint64_t rtems_rfs_fs_size(rtems_rfs_file_system* fs); @@ -374,7 +374,7 @@ uint64_t rtems_rfs_fs_size(rtems_rfs_file_system* fs); /** * The size of the disk in bytes calculated from the media parameters.. * - * @param fs Pointer to the file system. + * @param[in] fs is a pointer to the file system. * @return uint64_t The size of the disk in bytes. */ uint64_t rtems_rfs_fs_media_size (rtems_rfs_file_system* fs); @@ -382,12 +382,14 @@ uint64_t rtems_rfs_fs_media_size (rtems_rfs_file_system* fs); /** * Open the file system given a file path. * - * @param name The device to open. - * @param fs The file system data filled in by this call. - * @param user A pointer to user data. - * @param flags The initial set of user flags for the file system. - * @param max_held_buffers The maximum number of buffers the RFS holds. - * @return int The error number (errno). No error if 0. + * @param[in] name is a pointer to the device to open. + * @param[in] fs is the file system data filled in by this call. + * @param[in] user is a pointer to the user data. + * @param[in] flags is a initial set of user flags for the file system. + * @param[in] max_held_buffers is the maximum number of buffers the RFS holds. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_fs_open (const char* name, void* user, @@ -398,8 +400,10 @@ int rtems_rfs_fs_open (const char* name, /** * Close the file system. * - * @param fs The file system data. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_fs_close (rtems_rfs_file_system* fs); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-file.c b/cpukit/libfs/src/rfs/rtems-rfs-file.c index 0cf38c628d..5d623dda26 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-file.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-file.c @@ -1,3 +1,12 @@ +/** + * @file + * + * @brief RTEMS File Systems File Routines + * @ingroup rtems_rfs + * + * These functions manage files. + */ + /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,15 +14,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File Systems File Routines. - * - * These functions manage files. - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-file.h b/cpukit/libfs/src/rfs/rtems-rfs-file.h index f39f02a985..efafb88e56 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-file.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-file.h @@ -3,7 +3,7 @@ * * @brief RTEMS File System File Support * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File System File Support * @@ -89,8 +89,9 @@ typedef struct _rtems_rfs_file_shared /** * Get the atime. * - * @param shared The shared file data. - * @return rtems_rfs_time The atime. + * @param[in] shared is a pointer to the shared file data. + * + * @retval atime The atime. */ static inline rtems_rfs_time rtems_rfs_file_shared_get_atime (rtems_rfs_file_shared* shared) @@ -101,8 +102,9 @@ rtems_rfs_file_shared_get_atime (rtems_rfs_file_shared* shared) /** * Get the mtime. * - * @param shared The shared file data. - * @return rtems_rfs_time The mtime. + * @param[in] shared is a pointer to the shared file data. + * + * @retval mtime The mtime. */ static inline rtems_rfs_time rtems_rfs_file_shared_get_mtime (rtems_rfs_file_shared* shared) @@ -113,8 +115,9 @@ rtems_rfs_file_shared_get_mtime (rtems_rfs_file_shared* shared) /** * Get the ctime. * - * @param shared The shared file data. - * @return rtems_rfs_time The ctime. + * @param[in] shared is a pointer to the shared file data. + * + * @retval ctime The ctime. */ static inline rtems_rfs_time rtems_rfs_file_shared_get_ctime (rtems_rfs_file_shared* shared) @@ -125,8 +128,9 @@ rtems_rfs_file_shared_get_ctime (rtems_rfs_file_shared* shared) /** * Get the block count. * - * @param shared The shared file data. - * @return uint32_t The block count. + * @param[in] shared is a pointer to the shared file data. + * + * @retval count The block count. */ static inline uint32_t rtems_rfs_file_shared_get_block_count (rtems_rfs_file_shared* shared) @@ -137,8 +141,9 @@ rtems_rfs_file_shared_get_block_count (rtems_rfs_file_shared* shared) /** * Get the block offset. * - * @param shared The shared file data. - * @return uint16_t The block offset. + * @param shared is a pointer to the shared file data. + * + * @retval offset The block offset. */ static inline uint16_t rtems_rfs_file_shared_get_block_offset (rtems_rfs_file_shared* shared) @@ -149,9 +154,10 @@ rtems_rfs_file_shared_get_block_offset (rtems_rfs_file_shared* shared) /** * Calculate the size of data. * - * @param fs The file system data. - * @oaram shared The shared file data. - * @return rtems_rfs_pos The data size in bytes. + * @param[in] fs is the file system data. + * @param[in] shared is a pointer to the shared file data. + * + * @retval data The data size in bytes. */ static inline rtems_rfs_pos rtems_rfs_file_shared_get_size (rtems_rfs_file_system* fs, @@ -292,10 +298,12 @@ typedef struct _rtems_rfs_file_handle /** * Open a file handle. * - * @param fs The file system. - * @param ino The inode number of the file to be opened. - * @param handle Return the handle pointer in this handle. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system. + * @param[in] ino is the inode number of the file to be opened. + * @param[out] handle will be filled in with the handle pointer. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_file_open (rtems_rfs_file_system* fs, rtems_rfs_ino ino, @@ -305,9 +313,11 @@ int rtems_rfs_file_open (rtems_rfs_file_system* fs, /** * Close an open file handle. * - * @param fs The file system. - * @param handle The open file handle. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system. + * @param[in] handle is the open file handle. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_file_close (rtems_rfs_file_system* fs, rtems_rfs_file_handle* handle); @@ -321,10 +331,12 @@ int rtems_rfs_file_close (rtems_rfs_file_system* fs, * I/O past the end of a block so the call returns the amount of data * available. * - * @param handle The file handle. - * @param available The amount of data available for I/O. - * @param read The I/O operation is a read so the block is read from the media. - * @return int The error number (errno). No error if 0. + * @param[in] handle is the file handle. + * @param[in] available is the amount of data available for I/O. + * @param[in] read is the I/O operation is a read so the block is read from the media. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_file_io_start (rtems_rfs_file_handle* handle, size_t* available, @@ -337,10 +349,12 @@ int rtems_rfs_file_io_start (rtems_rfs_file_handle* handle, * * If the file's position is updated by the size amount. * - * @param handle The file handle. - * @param size The amount of data read or written. - * @param read The I/O was a read if true else it was a write. - * @return int The error number (errno). No error if 0. + * @param[in] handle is the file handle. + * @param[in] size is the amount of data read or written. + * @param[in] read is the I/O was a read if true else it was a write. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_file_io_end (rtems_rfs_file_handle* handle, size_t size, @@ -351,8 +365,10 @@ int rtems_rfs_file_io_end (rtems_rfs_file_handle* handle, * buffer and the buffer was not already released as modified the data will be * lost. * - * @param handle The file handle. - * @return int The error number (errno). No error if 0. + * @param[in] handle is the file handle. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_file_io_release (rtems_rfs_file_handle* handle); @@ -360,10 +376,12 @@ int rtems_rfs_file_io_release (rtems_rfs_file_handle* handle); * The file to the position returning the old position. The position is * abolute. * - * @param handle The file handle. - * @param pos The position to seek to. - * @param new_pos The actual position. - * @return int The error number (errno). No error if 0. + * @param[in] handle The file handle. + * @param[in] pos is the position to seek to. + * @param[out] new_pos will contain the actual position. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_file_seek (rtems_rfs_file_handle* handle, rtems_rfs_pos pos, @@ -373,9 +391,10 @@ int rtems_rfs_file_seek (rtems_rfs_file_handle* handle, * Set the size of the file to the new size. This can extend the file to a new * size. * - * @param handle The file handle. - * @param size The new size of the file. - * @return int The error number (errno). No error if 0. + * @param[in] handle is the file handle. + * @param[in] size is the new size of the file. + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_file_set_size (rtems_rfs_file_handle* handle, rtems_rfs_pos size); @@ -383,9 +402,12 @@ int rtems_rfs_file_set_size (rtems_rfs_file_handle* handle, /** * Return the shared file data for an ino. * - * @param fs The file system data. - * @param ino The inode number to locate the data for. + * @param[in] fs is the file system data. + * @param[in] ino is the inode number to locate the data for. * @return rtems_rfs_file_shared* The shared data or NULL is not located. + * + * @retval shared The shared data. + * @retval NULL No shared file data is located. */ rtems_rfs_file_shared* rtems_rfs_file_get_shared (rtems_rfs_file_system* fs, rtems_rfs_ino ino); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-format.c b/cpukit/libfs/src/rfs/rtems-rfs-format.c index 6c20218531..d445e3d7f1 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-format.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-format.c @@ -1,3 +1,12 @@ +/** + * @file + * + * @brief RTEMS File Systems Format + * @ingroup rtems_rfs + * + * Format the file system ready for use. + */ + /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,15 +14,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File Systems Format - * - * Format the file system ready for use. - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-format.h b/cpukit/libfs/src/rfs/rtems-rfs-format.h index b9774264f7..dd2b08d2a2 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-format.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-format.h @@ -1,20 +1,21 @@ -/* - * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - */ /** * @file * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * - * RTEMS File System Format. + * @brief RTEMS File System Format * * This function lets you format a disk in the RFS format. */ +/* + * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + #if !defined (_RTEMS_RFS_FORMAT_H_) #define _RTEMS_RFS_FORMAT_H_ @@ -74,8 +75,9 @@ typedef struct _rtems_rfs_format_config /** * RFS Format command. * - * @param name The device name to format. - * @param config Pointer to a configuration table. + * @param[in] name is the device name to format. + * @param[in] config is a pointer to the configuration table. + * * @retval -1 Error. See errno. * @retval 0 No error. Format successful. */ diff --git a/cpukit/libfs/src/rfs/rtems-rfs-group.c b/cpukit/libfs/src/rfs/rtems-rfs-group.c index 0edf83d838..1722c76cfc 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-group.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-group.c @@ -1,21 +1,22 @@ -/* - * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - */ /** * @file * - * @ingroup rtems-rfs - * - * RTEMS File Systems Group Routines. + * @brief RTEMS File Systems Group Routines + * @ingroup rtems_rfs * * These functions open and close a group as well as manage bit allocations * within a group. */ +/* + * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + + #if HAVE_CONFIG_H #include "config.h" #endif diff --git a/cpukit/libfs/src/rfs/rtems-rfs-group.h b/cpukit/libfs/src/rfs/rtems-rfs-group.h index 257eb49f34..595a3c0886 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-group.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-group.h @@ -3,7 +3,7 @@ * * @brief RTEMS File Systems Group Management * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File Systems Group Management. * @@ -22,6 +22,13 @@ #if !defined (_RTEMS_RFS_GROUP_H_) #define _RTEMS_RFS_GROUP_H_ +/** + * @ingroup rtems_rfs + * + * RTEMS File System Group Management + */ +/**@{*/ + #include <rtems/rfs/rtems-rfs-trace.h> #include <rtems/rfs/rtems-rfs-bitmaps.h> #include <rtems/rfs/rtems-rfs-buffer.h> @@ -34,6 +41,8 @@ #define RTEMS_RFS_GROUP_INODE_BLOCK (2) /** + * @brief Creates bit allocator for blocks in the group simpler. + * * A group is a selection of blocks on the disk. Typically the number of blocks * in a group is determined by the number of bits a block holds. This makes the * bit allocator for blocks in the group simpler plus is allows a simple way to @@ -85,13 +94,15 @@ typedef struct _rtems_rfs_group (((_f)->group_inodes * (_g)) + (_i) + RTEMS_RFS_ROOT_INO) /** - * Open a group. Allocate all the resources including the bitmaps. + * @brief Open a group. + * + * Allocate all the resources including the bitmaps. * * @param fs The file system. * @param base The base block number. * @param size The number of blocks in the group. * @param group Reference to the group to open. - * @return int The error number (errno). No error if 0. + * @retval int The error number (errno). No error if 0. */ int rtems_rfs_group_open (rtems_rfs_file_system* fs, rtems_rfs_buffer_block base, @@ -100,24 +111,28 @@ int rtems_rfs_group_open (rtems_rfs_file_system* fs, rtems_rfs_group* group); /** - * Close a group. Release all resources the group holds. + * @brief Close a group. + * + * Release all resources the group holds. * * @param fs The file system. * @param group The group to close. - * @return int The error number (errno). No error if 0. + * @retval int The error number (errno). No error if 0. */ int rtems_rfs_group_close (rtems_rfs_file_system* fs, rtems_rfs_group* group); /** - * Allocate an inode or block. The groups are searched to find the next + * @brief Allocate an inode or block. + * + * The groups are searched to find the next * available inode or block. * * @param fs The file system data. * @param goal The goal to seed the bitmap search. * @param inode If true allocate an inode else allocate a block. * @param result The allocated bit in the bitmap. - * @return int The error number (errno). No error if 0. + * @retval int The error number (errno). No error if 0. */ int rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs, rtems_rfs_bitmap_bit goal, @@ -125,25 +140,25 @@ int rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs, rtems_rfs_bitmap_bit* result); /** - * Free the group allocated bit. + * @brief Free the group allocated bit. * * @param fs The file system data. * @param inode If true the number to free is an inode else it is a block. * @param block The inode or block number to free. - * @return int The error number (errno). No error if 0. + * @retval int The error number (errno). No error if 0. */ int rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs, bool inode, rtems_rfs_bitmap_bit no); /** - * Test the group allocated bit. + * @brief Test the group allocated bit. * * @param fs The file system data. * @param inode If true the number to free is an inode else it is a block. * @param block The inode or block number to free. * @param state Return the state of the bit. - * @return int The error number (errno). No error if 0. + * @retval int The error number (errno). No error if 0. */ int rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs, bool inode, @@ -151,15 +166,16 @@ int rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs, bool* state); /** - * Determine the number of blocks and inodes used. + * @brief Determine the number of blocks and inodes used. * * @param fs The file system data. * @param blocks The number of blocks used. * @param inodes The number of inodes used. - * @return int The error number (errno). No error if 0. + * @retval int The error number (errno). No error if 0. */ int rtems_rfs_group_usage (rtems_rfs_file_system* fs, size_t* blocks, size_t* inodes); +/** @} */ #endif diff --git a/cpukit/libfs/src/rfs/rtems-rfs-inode.c b/cpukit/libfs/src/rfs/rtems-rfs-inode.c index 51129e9378..35313674da 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-inode.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-inode.c @@ -2,7 +2,7 @@ * @file * * @brief RTEMS File Systems Inode Routines - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * These functions manage inodes in the RFS file system. An inode is part of a * block that reside after the bitmaps in the group. diff --git a/cpukit/libfs/src/rfs/rtems-rfs-inode.h b/cpukit/libfs/src/rfs/rtems-rfs-inode.h index a26232fdc3..773db4751d 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-inode.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-inode.h @@ -3,7 +3,7 @@ * * @brief RTEMS File System Information Node * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File System Information Node. * @@ -230,8 +230,9 @@ typedef struct _rtems_rfs_inode_handle /** * Get the link count. * - * @param handle The inode handle. - * @return uint16_t The link count. + * @param[in] handle is the inode handle. + * + * @retval links The link count. */ static inline uint16_t rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle) @@ -246,8 +247,8 @@ rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle) /** * Set the link count. * - * @param handle The inode handle. - * @prarm links The links. + * @param[in] handle is the inode handle. + * @param[in] links are the links. */ static inline void rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links) @@ -259,8 +260,9 @@ rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links) /** * Get the flags. * - * @param handle The inode handle. - * @return uint16_t The flags. + * @param[in] handle is the inode handle. + * + * @retval flags The flags. */ static inline uint16_t rtems_rfs_inode_get_flags (rtems_rfs_inode_handle* handle) @@ -271,8 +273,8 @@ rtems_rfs_inode_get_flags (rtems_rfs_inode_handle* handle) /** * Set the flags. * - * @param handle The inode handle. - * @prarm flags The flags. + * @param[in] handle is the inode handle. + * @param[in] flags are the flags. */ static inline void rtems_rfs_inode_set_flags (rtems_rfs_inode_handle* handle, uint16_t flags) @@ -284,8 +286,9 @@ rtems_rfs_inode_set_flags (rtems_rfs_inode_handle* handle, uint16_t flags) /** * Get the mode. * - * @param handle The inode handle. - * @return uint16_t The mode. + * @param[in] handle is the inode handle. + * + * @retval mode The mode. */ static inline uint16_t rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle) @@ -296,8 +299,8 @@ rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle) /** * Set the mode. * - * @param handle The inode handle. - * @prarm mode The mode. + * @param[in] handle is the inode handle. + * @param[in] mode is the mode. */ static inline void rtems_rfs_inode_set_mode (rtems_rfs_inode_handle* handle, uint16_t mode) @@ -309,8 +312,9 @@ rtems_rfs_inode_set_mode (rtems_rfs_inode_handle* handle, uint16_t mode) /** * Get the user id. * - * @param handle The inode handle. - * @return uint16_t The user id (uid). + * @param[in] handle is the inode handle. + * + * @retval uid The used id. */ static inline uint16_t rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle) @@ -321,8 +325,9 @@ rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle) /** * Get the group id. * - * @param handle The inode handle. - * @return uint16_t The group id (gid). + * @param[in] handle is the inode handle. + * + * @retval gid The grpup id. */ static inline uint16_t rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle) @@ -333,9 +338,9 @@ rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle) /** * Set the user id and group id. * - * @param handle The inode handle. - * @param uid The user id (uid). - * @param gid The group id (gid). + * @param[in] handle is the inode handle. + * @param[in] uid is the user id (uid). + * @param[in] gid is the group id (gid). */ static inline void rtems_rfs_inode_set_uid_gid (rtems_rfs_inode_handle* handle, @@ -348,8 +353,9 @@ rtems_rfs_inode_set_uid_gid (rtems_rfs_inode_handle* handle, /** * Get the block offset. * - * @param handle The inode handle. - * @return uint32_t The block offset. + * @param[in] handle is the inode handle. + * + * @retval offset The block offset. */ static inline uint16_t rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle) @@ -360,8 +366,8 @@ rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle) /** * Set the block offset. * - * @param handle The inode handle. - * @param block_count The block offset. + * @param[in] handle is the inode handle. + * @param[in] block_count is the block offset. */ static inline void rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle, @@ -374,8 +380,9 @@ rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle, /** * Get the block count. * - * @param handle The inode handle. - * @return uint32_t The block count. + * @param[in] handle is the inode handle. + * + * @retval count The block count. */ static inline uint32_t rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle) @@ -386,8 +393,8 @@ rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle) /** * Set the block count. * - * @param handle The inode handle. - * @param block_count The block count. + * @param[in] handle is the inode handle. + * @param[in] block_count is the block count. */ static inline void rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count) @@ -399,8 +406,9 @@ rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_ /** * Get the atime. * - * @param handle The inode handle. - * @return rtems_rfs_time The atime. + * @param[in] handle is the inode handle. + * + * @retval atime The atime. */ static inline rtems_rfs_time rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle) @@ -411,8 +419,8 @@ rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle) /** * Set the atime. * - * @param handle The inode handle. - * @prarm atime The atime. + * @param[in] handle is the inode handle. + * @param[in] atime The atime. */ static inline void rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle, @@ -425,8 +433,9 @@ rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle, /** * Get the mtime. * - * @param handle The inode handle. - * @return rtems_rfs_time The mtime. + * @param[in] handle is the inode handle. + * + * @retval mtime The mtime. */ static inline rtems_rfs_time rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle) @@ -437,8 +446,8 @@ rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle) /** * Set the mtime. * - * @param handle The inode handle. - * @prarm atime The mtime. + * @param[in] handle is the inode handle. + * @param[in] mtime The mtime. */ static inline void rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle, @@ -451,8 +460,9 @@ rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle, /** * Get the ctime. * - * @param handle The inode handle. - * @return rtems_rfs_time The ctime. + * @param[in] handle is the inode handle. + * + * @retval ctime The ctime. */ static inline rtems_rfs_time rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle) @@ -463,8 +473,8 @@ rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle) /** * Set the ctime. * - * @param handle The inode handle. - * @prarm atime The ctime. + * @param[in] handle is the inode handle. + * @param[in] ctime The ctime. */ static inline void rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle, @@ -477,9 +487,10 @@ rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle, /** * Get the block number. * - * @param handle The inode handle. - * @param block The block number to return. - * @return uint32_t The block number. + * @param[in] handle is the inode handle. + * @param[in] block is the block number to return. + * + * @retval block The block number. */ static inline uint32_t rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block) @@ -490,9 +501,9 @@ rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block) /** * Set the block number for a given block index. * - * @param handle The inode handle. - * @param block The block index. - * @param bno The block number. + * @param[in] handle is the inode handle. + * @param[in] block is the block index. + * @param[in] bno is the block number. */ static inline void rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno) @@ -504,8 +515,9 @@ rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t b /** * Get the last map block from the inode. * - * @param handle The inode handle. - * @return uint32_t The last map block number. + * @param[in] handle is the inode handle. + * + * @retval block The last map block number. */ static inline uint32_t rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle) @@ -516,8 +528,8 @@ rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle) /** * Set the last map block. * - * @param handle The inode handle. - * @param block_count The last map block number. + * @param[in] handle is the inode handle. + * @param[in] block_count is last map block number. */ static inline void rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t last_map_block) @@ -529,8 +541,10 @@ rtems_rfs_inode_set_last_map_block (rtems_rfs_inode_handle* handle, uint32_t las /** * Get the last data block from the inode. * - * @param handle The inode handle. - * @return uint32_t The last data block number. + * @param[in] handle is the inode handle. + * + * @retval block The last data block number. + * */ static inline uint32_t rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle) @@ -541,8 +555,8 @@ rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle) /** * Set the last data block. * - * @param handle The inode handle. - * @param block_count The last data block number. + * @param[in] handle is the inode handle. + * @param[in] block_count is the last data block number. */ static inline void rtems_rfs_inode_set_last_data_block (rtems_rfs_inode_handle* handle, uint32_t last_data_block) @@ -554,20 +568,24 @@ rtems_rfs_inode_set_last_data_block (rtems_rfs_inode_handle* handle, uint32_t la /** * Allocate an inode number and return it. * - * @param fs The file system data. - * @param ino Return the ino. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[out] ino will contain the ino. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_inode_alloc (rtems_rfs_file_system* fs, rtems_rfs_bitmap_bit goal, rtems_rfs_ino* ino); /** - * Allocate an inode number and return it. + * Free an inode. * - * @param fs The file system data. - * @param ino The ino too free. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] ino is the ino too free. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_inode_free (rtems_rfs_file_system* fs, rtems_rfs_ino ino); @@ -577,11 +595,13 @@ int rtems_rfs_inode_free (rtems_rfs_file_system* fs, * data pointer. All data is in media byte order and needs to be accessed via * the supporting calls. * - * @param fs The file system. - * @param ino The inode number. - * @param handle The handle to the inode we are opening. - * @param load If true load the inode into memory from the media. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system. + * @param[in] ino is the inode number. + * @param[in] handle is the handle to the inode we are opening. + * @param[in] load If true load the inode into memory from the media. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_inode_open (rtems_rfs_file_system* fs, rtems_rfs_ino ino, @@ -591,9 +611,11 @@ int rtems_rfs_inode_open (rtems_rfs_file_system* fs, /** * The close inode handle. All opened inodes need to be closed. * - * @param fs The file system. - * @param handle The handle to close. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system. + * @param[in] handle is the handle to close. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_inode_close (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle); @@ -601,9 +623,11 @@ int rtems_rfs_inode_close (rtems_rfs_file_system* fs, /** * Load the inode into memory. * - * @param fs The file system. - * @param handle The inode handle to load. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system. + * @param[in] handle is the inode handle to load. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_inode_load (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle); @@ -611,10 +635,12 @@ int rtems_rfs_inode_load (rtems_rfs_file_system* fs, /** * Unload the inode from memory. * - * @param fs The file system. - * @param handle The inode handle to unload. - * @param update_ctime Update the ctime field of the inode. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system. + * @param[in] handle is the inode handle to unload. + * @param[in] update_ctime Update the ctime field of the inode. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_inode_unload (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle, @@ -624,9 +650,10 @@ int rtems_rfs_inode_unload (rtems_rfs_file_system* fs, * Create an inode allocating, initialising and adding an entry to the parent * directory. * - * @param fs The file system data. - * @param parent The parent inode number to add the directory entry to. - * @param name The name of the directory entryinode to create. + * @param[in] fs is the file system data. + * @param[in] parent is the parent inode number to add the directory entry to. + * @param[in] name is a pointer to the name of the directory entryinode + * to create. * */ int rtems_rfs_inode_create (rtems_rfs_file_system* fs, @@ -643,9 +670,11 @@ int rtems_rfs_inode_create (rtems_rfs_file_system* fs, * Delete the inode eraseing it and release the buffer to commit the write. You * need to load the inode again if you wish to use it again. * - * @param fs The file system. - * @param handle The inode handle to erase. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system. + * @param[in] handle is the inode handle to erase. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_inode_delete (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle); @@ -653,12 +682,14 @@ int rtems_rfs_inode_delete (rtems_rfs_file_system* fs, /** * Initialise a new inode. * - * @param handle The inode handle to initialise. - * @param links The number of links to the inode. - * @param mode The inode mode. - * @param uid The user id. - * @param gid The group id. - * @return int The error number (errno). No error if 0. + * @param[in] handle is the inode handle to initialise. + * @param[in] links are the number of links to the inode. + * @param[in] mode is the inode mode. + * @param[in] uid is the user id. + * @param[in] gid is the group id. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_inode_initialise (rtems_rfs_inode_handle* handle, uint16_t links, @@ -670,11 +701,13 @@ int rtems_rfs_inode_initialise (rtems_rfs_inode_handle* handle, * Time stamp the inode with the current time. The ctime field is hanlded * automatically. * - * @param handle The inode handle. - * @param atime Update the atime field. - * @param mtime UPdate the mtime field. - * @return int The error number (errno). No error if 0 and ENXIO if no inode - * loaded. + * @param[in] handle is the inode handle. + * @param[in] atime Update the atime field. + * @param[in] mtime UPdate the mtime field. + * + * @retval 0 Successful operation. + * @retval ENXIO No inode is loaded. + * @retval error_code An error occurred. */ int rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle, bool atime, @@ -683,10 +716,10 @@ int rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle, /** * Calculate the size of data attached to the inode. * - * @param fs The file system data. - * @param handle The inode handle. - * @return rtems_rfs_pos The data size in bytes in the block map attched to the - * inode. + * @param[in] fs is the file system data. + * @param[in] handle is the inode handle. + * + * @retval size The data size in bytes in the block map attched to the inode. */ rtems_rfs_pos rtems_rfs_inode_get_size (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-link.c b/cpukit/libfs/src/rfs/rtems-rfs-link.c index 225a37fac9..7cfb60acbb 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-link.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-link.c @@ -2,7 +2,7 @@ * @file * * @brief RTEMS File Systems Link Routines - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * These functions manage links. A link is the addition of a directory entry * in a parent directory and incrementing the links count in the inode. diff --git a/cpukit/libfs/src/rfs/rtems-rfs-link.h b/cpukit/libfs/src/rfs/rtems-rfs-link.h index 0f473f2200..c10e336d49 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-link.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-link.h @@ -3,7 +3,7 @@ * * @brief RTEMS File System Link Support * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File System Link Support * @@ -41,13 +41,16 @@ typedef enum rtems_rfs_unlink_dir_e * Create a link. Do not link directories unless renaming or you will create * loops in the file system. * - * @param fs The file system. - * @param name The name of the link. - * @param length The length of the name. - * @param parent The inode number of the parent directory. - * @param target The inode of the target. - * @param link_dir If true directories can be linked. Useful when renaming. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system. + * @param[in] name is a pointer to the name of the link. + * @param[in] length is the length of the name. + * @param[in] parent is the inode number of the parent directory. + * @param[in] target is the inode of the target. + * @param[in] link_dir If true directories can be linked. Useful when + * renaming. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_link (rtems_rfs_file_system* fs, const char* name, @@ -57,16 +60,18 @@ int rtems_rfs_link (rtems_rfs_file_system* fs, bool link_dir); /** - * Unlink the node from the parent directory. A directory offset for the target - * entry is required because links cause a number of inode numbers to appear in - * a single directory so scanning does not work. + * Unlink the node from the parent directory. A directory offset for the + * target entry is required because links cause a number of inode numbers to + * appear in a single directory so scanning does not work. + * + * @param[in] fs is the file system. + * @param[in] parent is the inode number of the parent directory. + * @param[in] target is the inode of the target. + * @param[in] doff is the parent directory entry offset for the target entry. + * @param[in] dir_mode is the directory unlink mode. * - * @param fs The file system. - * @param parent The inode number of the parent directory. - * @param target The inode of the target. - * @param doff Parent directory entry offset for the target entry. - * @param dir_mode Directory unlink mode. - * @return int The error number (errno). No error if 0. + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_unlink (rtems_rfs_file_system* fs, rtems_rfs_ino parent, @@ -77,13 +82,16 @@ int rtems_rfs_unlink (rtems_rfs_file_system* fs, /** * Symbolic link is an inode that has a path attached. * - * @param fs The file system data. - * @param name The name of the node. - * @param length The length of the name of the node. - * @param link The link path attached to the symlink inode. - * @param link_length The length of the link path. - * @param parent The parent inode number. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] name is a pointer to the name of the node. + * @param[in] length is the length of the name of the node. + * @param[in] link is a pointer to the link path attached to the + * symlink inode. + * @param[in] link_length is the length of the link path. + * @param[in] parent is the parent inode number. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_symlink (rtems_rfs_file_system* fs, const char* name, @@ -98,12 +106,14 @@ int rtems_rfs_symlink (rtems_rfs_file_system* fs, * Read a symbolic link into the provided buffer returning the link of link * name. * - * @param fs The file system data. - * @param link The link inode number to read. - * @param path The buffer to write the link path into. - * @param size The size of the buffer. - * @param length Set to the length of the link path. - * @return int The error number (errno). No error if 0. + * @param[in] fs is the file system data. + * @param[in] link is the link inode number to read. + * @param[in] path is a pointer to the buffer to write the link path into. + * @param[in] size is the size of the buffer. + * @param[out] length will contain the length of the link path. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_rfs_symlink_read (rtems_rfs_file_system* fs, rtems_rfs_ino link, diff --git a/cpukit/libfs/src/rfs/rtems-rfs-mutex.c b/cpukit/libfs/src/rfs/rtems-rfs-mutex.c index 7bf92f7cd5..27f36bf09f 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-mutex.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-mutex.c @@ -2,7 +2,7 @@ * @file * * @brief RTEMS File System Mutex - * @ingroup rtems-rfs + * @ingroup rtems_rfs */ /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> diff --git a/cpukit/libfs/src/rfs/rtems-rfs-mutex.h b/cpukit/libfs/src/rfs/rtems-rfs-mutex.h index ac04aeea1a..a37d9fee72 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-mutex.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-mutex.h @@ -3,7 +3,7 @@ * * @brief RTEMS File System Mutex * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File System Mutex. * @@ -41,27 +41,33 @@ typedef uint32_t rtems_rfs_mutex; /* place holder */ #endif /** - * Create the mutex. + * @brief Create the mutex. + * + * @param [in] mutex is pointer to the mutex handle returned to the caller. + * + * @retval 0 Successful operation. + * @retval EIO An error occurred. * - * @param mutex Reference to the mutex handle returned to the caller. - * @return int The error number (errno). No error if 0. */ int rtems_rfs_mutex_create (rtems_rfs_mutex* mutex); /** - * Create the mutex. + * @brief Destroy the mutex. + * + * @param[in] mutex Reference to the mutex handle returned to the caller. * - * @param mutex Reference to the mutex handle returned to the caller. - * @return int The error number (errno). No error if 0. + * @retval 0 Successful operation. + * @retval EIO An error occurred. */ int rtems_rfs_mutex_destroy (rtems_rfs_mutex* mutex); /** - * Lock the mutex. + * @brief Lock the mutex. * - * @param mutex The mutex to lock. - * @retval true The mutex is locked. - * @retval false The mutex could not be locked. + * @param[in] mutex is a pointer to the mutex to lock. + * + * @retval 0 Successful operation. + * @retval EIO An error occurred. */ static inline int rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex) @@ -82,11 +88,12 @@ rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex) } /** - * Unlock the mutex. + * @brief Unlock the mutex. + * + * @param[in] mutex is a pointer to the mutex to unlock. * - * @param mutex The mutex to unlock. - * @retval true The mutex is unlocked. - * @retval false The mutex could not be unlocked. + * @retval 0 Successful operation. + * @retval EIO An error occurred. */ static inline int rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex) diff --git a/cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c b/cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c index 97d0104cdd..dbf9c165dd 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c @@ -2,7 +2,7 @@ * @file * * @brief RTEMS RFS Device Interface - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * This file contains the set of handlers used to map operations on RFS device * nodes onto calls to the RTEMS Classic API IO Manager. diff --git a/cpukit/libfs/src/rfs/rtems-rfs-rtems-dir.c b/cpukit/libfs/src/rfs/rtems-rfs-rtems-dir.c index c04bbea03b..baf71555e5 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-rtems-dir.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-rtems-dir.c @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief RTEMS RFS Directory Access Routines + * @ingroup rtems_rfs + */ /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,13 +11,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS RFS Directory Access Routines - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c b/cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c index 7de04038e7..b3ec0ed755 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c @@ -1,3 +1,13 @@ +/** + * @file + * + * @brief RTEMS RFS File Handlers + * @ingroup rtems_rfs + * + * This file contains the set of handlers used to process operations on + * RFS file nodes. + */ + /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,16 +15,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS RFS File Handlers - * - * This file contains the set of handlers used to process operations on - * RFS file nodes. - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-rtems-utils.c b/cpukit/libfs/src/rfs/rtems-rfs-rtems-utils.c index 76d0392605..d23dbf2203 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-rtems-utils.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-rtems-utils.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief Set of Utility Functions to Support RTEMS RFS on RTEMS + * @ingroup rtems_rfs + */ + /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,13 +12,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * Set of utility functions to support RTEMS RFS on RTEMS. - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-rtems.c b/cpukit/libfs/src/rfs/rtems-rfs-rtems.c index d2aac56429..fad2993f9b 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-rtems.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-rtems.c @@ -2,7 +2,7 @@ * @file * * @brief RTEMS File System Interface for RTEMS - * @ingroup rtems-rfs + * @ingroup rtems_rfs */ /* diff --git a/cpukit/libfs/src/rfs/rtems-rfs-rtems.h b/cpukit/libfs/src/rfs/rtems-rfs-rtems.h index 00fcb27143..d923999f62 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-rtems.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-rtems.h @@ -1,20 +1,21 @@ -/* - * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - */ /** * @file * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File System RTEMS Header file. * * This file is not to be installed. It binds the RFS file system to RTEMS. */ +/* + * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + #if !defined(RTEMS_RFS_RTEMS_DEFINED) #define RTEMS_RFS_RTEMS_DEFINED @@ -44,10 +45,12 @@ * Take the result code and set errno with it and if non-zero return -1 else * return 0. * - * @param what The message to print is the error is not zero. - * @param error The error code. - * @retval -1 An error has occurred. - * @retval 0 No error. + * @param[in] what is a pointer to the message to print if the error + * is not zero. + * @param[in] error is the error code. + * + * @retval 0 Successful operation. + * @retval -1 An error occurred. */ int rtems_rfs_rtems_error (const char* mesg, int error); #endif @@ -84,7 +87,8 @@ int rtems_rfs_rtems_error (const char* mesg, int error); * defined to 0 the code is dead code elminiated when built with -Os, -O2, or * higher. * - * @param mask The part of the API to trace. + * @param[in] mask is the part of the API to trace. + * * @retval true Tracing is active for the mask. * @retval false Do not trace. */ @@ -97,8 +101,9 @@ bool rtems_rfs_rtems_trace (uint32_t mask); /** * Set the mask. * - * @param mask The mask bits to set. - * @return The previous mask. + * @param[in] mask is the mask bits to set. + * + * @retval mask The previous mask. */ #if RTEMS_RFS_RTEMS_TRACE void rtems_rfs_rtems_trace_set_mask (uint32_t mask); @@ -109,8 +114,9 @@ void rtems_rfs_rtems_trace_set_mask (uint32_t mask); /** * Clear the mask. * - * @param mask The mask bits to clear. - * @return The previous mask. + * @param[in] mask is the mask bits to clear. + * + * @retval mask The previous mask. */ #if RTEMS_RFS_RTEMS_TRACE void rtems_rfs_rtems_trace_clear_mask (uint32_t mask); @@ -144,7 +150,7 @@ typedef struct rtems_rfs_rtems_private /** * Return the file system structure given a path location. * - * @param _loc Pointer to the path location. + * @param[in] _loc is a pointer to the path location. * @return rtems_rfs_file_system* */ #define rtems_rfs_rtems_pathloc_dev(_loc) \ @@ -153,8 +159,8 @@ typedef struct rtems_rfs_rtems_private /** * Set the inode number (ino) into the path location. * - * @param _loc Pointer to the path location. - * @param _ino The ino to set in the path location. + * @param[in] _loc is a pointer to the path location. + * @param[in] _ino is the ino to set in the path location. */ #define rtems_rfs_rtems_set_pathloc_ino(_loc, _ino) \ (_loc)->node_access = (void*)((intptr_t)(_ino)) @@ -162,7 +168,7 @@ typedef struct rtems_rfs_rtems_private /** * Get the inode number (ino) given a path location. * - * @param _loc Pointer to the path location. + * @param[in] _loc is a pointer to the path location. * @return rtems_rfs_ino The inode number in the path location. */ #define rtems_rfs_rtems_get_pathloc_ino(_loc) \ @@ -171,8 +177,8 @@ typedef struct rtems_rfs_rtems_private /** * Set the directory offset (doff) into the path location. * - * @param _loc Pointer to the path location. - * @param _doff The doff to set in the path location. + * @param[in] _loc is a pointer to the path location. + * @param[in] _doff is the doff to set in the path location. */ #define rtems_rfs_rtems_set_pathloc_doff(_loc, _doff) \ (_loc)->node_access_2 = (void*)((intptr_t)(_doff)) @@ -180,7 +186,7 @@ typedef struct rtems_rfs_rtems_private /** * Get the directory offset (doff) given a path location. * - * @param _loc Pointer to the path location. + * @param[in] _loc is a pointer to the path location. * @return uin32_t The doff in the path location. */ #define rtems_rfs_rtems_get_pathloc_doff(_loc) \ @@ -189,7 +195,7 @@ typedef struct rtems_rfs_rtems_private /** * Get the ino from the I/O pointer. * - * @param _iop The I/O pointer. + * @param[in] _iop is the I/O pointer. * @return ino */ #define rtems_rfs_rtems_get_iop_ino(_iop) \ @@ -207,8 +213,8 @@ typedef struct rtems_rfs_rtems_private /** * Set the file handle in the I/O pointer. * - * @param _iop The I/O pointer. - * @param _fh The file handle. + * @param[in] _iop is the I/O pointer. + * @param[in] _fh is the file handle. */ #define rtems_rfs_rtems_set_iop_file_handle(_iop, _fh) \ (_iop)->pathinfo.node_access_2 = (_fh) @@ -216,7 +222,7 @@ typedef struct rtems_rfs_rtems_private /** * Create the name of the handler's table given the type of handlers. * - * @param _h The name of the handlers. + * @param[in] _h is the name of the handlers. * @return label The name of the handler's table. */ #define rtems_rfs_rtems_handlers(_h) \ @@ -225,8 +231,10 @@ typedef struct rtems_rfs_rtems_private /** * Set the handlers in the path location based on the mode of the inode. * - * @param loc Pointer to the path location to set the handlers in. - * @param inode The inode handle to check the mode of for the type of handlers. + * @param[in] loc is a pointer to the path location to set the handlers in. + * @param[in] inode is the inode handle to check the mode of for the + * type of handlers. + * * @retval true The handlers have been set. * @retval false There are no handlers for the mode. */ @@ -236,7 +244,7 @@ bool rtems_rfs_rtems_set_handlers (rtems_filesystem_location_info_t* pathloc, /** * Convert the system mode flags to inode mode flags. * - * @param mode The system mode flags. + * @param[in] mode is the system mode flags. * @return uint16_t The inode mode flags. */ uint16_t rtems_rfs_rtems_imode (mode_t mode); @@ -244,7 +252,7 @@ uint16_t rtems_rfs_rtems_imode (mode_t mode); /** * Convert the inode mode flags to system mode flags. * - * @param imode The inode mode flags + * @param[in] imode is the inode mode flags * @return mode_t The system mode flags. */ mode_t rtems_rfs_rtems_mode (int imode); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-shell.c b/cpukit/libfs/src/rfs/rtems-rfs-shell.c index a1ed928885..96c0c17890 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-shell.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-shell.c @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief RTEMS File Systems Shell Commands Support + * @ingroup rtems_rfs + */ + /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,13 +12,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File Systems Shell Commands Support - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-shell.h b/cpukit/libfs/src/rfs/rtems-rfs-shell.h index f4e56227b7..46f3d2902f 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-shell.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-shell.h @@ -1,3 +1,13 @@ +/** + * @file + * + * @ingroup rtems_rfs + * @brief RTEMS File Systems Shell Commands + * + * RTEMS File Systems Shell commands provide a CLI interface to support and + * development of the RFS file system. + */ + /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,14 +15,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File Systems Shell commands provide a CLI interface to support and - * development od the RFS file system. - */ #if !defined (_RTEMS_RFS_SHELL_H_) #define _RTEMS_RFS_SHELL_H_ @@ -24,18 +26,22 @@ /** * The shell command for the RFS debugger. * - * @param argc The argument count. - * @param argv The argument variables. - * @return int The exit code for the command. A 0 is no error. + * @param[in] argc is the argument count. + * @param[in] argv is a pointer to the argument variables. + * + * @retval 0 Successful operation. + * @retval error_code An error occurred. */ int rtems_shell_debugrfs (int argc, char *argv[]); /** * The shell command for formatting an RFS file system. * - * @param argc The argument count. - * @param argv The argument variables. - * @return int The exit code for the command. A 0 is no error. + * @param[in] argc is the argument count. + * @param[in] argv is a pointer to the argument variables. + * + * @retval 0 Successful operation. + * @retval 1 An error occurred. */ int rtems_shell_rfs_format (int argc, char* argv[]); diff --git a/cpukit/libfs/src/rfs/rtems-rfs-trace.c b/cpukit/libfs/src/rfs/rtems-rfs-trace.c index df0f54ad6b..2be76792a2 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-trace.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-trace.c @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief RTEMS File Systems Trace Support + * @ingroup rtems_rfs + */ /* * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> * @@ -5,13 +11,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File Systems Trace Support - */ #if HAVE_CONFIG_H #include "config.h" diff --git a/cpukit/libfs/src/rfs/rtems-rfs-trace.h b/cpukit/libfs/src/rfs/rtems-rfs-trace.h index 09273a5939..7ffdea0d56 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-trace.h +++ b/cpukit/libfs/src/rfs/rtems-rfs-trace.h @@ -1,9 +1,10 @@ /** * @file * - * @brief Manages the Trace and Debugging Features of the RTEMS RFS File System + * @brief Manages the Trace and Debugging Features of the + * RTEMS RFS File System * - * @ingroup rtems-rfs + * @ingroup rtems_rfs * * RTEMS File Systems Trace manages the trace and debugging features of the * RTEMS RFS file system. The design allows all tracing code and strings to be @@ -87,7 +88,8 @@ typedef uint64_t rtems_rfs_trace_mask; * Call to check if this part is bring traced. If RTEMS_RFS_TRACE is defined to * 0 the code is dead code elminiated when built with -Os, -O2, or higher. * - * @param mask The part of the API to trace. + * @param[in] mask is the part of the API to trace. + * * @retval true Tracing is active for the mask. * @retval false Do not trace. */ @@ -100,8 +102,9 @@ bool rtems_rfs_trace (rtems_rfs_trace_mask mask); /** * Set the mask. * - * @param mask The mask bits to set. - * @return The previous mask. + * @param[in] mask are the mask bits to set. + * + * @retval mask The previous mask. */ #if RTEMS_RFS_TRACE rtems_rfs_trace_mask rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask); @@ -112,8 +115,9 @@ rtems_rfs_trace_mask rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask); /** * Clear the mask. * - * @param mask The mask bits to clear. - * @return The previous mask. + * @param[in] mask are the mask bits to clear. + * + * @retval mask The previous mask. */ #if RTEMS_RFS_TRACE rtems_rfs_trace_mask rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask); diff --git a/cpukit/libfs/src/rfs/rtems-rfs.h b/cpukit/libfs/src/rfs/rtems-rfs.h index 251a61805f..ffd2f806fb 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs.h +++ b/cpukit/libfs/src/rfs/rtems-rfs.h @@ -1,19 +1,21 @@ -/* - * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - */ /** * @file * - * @ingroup rtems-rfs + * @brief RFS File system Initialization + * @ingroup rtems_rfs * * RTEMS File System * */ +/* + * COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + #if !defined(RTEMS_RFS_DEFINED) #define RTEMS_RFS_DEFINED @@ -21,8 +23,16 @@ #include <rtems/fs.h> /** + * @defgroup rtems_rfs RTEMS File System Group Management + * + * @ingroup FileSystemTypesAndMount + */ +/**@{*/ + +/** * Initialise the RFS File system. */ int rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t *mt_entry); +/**@}*/ #endif diff --git a/cpukit/libi2c/libi2c.h b/cpukit/libi2c/libi2c.h index 04c20a64b7..14327465e2 100644 --- a/cpukit/libi2c/libi2c.h +++ b/cpukit/libi2c/libi2c.h @@ -3,7 +3,7 @@ * * @ingroup libi2c * - * @brief I2C library. + * @brief I2C Library */ #ifndef _RTEMS_LIBI2C_H @@ -67,8 +67,8 @@ extern "C" { * * @brief I2C library. * - * @{ */ +/**@{**/ /* Simple I2C driver API */ diff --git a/cpukit/libmisc/bspcmdline/bspcmdline.h b/cpukit/libmisc/bspcmdline/bspcmdline.h index 7fa03c9492..4cd0e5c887 100644 --- a/cpukit/libmisc/bspcmdline/bspcmdline.h +++ b/cpukit/libmisc/bspcmdline/bspcmdline.h @@ -1,11 +1,16 @@ /** - * @file rtems/bspcmdline.h + * @file rtems/bspcmdline.h * - * This include file contains all prototypes and specifications - * related to the BSP Command Line String and associated helper - * routines. The helpers are useful for locating command line - * type arguments (e.g. --mode) and their associated right - * hand side (e.g. FAST in --mode=FAST). + * @defgroup BSPCommandLine BSP Command Line Helpers + * + * @ingroup libmisc + * @brief BSP Command Line Handler + * + * This include file contains all prototypes and specifications + * related to the BSP Command Line String and associated helper + * routines. The helpers are useful for locating command line + * type arguments (e.g. --mode) and their associated right + * hand side (e.g. FAST in --mode=FAST). */ /* @@ -21,11 +26,11 @@ #define __BSP_COMMAND_LINE_h /** - * @defgroup BSPCommandLine BSP Command Line Helpers + * @defgroup BSPCommandLine BSP Command Line Helpers * - * The BSP Command Line Handler provides a set of routines which assist - * in examining and decoding the Command Line String passed to the BSP - * at boot time. + * The BSP Command Line Handler provides a set of routines which assist + * in examining and decoding the Command Line String passed to the BSP + * at boot time. */ /**@{*/ @@ -37,33 +42,33 @@ extern "C" { /** - * @brief Obtain Pointer to BSP Boot Command String + * @brief Obtain Pointer to BSP Boot Command String * - * This method returns a pointer to the BSP Boot Command String. It - * is as likely to be NULL as point to a string as most BSPs do not - * have a start environment that provides a boot string. + * This method returns a pointer to the BSP Boot Command String. It + * is as likely to be NULL as point to a string as most BSPs do not + * have a start environment that provides a boot string. * - * @return This method returns the pointer to the BSP Boot Command String. + * @retval This method returns the pointer to the BSP Boot Command String. */ const char *rtems_bsp_cmdline_get(void); /** - * @brief Obtain COPY of the Entire Matching Argument - * - * This method searches for the argument @a name in the BSP Boot Command - * String and returns a copy of the entire string associated with it in - * @a value up to a string of @a length. This will include the argument - * and any right hand side portion of the string. For example, one might - * be returned --mode=FAST if - * searching for --mode. - * - * @param[in] name is the arugment to search for - * @param[in] value points to where the contents will - * be placed if located. - * @param[in] length is the maximum length to copy - * - * @return This method returns NULL if not found and - * @a value if found. + * @brief Obtain COPY of the Entire Matching Argument + * + * This method searches for the argument @a name in the BSP Boot Command + * String and returns a copy of the entire string associated with it in + * @a value up to a string of @a length. This will include the argument + * and any right hand side portion of the string. For example, one might + * be returned --mode=FAST if + * searching for --mode. + * + * @param[in] name is the arugment to search for + * @param[in] value points to where the contents will + * be placed if located. + * @param[in] length is the maximum length to copy + * + * @return This method returns NULL if not found and + * @a value if found. */ const char *rtems_bsp_cmdline_get_param( const char *name, @@ -73,22 +78,22 @@ const char *rtems_bsp_cmdline_get_param( /** - * @brief Obtain COPY of the Right Hand Side of the Matching Argument - * - * This method searches for the argument @a name in - * the BSP Boot Command String and returns the right hand side - * associated with it in @a value up to a maximum string @a length. - * This will NOT include the argument but only any right hand side - * portion of the string. * For example, one might be returned FAST if - * searching for --mode. - * - * @param[in] name is the arugment to search for - * @param[in] value points to where the contents will - * be placed if located. - * @param[in] length is the maximum length to copy - * - * @return This method returns NULL if not found and - * @a value if found. + * @brief Obtain COPY of the Right Hand Side of the Matching Argument + * + * This method searches for the argument @a name in + * the BSP Boot Command String and returns the right hand side + * associated with it in @a value up to a maximum string @a length. + * This will NOT include the argument but only any right hand side + * portion of the string. * For example, one might be returned FAST if + * searching for --mode. + * + * @param[in] name is the arugment to search for + * @param[in] value points to where the contents will + * be placed if located. + * @param[in] length is the maximum length to copy + * + * @retval This method returns NULL if not found and + * @a value if found. */ const char *rtems_bsp_cmdline_get_param_rhs( const char *name, @@ -97,22 +102,22 @@ const char *rtems_bsp_cmdline_get_param_rhs( ); /** - * @brief Obtain Pointer to the Entire Matching Argument + * @brief Obtain Pointer to the Entire Matching Argument * - * This method searches for the argument @a name in - * the BSP Boot Command String and returns a pointer to the - * entire string associated with it. This will include the - * argument and any right hand side portion of the string. - * For example, one might be returned --mode=FAST if - * searching for --mode. + * This method searches for the argument @a name in + * the BSP Boot Command String and returns a pointer to the + * entire string associated with it. This will include the + * argument and any right hand side portion of the string. + * For example, one might be returned --mode=FAST if + * searching for --mode. * - * @param[in] name is the arugment to search for + * @param[in] name is the arugment to search for * - * @return This method returns NULL if not found and a pointer - * into the BSP Boot Command String if found. + * @retval This method returns NULL if not found and a pointer + * into the BSP Boot Command String if found. * - * @note The pointer will be to the original BSP Command - * Line string. Exercise caution when using this. + * @note The pointer will be to the original BSP Command + * Line string. Exercise caution when using this. */ const char *rtems_bsp_cmdline_get_param_raw( const char *name diff --git a/cpukit/libmisc/capture/capture.h b/cpukit/libmisc/capture/capture.h index 034bdb9c86..d75f675b27 100644 --- a/cpukit/libmisc/capture/capture.h +++ b/cpukit/libmisc/capture/capture.h @@ -1,6 +1,9 @@ /** * @file rtems/capture.h * + * @brief Capture Engine Component of the RTEMS Measurement and + * Monitoring System + * * This is the Capture Engine component of the RTEMS Measurement and * Monitoring system. */ diff --git a/cpukit/libmisc/cpuuse/cpuuse.h b/cpukit/libmisc/cpuuse/cpuuse.h index 7dfe5ba388..0fa94d6357 100644 --- a/cpukit/libmisc/cpuuse/cpuuse.h +++ b/cpukit/libmisc/cpuuse/cpuuse.h @@ -1,17 +1,22 @@ /** * @file rtems/cpuuse.h + * + * @defgroup libmisc_cpuuse CPU Usage + * + * @ingroup libmisc + * @brief CPU Usage Report * * This include file contains information necessary to utilize * and install the cpu usage reporting mechanism. */ /* - * COPYRIGHT (c) 1989-2011. - * On-Line Applications Research Corporation (OAR). + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef __RTEMS_CPUUSE_h diff --git a/cpukit/libmisc/devnull/devnull.h b/cpukit/libmisc/devnull/devnull.h index 84e1475471..0eae69751c 100644 --- a/cpukit/libmisc/devnull/devnull.h +++ b/cpukit/libmisc/devnull/devnull.h @@ -1,6 +1,8 @@ /** - * @file rtems/devnull.h + * @file * + * @brief RTEMS /dev/null Device Driver + * * This include file defines the interface to the RTEMS /dev/null * device driver. */ @@ -19,14 +21,15 @@ #ifndef _RTEMS_DEVNULL_H #define _RTEMS_DEVNULL_H -#include <rtems/io.h> /* rtems_device_driver */ +#include <rtems/io.h> /** - * @defgroup libmisc_devnull Device Driver + * @defgroup libmisc_devnull Null Device Driver * * @ingroup libmisc */ /**@{*/ + #ifdef __cplusplus extern "C" { #endif diff --git a/cpukit/libmisc/devnull/devzero.h b/cpukit/libmisc/devnull/devzero.h index aaf084cc32..2f10e0f507 100644 --- a/cpukit/libmisc/devnull/devzero.h +++ b/cpukit/libmisc/devnull/devzero.h @@ -1,6 +1,8 @@ /** * @file rtems/devzero.h * + * @brief RTEMS /dev/zero Device Driver + * * This include file defines the interface to the RTEMS /dev/zero * device driver. */ @@ -8,11 +10,11 @@ /* * Copyright (c) 2011 embedded brains GmbH. All rights reserved. * - * embedded brains GmbH - * Obere Lagerstr. 30 - * 82178 Puchheim - * Germany - * <rtems@embedded-brains.de> + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at @@ -24,6 +26,13 @@ #include <rtems/io.h> +/** + * @defgroup libmisc_devzero Zero Device Driver + * + * @ingroup libmisc + */ +/**@{*/ + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -79,5 +88,5 @@ rtems_device_driver dev_zero_control( #ifdef __cplusplus } #endif /* __cplusplus */ - +/**@}*/ #endif /* _RTEMS_DEVZERO_H */ diff --git a/cpukit/libmisc/dumpbuf/dumpbuf.h b/cpukit/libmisc/dumpbuf/dumpbuf.h index d03274a1bc..6065fb11e2 100644 --- a/cpukit/libmisc/dumpbuf/dumpbuf.h +++ b/cpukit/libmisc/dumpbuf/dumpbuf.h @@ -1,6 +1,8 @@ /** - * @file rtems/dumpbuf.h + * @file * + * @brief Print a Memory Buffer + * * This file defines the interface to the RTEMS methods to print a * memory buffer in a style similar to many ROM monitors and debuggers. */ @@ -28,14 +30,14 @@ extern "C" { #endif /** - * @brief Print memory buffer. + * @brief Print memory buffer. * - * This method prints @a length bytes beginning at @a buffer in - * a nice format similar to what one would expect from a debugger - * or ROM monitor. + * This method prints @a length bytes beginning at @a buffer in + * a nice format similar to what one would expect from a debugger + * or ROM monitor. * - * @param[in] buffer is the address of the buffer - * @param[in] length is the length of the buffer + * @param[in] buffer is the address of the buffer + * @param[in] length is the length of the buffer */ void rtems_print_buffer( const unsigned char *buffer, diff --git a/cpukit/libmisc/fb/fb.h b/cpukit/libmisc/fb/fb.h index 5a896e19db..e268418a3a 100644 --- a/cpukit/libmisc/fb/fb.h +++ b/cpukit/libmisc/fb/fb.h @@ -1,4 +1,7 @@ -/** @file rtems/fb.h +/** + * @file rtems/fb.h + * + * @brief Frame Buffer Device Driver * * This file defines the interface to a frame buffer device driver. */ @@ -15,6 +18,13 @@ #include <stdint.h> +/** + * @defgroup libmisc_fb Frame Buffer Device Driver Interface + * + * @ingroup Device Drivers and Frameworks + */ +/**@{*/ + #ifdef __cplusplus extern "C" { #endif @@ -86,10 +96,9 @@ struct fb_cmap { uint16_t *transp; /* transparency, can be NULL */ }; - - #ifdef __cplusplus } #endif +/**@}*/ #endif /* _MW_FB_H */ diff --git a/cpukit/libmisc/fb/mw_uid.h b/cpukit/libmisc/fb/mw_uid.h index ba91a76b8c..8a10a8f38c 100644 --- a/cpukit/libmisc/fb/mw_uid.h +++ b/cpukit/libmisc/fb/mw_uid.h @@ -1,6 +1,11 @@ /** * @file rtems/mw_uid.h * + * @defgroup libmisc_fb_mw Input Devices for MicroWindows + * + * @ingroup libmisc + * @brief Input Devices for MicroWindows + * * This file defines the interface for input devices used by MicroWindows * in an embedded system environment. */ @@ -109,43 +114,43 @@ struct MW_UID_MESSAGE { */ /** - * This method creates the message queue that holds events from the - * input devices. + * This method creates the message queue that holds events from the + * input devices. * - * @param[in] q_name is the name of the message queue - * @param[in] flags controls the behaviour of the queue - * @param[in] max_msgs specifies the maximum number of pending messages + * @param[in] q_name is the name of the message queue + * @param[in] flags controls the behaviour of the queue + * @param[in] max_msgs specifies the maximum number of pending messages * - * @note The message queue is from the Classic API. + * @note The message queue is from the Classic API. * - * @return This method returns 0 on success and -1 on error. + * @retval This method returns 0 on success and -1 on error. */ extern int uid_open_queue( const char *q_name, int flags, size_t max_msgs ); /** - * This method closes the message queue and deletes it. + * This method closes the message queue and deletes it. * - * @return This method returns 0 on success and -1 on error. + * @retval This method returns 0 on success and -1 on error. */ extern int uid_close_queue( void ); /** - * This method reads a message from the queue. It waits up to the specified - * timeout in miliseconds. A @a timeout of 0 is a poll. + * This method reads a message from the queue. It waits up to the specified + * timeout in miliseconds. A @a timeout of 0 is a poll. * - * @param[in] m will be filled in with the received message - * @param[in] timeout is the maximum number of mulliseconds to wait + * @param[in] m will be filled in with the received message + * @param[in] timeout is the maximum number of mulliseconds to wait * - * @return This method returns 0 on success and -1 on error. + * @retval This method returns 0 on success and -1 on error. */ extern int uid_read_message( struct MW_UID_MESSAGE *m, unsigned long timeout ); /** - * This methods writes a message to the queue. + * This methods writes a message to the queue. * - * @param[in] m is the message to send + * @param[in] m is the message to send * - * @return This method returns 0 on success and -1 on error. + * @retval This method returns 0 on success and -1 on error. */ extern int uid_send_message( struct MW_UID_MESSAGE *m ); @@ -162,22 +167,22 @@ extern int uid_unregister_device( int fd ); extern int uid_set_kbd_mode( int fd, int mode, int *old_mode ); /** - * This methods prints the specified UID message using printk + * This methods prints the specified UID message using printk * - * @param[in] uid points to the message to print + * @param[in] uid points to the message to print */ void uid_print_message( struct MW_UID_MESSAGE *uid ); /** - * This methods prints the specified UID message using your fprintf - * style method of choice. + * This methods prints the specified UID message using your fprintf + * style method of choice. * - * @param[in] context is a pointer to a data area which may be - * used by some print handlers - * @param[in] handler is the fprintf style method to invoke - * @param[in] uid points to the message to print + * @param[in] context is a pointer to a data area which may be + * used by some print handlers + * @param[in] handler is the fprintf style method to invoke + * @param[in] uid points to the message to print */ void uid_print_message_with_plugin( void *context, diff --git a/cpukit/libmisc/fsmount/fsmount.h b/cpukit/libmisc/fsmount/fsmount.h index af1d9a532f..70c0594ea0 100644 --- a/cpukit/libmisc/fsmount/fsmount.h +++ b/cpukit/libmisc/fsmount/fsmount.h @@ -1,9 +1,29 @@ /** - * @file + * @file rtems/fsmount.h * - * File system mount functions. + * @defgroup rtems_fstab File System Mount Support + * + * @ingroup FileSystemTypesAndMount + * @brief File System Mount Functions + * + * This file contains the fsmount functions. These functions + * are used to mount a list of filesystems (and create their mount + * points before) + */ + +/* + * + * Copyright (c) 2003 IMD + * + * Ingenieurbuero fuer Microcomputertechnik Th. Doerfler + * <Thomas.Doerfler@imd-systems.de> + * all rights reserved + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ - + /*===============================================================*\ | Project: RTEMS fsmount | +-----------------------------------------------------------------+ @@ -44,8 +64,8 @@ extern "C" { * * @ingroup FileSystemTypesAndMount * - * @{ */ +/**@{**/ /** * File system mount report and abort condition flags. diff --git a/cpukit/libmisc/monitor/monitor.h b/cpukit/libmisc/monitor/monitor.h index ba3a61e62b..aedde1a848 100644 --- a/cpukit/libmisc/monitor/monitor.h +++ b/cpukit/libmisc/monitor/monitor.h @@ -1,7 +1,7 @@ /** * @file rtems/monitor.h * - * The RTEMS monitor task. + * @brief The RTEMS Monitor Task */ diff --git a/cpukit/libmisc/mouse/mouse_parser.h b/cpukit/libmisc/mouse/mouse_parser.h index 8b42c4464f..27bea1bbbc 100644 --- a/cpukit/libmisc/mouse/mouse_parser.h +++ b/cpukit/libmisc/mouse/mouse_parser.h @@ -1,6 +1,8 @@ /** * @file rtems/mouse_parser.h * + * @brief Initialize Mouse Parser Engine + * * This file is the header file for the Mouse Parser Engine. */ @@ -37,33 +39,33 @@ #include <rtems/mw_uid.h> /** - * @defgroup libmisc_mouse Mouse Parser Engine - * - * @ingroup libmisc + * @defgroup libmisc_mouseparser Mouse Parser Engine + * @ingroup libmisc_mouse */ /**@{*/ + #ifdef __cplusplus extern "C" { #endif /** - * This is the mask for the right button. + * This is the mask for the right button. * - * @note Use the same definitions as the user interface. + * @note Use the same definitions as the user interface. */ #define RBUTTON MV_BUTTON_RIGHT /** * This is the mask for the center button. * - * @note Use the same definitions as the user interface. + * @note Use the same definitions as the user interface. */ #define MBUTTON MV_BUTTON_CENTER /** - * This is the mask for the left button. + * This is the mask for the left button. * - * @note Use the same definitions as the user interface. + * @note Use the same definitions as the user interface. */ #define LBUTTON MV_BUTTON_LEFT @@ -85,25 +87,25 @@ typedef unsigned int BUTTON; typedef void (*mouse_parser_enqueue_handler)(unsigned char *, size_t); /** - * @brief Initialize the mouse parser engine. + * @brief Initialize the mouse parser engine. * - * This method initializes the Mouse Parser Engine for the mouse - * of @a type. The @a type should be one of the following strings: - * pc ms, logi, ps2. + * This method initializes the Mouse Parser Engine for the mouse + * of @a type. The @a type should be one of the following strings: + * pc ms, logi, ps2. * - * @a param[in] type indicates the type of mouse. + * @a param[in] type indicates the type of mouse. * - * @return This method returns 0 on success and -1 on error. + * @retval This method returns 0 on success and -1 on error. */ int mouse_parser_initialize(const char *type); /** - * @brief Enqueue input to the mouse parser engine. + * @brief Enqueue input to the mouse parser engine. * - * This method is used to pass mouse input to the Mouse Parser Engine. + * This method is used to pass mouse input to the Mouse Parser Engine. * - * @a param[in] buffer is the data to enqueue - * @a param[in] size is the amount of data to enqueue + * @a param[in] buffer is the data to enqueue + * @a param[in] size is the amount of data to enqueue */ void mouse_parser_enqueue( unsigned char *buffer, @@ -114,4 +116,6 @@ void mouse_parser_enqueue( } #endif +/**@}*/ + #endif diff --git a/cpukit/libmisc/mouse/serial_mouse.h b/cpukit/libmisc/mouse/serial_mouse.h index 314e49bbd0..307587fd7e 100644 --- a/cpukit/libmisc/mouse/serial_mouse.h +++ b/cpukit/libmisc/mouse/serial_mouse.h @@ -1,13 +1,15 @@ /** - * @file rtems/serial_mouse.h + * @file + * + * @brief Serial Mouse Driver * - * This file describes the Serial Mouse Driver for all boards. - * This driver assumes that the BSP or application will provide - * an implementation of the method bsp_get_serial_mouse_device() - * which tells the driver what serial port device to open() and - * what type of mouse is connected. + * This file describes the Serial Mouse Driver for all boards. + * This driver assumes that the BSP or application will provide + * an implementation of the method bsp_get_serial_mouse_device() + * which tells the driver what serial port device to open() and + * what type of mouse is connected. * - * This driver relies on the Mouse Parser Engine. + * This driver relies on the Mouse Parser Engine. */ /* @@ -25,9 +27,8 @@ /* functions */ /** - * @defgroup libmisc_mouse Serial Mouse Driver - * - * @ingroup libmisc + * @defgroup libmisc_serialmouse Serial Mouse Driver + * @ingroup libmisc_mouse */ /**@{*/ #ifdef __cplusplus @@ -42,13 +43,13 @@ extern "C" { serial_mouse_read, serial_mouse_write, serial_mouse_control } /** - * @brief The initialization of the serial mouse driver. + * @brief The initialization of the serial mouse driver. * - * This method initializes the serial mouse driver. + * This method initializes the serial mouse driver. * - * @param[in] major is the mouse device major number - * @param[in] minor is the mouse device minor number - * @param[in] arguments points to device driver arguments + * @param[in] major is the mouse device major number + * @param[in] minor is the mouse device minor number + * @param[in] arg points to device driver arguments */ rtems_device_driver serial_mouse_initialize( rtems_device_major_number major, @@ -57,14 +58,14 @@ rtems_device_driver serial_mouse_initialize( ); /** - * @brief Open device driver entry point for the serial mouse driver. + * @brief Open device driver entry point for the serial mouse driver. * - * This method implements the Open device driver entry - * point for the serial mouse driver. + * This method implements the Open device driver entry + * point for the serial mouse driver. * - * @param[in] major is the mouse device major number - * @param[in] minor is the mouse device minor number - * @param[in] arguments points to device driver arguments + * @param[in] major is the mouse device major number + * @param[in] minor is the mouse device minor number + * @param[in] arg points to device driver arguments */ rtems_device_driver serial_mouse_open( rtems_device_major_number major, @@ -73,14 +74,14 @@ rtems_device_driver serial_mouse_open( ); /** - * @brief Close device driver entry point for the serial mouse driver. + * @brief Close device driver entry point for the serial mouse driver. * - * This method implements the Close device driver entry - * point for the serial mouse driver. + * This method implements the Close device driver entry + * point for the serial mouse driver. * - * @param[in] major is the mouse device major number - * @param[in] minor is the mouse device minor number - * @param[in] arguments points to device driver arguments + * @param[in] major is the mouse device major number + * @param[in] minor is the mouse device minor number + * @param[in] arg points to device driver arguments */ rtems_device_driver serial_mouse_close( rtems_device_major_number major, @@ -89,14 +90,14 @@ rtems_device_driver serial_mouse_close( ); /** - * @brief Read device driver entry point for the serial mouse driver. + * @brief Read device driver entry point for the serial mouse driver. * - * This method implements the Read device driver entry - * point for the serial mouse driver. + * This method implements the Read device driver entry + * point for the serial mouse driver. * - * @param[in] major is the mouse device major number - * @param[in] minor is the mouse device minor number - * @param[in] arguments points to device driver arguments + * @param[in] major is the mouse device major number + * @param[in] minor is the mouse device minor number + * @param[in] arg points to device driver arguments */ rtems_device_driver serial_mouse_read( rtems_device_major_number major, @@ -105,14 +106,14 @@ rtems_device_driver serial_mouse_read( ); /** - * @brief Write device driver entry point for the serial mouse driver. + * @brief Write device driver entry point for the serial mouse driver. * - * This method implements the Write device driver entry - * point for the serial mouse driver. + * This method implements the Write device driver entry + * point for the serial mouse driver. * - * @param[in] major is the mouse device major number - * @param[in] minor is the mouse device minor number - * @param[in] arguments points to device driver arguments + * @param[in] major is the mouse device major number + * @param[in] minor is the mouse device minor number + * @param[in] arg points to device driver arguments */ rtems_device_driver serial_mouse_write( rtems_device_major_number major, @@ -121,14 +122,14 @@ rtems_device_driver serial_mouse_write( ); /** - * @brief IO Control device driver entry point for the serial mouse driver. + * @brief IO Control device driver entry point for the serial mouse driver. * - * This method implements the IO Control device driver entry - * point for the serial mouse driver. + * This method implements the IO Control device driver entry + * point for the serial mouse driver. * - * @param[in] major is the mouse device major number - * @param[in] minor is the mouse device minor number - * @param[in] arguments points to device driver arguments + * @param[in] major is the mouse device major number + * @param[in] minor is the mouse device minor number + * @param[in] arg points to device driver arguments */ rtems_device_driver serial_mouse_control( rtems_device_major_number major, @@ -137,17 +138,17 @@ rtems_device_driver serial_mouse_control( ); /** - * @brief Obtain serial mouse configuration information. + * @brief Obtain serial mouse configuration information. * - * This method is implemented by the BSP or application and - * tells the driver what device to open() and what type of - * mouse is connected. + * This method is implemented by the BSP or application and + * tells the driver what device to open() and what type of + * mouse is connected. * - * @param[in] name will point to a string with the device name - * of the serial port with the mouse connected. - * @param[in] type will point to a string with the type of mouse connected. + * @param[in] name will point to a string with the device name + * of the serial port with the mouse connected. + * @param[in] type will point to a string with the type of mouse connected. * - * @return This method returns true on success and false on error. + * @retval This method returns true on success and false on error. */ bool bsp_get_serial_mouse_device( const char **name, diff --git a/cpukit/libmisc/serdbg/serdbgcnf.h b/cpukit/libmisc/serdbg/serdbgcnf.h index 90e2d80134..9d4087ae69 100644 --- a/cpukit/libmisc/serdbg/serdbgcnf.h +++ b/cpukit/libmisc/serdbg/serdbgcnf.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Adds a GDB remote Debug Stub to an RTEMS System + */ + /*===============================================================*\ | Project: RTEMS configure remote gdb over serial line | +-----------------------------------------------------------------+ diff --git a/cpukit/libmisc/serdbg/termios_printk_cnf.h b/cpukit/libmisc/serdbg/termios_printk_cnf.h index a69926e0e0..03c3090c38 100644 --- a/cpukit/libmisc/serdbg/termios_printk_cnf.h +++ b/cpukit/libmisc/serdbg/termios_printk_cnf.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Adds printk Support via Polled termios + */ + /*===============================================================*\ | Project: RTEMS configure remote gdb over serial line | +-----------------------------------------------------------------+ diff --git a/cpukit/libmisc/shell/shell.h b/cpukit/libmisc/shell/shell.h index eb55361a67..079ef667af 100644 --- a/cpukit/libmisc/shell/shell.h +++ b/cpukit/libmisc/shell/shell.h @@ -1,7 +1,7 @@ /** * @file rtems/shell.h * - * Instantatiate a new terminal shell. + * @brief Instantatiate a New Terminal Shell */ /* diff --git a/cpukit/libmisc/stackchk/internal.h b/cpukit/libmisc/stackchk/internal.h index 9e34b8b2e7..40dde64c47 100644 --- a/cpukit/libmisc/stackchk/internal.h +++ b/cpukit/libmisc/stackchk/internal.h @@ -1,14 +1,22 @@ -/* internal.h +/* + * @file rtems/internal.h * - * This include file contains internal information - * for the RTEMS stack checker. + * @defgroup libmisc_internal Internal Stack Checker Information * - * COPYRIGHT (c) 1989-2006. - * On-Line Applications Research Corporation (OAR). + * @ingroup libmisc + * @brief Stack Checker Internal Information + * + * This include file contains internal information + * for the RTEMS stack checker. + */ + +/* + * COPYRIGHT (c) 1989-2006. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef __INTERNAL_STACK_CHECK_h diff --git a/cpukit/libmisc/stackchk/stackchk.h b/cpukit/libmisc/stackchk/stackchk.h index e4931715c9..0c7e6c5bb5 100644 --- a/cpukit/libmisc/stackchk/stackchk.h +++ b/cpukit/libmisc/stackchk/stackchk.h @@ -1,7 +1,13 @@ -/** @file rtems/stackchk.h +/** + * @file rtems/stackchk.h + * + * @defgroup libmisc_stackchk Stack Checker Mechanism + * + * @ingroup libmisc + * @brief Stack Checker Information * - * This include file contains information necessary to utilize - * and install the stack checker mechanism. + * This include file contains information necessary to utilize + * and install the stack checker mechanism. */ /* @@ -32,37 +38,37 @@ extern "C" { #endif /** - * @brief Checks if current task is blown its stack. + * @brief Checks if current task is blown its stack. * - * This method is used to determine if the current stack pointer - * of the currently executing task is within bounds. + * This method is used to determine if the current stack pointer + * of the currently executing task is within bounds. * - * @return This method returns true if the currently executing task - * has blown its stack. + * @retval This method returns true if the currently executing task + * has blown its stack. * */ bool rtems_stack_checker_is_blown( void ); /** - * @brief Print the stack usage report using printk. + * @brief Print the stack usage report using printk. * - * This method prints a stack usage report for the curently executing - * task. + * This method prints a stack usage report for the curently executing + * task. * - * @note It uses printk to print the report. + * @note It uses printk to print the report. */ void rtems_stack_checker_report_usage( void ); /** - * @brief Print the stack usage report using caller's routine. + * @brief Print the stack usage report using caller's routine. * - * This method prints a stack usage report for the curently executing - * task. + * This method prints a stack usage report for the curently executing + * task. * - * @param[in] context is the context to pass to the print handler - * @param[in] print is the print handler + * @param[in] context is the context to pass to the print handler + * @param[in] print is the print handler * - * @note It uses the caller's routine to print the report. + * @note It uses the caller's routine to print the report. */ void rtems_stack_checker_report_usage_with_plugin( void *context, @@ -76,7 +82,7 @@ void rtems_stack_checker_report_usage_with_plugin( *************************************************************/ /** - * @brief Stack Checker Task Create Extension + * @brief Stack Checker Task Create Extension * * This method is the task create extension for the stack checker. * @@ -92,7 +98,7 @@ bool rtems_stack_checker_create_extension( ); /** - * @brief Stack Checker Task Begin Extension + * @brief Stack Checker Task Begin Extension * * This method is the task begin extension for the stack checker. * @@ -105,7 +111,7 @@ void rtems_stack_checker_begin_extension( ); /** - * @brief Stack Checker Task Context Switch Extension + * @brief Stack Checker Task Context Switch Extension * * This method is the task context switch extension for the stack checker. * diff --git a/cpukit/libmisc/stringto/stringto.h b/cpukit/libmisc/stringto/stringto.h index f643949ed9..8b1687e2a9 100644 --- a/cpukit/libmisc/stringto/stringto.h +++ b/cpukit/libmisc/stringto/stringto.h @@ -1,16 +1,21 @@ /** * @file rtems/stringto.h * + * @defgroup libmisc_conv_help Conversion Helpers + * + * @ingroup libmisc + * @brief Convert String to Pointer (with validation) + * * This file defines the interface to a set of string conversion helpers. */ /* - * COPYRIGHT (c) 2009-2011. - * On-Line Applications Research Corporation (OAR). + * COPYRIGHT (c) 2009-2011. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_STRINGTO_H @@ -25,18 +30,18 @@ #include <rtems.h> /** - * @brief Convert String to Pointer (with validation). + * @brief Convert String to Pointer (with validation). * - * This method converts a string to a pointer (void *) with - * basic numeric validation. + * This method converts a string to a pointer (void *) with + * basic numeric validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_pointer( const char *s, @@ -45,19 +50,19 @@ rtems_status_code rtems_string_to_pointer( ); /** - * @brief Convert String to Unsigned Character (with validation). + * @brief Convert String to Unsigned Character (with validation). * - * This method converts a string to an unsigned character with - * range validation. + * This method converts a string to an unsigned character with + * range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string - * @param[in] base is the expected base of the number + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string + * @param[in] base is the expected base of the number * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_unsigned_char( const char *s, @@ -67,18 +72,18 @@ rtems_status_code rtems_string_to_unsigned_char( ); /** - * @brief Convert String to Int (with validation). + * @brief Convert String to Int (with validation). * - * This method converts a string to an int with range validation. + * This method converts a string to an int with range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string - * @param[in] base is the expected base of the number + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string + * @param[in] base is the expected base of the number * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_int( const char *s, @@ -88,18 +93,18 @@ rtems_status_code rtems_string_to_int( ); /** - * @brief Convert String to Unsigned Int (with validation). + * @brief Convert String to Unsigned Int (with validation). * - * This method converts a string to an unsigned int with range validation. + * This method converts a string to an unsigned int with range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string - * @param[in] base is the expected base of the number + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string + * @param[in] base is the expected base of the number * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_unsigned_int( const char *s, @@ -109,19 +114,19 @@ rtems_status_code rtems_string_to_unsigned_int( ); /** - * @brief Convert String to Long (with validation). + * @brief Convert String to Long (with validation). * - * This method converts a string to a long with - * range validation. + * This method converts a string to a long with + * range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string - * @param[in] base is the expected base of the number + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string + * @param[in] base is the expected base of the number * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_long( const char *s, @@ -131,19 +136,19 @@ rtems_status_code rtems_string_to_long( ); /** - * @brief Convert String to Unsigned Long (with validation). + * @brief Convert String to Unsigned Long (with validation). * - * This method converts a string to an unsigned long with - * range validation. + * This method converts a string to an unsigned long with + * range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string - * @param[in] base is the expected base of the number + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string + * @param[in] base is the expected base of the number * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_unsigned_long( const char *s, @@ -153,19 +158,19 @@ rtems_status_code rtems_string_to_unsigned_long( ); /** - * @brief Convert String to Long Long (with validation). + * @brief Convert String to Long Long (with validation). * - * This method converts a string to a long long with - * range validation. + * This method converts a string to a long long with + * range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string - * @param[in] base is the expected base of the number + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string + * @param[in] base is the expected base of the number * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_long_long( const char *s, @@ -175,19 +180,19 @@ rtems_status_code rtems_string_to_long_long( ); /** - * @brief Convert String to Unsigned Long Long (with validation). + * @brief Convert String to Unsigned Long Long (with validation). * - * This method converts a string to an unsigned character with - * range validation. + * This method converts a string to an unsigned character with + * range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string - * @param[in] base is the expected base of the number + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string + * @param[in] base is the expected base of the number * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_unsigned_long_long( const char *s, @@ -197,17 +202,17 @@ rtems_status_code rtems_string_to_unsigned_long_long( ); /** - * @brief Convert String to Float (with validation). + * @brief Convert String to Float (with validation). * - * This method converts a string to a float with range validation. + * This method converts a string to a float with range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_float( const char *s, @@ -216,17 +221,17 @@ rtems_status_code rtems_string_to_float( ); /** - * @brief Convert String to Double (with validation). + * @brief Convert String to Double (with validation). * - * This method converts a string to a double with range validation. + * This method converts a string to a double with range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_double( const char *s, @@ -235,17 +240,17 @@ rtems_status_code rtems_string_to_double( ); /** - * @brief Convert String to long double (with validation). + * @brief Convert String to long double (with validation). * - * This method converts a string to a long double with range validation. + * This method converts a string to a long double with range validation. * - * @param[in] s is the string to convert - * @param[in] n points to the variable to place the converted output in - * @param[in] endptr is used to keep track of the position in the string + * @param[in] s is the string to convert + * @param[in] n points to the variable to place the converted output in + * @param[in] endptr is used to keep track of the position in the string * - * @return This method returns RTEMS_SUCCESSFUL on successful conversion - * and *n is filled in. Otherwise, the status indicates the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL on successful conversion + * and *n is filled in. Otherwise, the status indicates the + * source of the error. */ rtems_status_code rtems_string_to_long_double( const char *s, @@ -254,4 +259,4 @@ rtems_status_code rtems_string_to_long_double( ); #endif -/**@}*/
\ No newline at end of file +/**@}*/ diff --git a/cpukit/libmisc/untar/untar.h b/cpukit/libmisc/untar/untar.h index 81cbd0e8ba..84b0efe62e 100644 --- a/cpukit/libmisc/untar/untar.h +++ b/cpukit/libmisc/untar/untar.h @@ -1,6 +1,8 @@ /** - * @file rtems/untar.h + * @file * + * @brief Untar an Image + * * This file defines the interface to methods which can untar an image. */ diff --git a/cpukit/libnetworking/lib/ftpfs.c b/cpukit/libnetworking/lib/ftpfs.c index 6ce25435c5..784ff48601 100644 --- a/cpukit/libnetworking/lib/ftpfs.c +++ b/cpukit/libnetworking/lib/ftpfs.c @@ -64,6 +64,8 @@ * Connection entry for each open file stream. */ typedef struct { + off_t file_size; + /** * Control connection socket. */ @@ -931,6 +933,93 @@ static int rtems_ftpfs_open_data_connection_passive( return 0; } +typedef enum { + RTEMS_FTPFS_SIZE_START = 0, + RTEMS_FTPFS_SIZE_SPACE, + RTEMS_FTPFS_SIZE_NUMBER, + RTEMS_FTPFS_SIZE_NL +} rtems_ftpfs_size_state; + +typedef struct { + rtems_ftpfs_size_state state; + size_t index; + off_t size; +} rtems_ftpfs_size_entry; + +static void rtems_ftpfs_size_parser( + const char* buf, + size_t len, + void *arg +) +{ + rtems_ftpfs_size_entry *se = arg; + size_t i = 0; + + for (i = 0; se->size >= 0 && i < len; ++i, ++se->index) { + int c = buf [i]; + + switch (se->state) { + case RTEMS_FTPFS_SIZE_START: + if (se->index == 2) { + se->state = RTEMS_FTPFS_SIZE_SPACE; + } + break; + case RTEMS_FTPFS_SIZE_SPACE: + if (c == ' ') { + se->state = RTEMS_FTPFS_SIZE_NUMBER; + } else { + se->size = -1; + } + break; + case RTEMS_FTPFS_SIZE_NUMBER: + if (isdigit(c)) { + se->size = 10 * se->size + c - '0'; + } else if (c == '\r') { + se->state = RTEMS_FTPFS_SIZE_NL; + } else { + se->size = -1; + } + break; + case RTEMS_FTPFS_SIZE_NL: + if (c != '\n') { + se->size = -1; + } + break; + default: + se->size = -1; + break; + } + } +} + +static void rtems_ftpfs_get_file_size(rtems_ftpfs_entry *e, bool verbose) +{ + if (e->file_size < 0) { + if (e->write) { + e->file_size = 0; + } else { + rtems_ftpfs_size_entry se; + rtems_ftpfs_reply reply = RTEMS_FTPFS_REPLY_ERROR; + + memset(&se, 0, sizeof(se)); + + reply = rtems_ftpfs_send_command_with_parser( + e, + "SIZE ", + e->filename, + rtems_ftpfs_size_parser, + &se, + verbose + ); + if (reply == RTEMS_FTPFS_REPLY_2 && se.size >= 0) { + e->file_size = se.size; + } else { + e->file_size = 0; + } + } + } +} + static int rtems_ftpfs_open( rtems_libio_t *iop, const char *path, @@ -955,6 +1044,10 @@ static int rtems_ftpfs_open( } if (eno == 0) { + rtems_ftpfs_get_file_size(e, verbose); + } + + if (eno == 0) { const char *file_command = e->write ? "STOR " : "RETR "; /* Open passive data connection */ @@ -1052,6 +1145,8 @@ static ssize_t rtems_ftpfs_write( out += rv; todo -= (size_t) rv; + + e->file_size += rv; } return (ssize_t) (count - todo); @@ -1119,6 +1214,7 @@ static void rtems_ftpfs_eval_path( e->ino = me->ino; rtems_libio_unlock(); + e->file_size = -1; e->ctrl_socket = -1; eno = rtems_ftpfs_open_ctrl_connection( @@ -1238,65 +1334,6 @@ static int rtems_ftpfs_ioctl( return 0; } -typedef enum { - RTEMS_FTPFS_SIZE_START = 0, - RTEMS_FTPFS_SIZE_SPACE, - RTEMS_FTPFS_SIZE_NUMBER, - RTEMS_FTPFS_SIZE_NL -} rtems_ftpfs_size_state; - -typedef struct { - rtems_ftpfs_size_state state; - size_t index; - off_t size; -} rtems_ftpfs_size_entry; - -static void rtems_ftpfs_size_parser( - const char* buf, - size_t len, - void *arg -) -{ - rtems_ftpfs_size_entry *se = arg; - size_t i = 0; - - for (i = 0; se->size >= 0 && i < len; ++i, ++se->index) { - int c = buf [i]; - - switch (se->state) { - case RTEMS_FTPFS_SIZE_START: - if (se->index == 2) { - se->state = RTEMS_FTPFS_SIZE_SPACE; - } - break; - case RTEMS_FTPFS_SIZE_SPACE: - if (c == ' ') { - se->state = RTEMS_FTPFS_SIZE_NUMBER; - } else { - se->size = -1; - } - break; - case RTEMS_FTPFS_SIZE_NUMBER: - if (isdigit(c)) { - se->size = 10 * se->size + c - '0'; - } else if (c == '\r') { - se->state = RTEMS_FTPFS_SIZE_NL; - } else { - se->size = -1; - } - break; - case RTEMS_FTPFS_SIZE_NL: - if (c != '\n') { - se->size = -1; - } - break; - default: - se->size = -1; - break; - } - } -} - /* * The stat() support is intended only for the cp shell command. Each request * will return that we have a regular file with read, write and execute @@ -1319,24 +1356,9 @@ static int rtems_ftpfs_fstat( if (e->do_size_command) { const rtems_ftpfs_mount_entry *me = loc->mt_entry->fs_info; - rtems_ftpfs_size_entry se; - rtems_ftpfs_reply reply = RTEMS_FTPFS_REPLY_ERROR; - memset(&se, 0, sizeof(se)); - - reply = rtems_ftpfs_send_command_with_parser( - e, - "SIZE ", - e->filename, - rtems_ftpfs_size_parser, - &se, - me->verbose - ); - if (reply == RTEMS_FTPFS_REPLY_2 && se.size >= 0) { - st->st_size = se.size; - } else { - eno = EIO; - } + rtems_ftpfs_get_file_size(e, me->verbose); + st->st_size = e->file_size; } else { e->do_size_command = true; } diff --git a/cpukit/libnetworking/nfs/bootp_subr.c b/cpukit/libnetworking/nfs/bootp_subr.c index 0645b89431..911e322879 100644 --- a/cpukit/libnetworking/nfs/bootp_subr.c +++ b/cpukit/libnetworking/nfs/bootp_subr.c @@ -380,7 +380,9 @@ bootpc_call( auio.uio_rw = UIO_WRITE; auio.uio_offset = 0; auio.uio_resid = sizeof(*call); +#ifndef __rtems__ auio.uio_procp = procp; +#endif error = sosend(so, nam, &auio, NULL, NULL, 0); if (error) { printf("bootpc_call: sosend: %d\n", error); @@ -414,7 +416,9 @@ bootpc_call( auio.uio_rw = UIO_READ; auio.uio_offset = 0; auio.uio_resid = sizeof(*reply); +#ifndef __rtems__ auio.uio_procp = procp; +#endif rcvflg = 0; error = soreceive(so, NULL, &auio, NULL, NULL, &rcvflg); diff --git a/cpukit/libnetworking/rtems/ftpfs.h b/cpukit/libnetworking/rtems/ftpfs.h index 8b1de3ca10..28ce55caf4 100644 --- a/cpukit/libnetworking/rtems/ftpfs.h +++ b/cpukit/libnetworking/rtems/ftpfs.h @@ -70,9 +70,8 @@ extern "C" { * * For the data transfer passive (= default) and active (= fallback) mode are * supported. - * - * @{ */ +/**@{**/ /** * @brief Well-known port number for FTP control connection. diff --git a/cpukit/libqos/qreslib.h b/cpukit/libqos/qreslib.h index 8b5af82ca5..110cc2f6be 100644 --- a/cpukit/libqos/qreslib.h +++ b/cpukit/libqos/qreslib.h @@ -1,8 +1,11 @@ /** * @file qreslib.h * - * This include file contains all the constants and structures associated - * with the QoS RES library in RTEMS. + * @brief Constants and Structures Associated + * with the QoS RES library in RTEMS + * + * This include file contains all the constants and structures + * associated with the QoS RES library in RTEMS. * * @note The library is available only together with CBS scheduler. */ diff --git a/cpukit/posix/include/aio.h b/cpukit/posix/include/aio.h index f4f824ab69..8896fa168e 100644 --- a/cpukit/posix/include/aio.h +++ b/cpukit/posix/include/aio.h @@ -1,6 +1,8 @@ /** - * @file aio.h + * @file * + * @brief POSIX Asynchronous Input and Output + * * This file contains the definitions related to POSIX Asynchronous * Input and Output, */ @@ -26,10 +28,12 @@ extern "C" { /** * @defgroup POSIX_AIO POSIX Asynchronous I/O Support * - * @ingroup POSIX + * @ingroup POSIXAPI * * @brief POSIX Asynchronous Input and Output + * */ +/**@{**/ #if defined(_POSIX_ASYNCHRONOUS_IO) @@ -135,16 +139,18 @@ ssize_t aio_return( ); /** - * @brief Cancel Asynchronous I/O Operation + * @brief Cancel asynchronous I/O operation. * - * 6.7.7 Cancel Asynchronous I/O Operation, P1003.1b-1993, p. 163 + * 6.7.7 Cancel Asynchronous I/O Operation, P1003.1b-1993, p. 163 * - * @param[in] filedes is the file descriptor - * @param[in] aiocbp is the asynchronous I/O control block + * @param[in] filedes is the file descriptor + * @param[in] aiocbp is a pointer to the asynchronous I/O control block * - * @return This method returns AIO_CANCELED if the requested operation(s) - * were canceled. Otherwise, AIO_NOTCANCELED is returned indicating - * that at least one of the requested operation(s) cannot be canceled + * @retval AIO_CANCELED The requested operation(s) were canceled. + * @retval AIO_NOTCANCELED Some of the requested operation(s) cannot be + * canceled since they are in progress. + * @retval AIO_ALLDONE None of the requested operation(s) could be canceled + * since they are already complete */ int aio_cancel( int filedes, @@ -176,6 +182,8 @@ int aio_fsync( #endif /* _POSIX_ASYNCHRONOUS_IO */ +/** @} */ + #ifdef __cplusplus } #endif diff --git a/cpukit/posix/include/mqueue.h b/cpukit/posix/include/mqueue.h index a35d94ccc4..34a60657a7 100644 --- a/cpukit/posix/include/mqueue.h +++ b/cpukit/posix/include/mqueue.h @@ -1,6 +1,8 @@ /** - * @file mqueue.h + * @file * + * @brief POSIX Message Queues + * * This file contains the definitions related to POSIX Message Queues. * * The structure of the routines is identical to that of POSIX @@ -39,11 +41,12 @@ #include <rtems/score/object.h> /** - * @defgroup POSIX_MQUEUE Message Queues + * @defgroup POSIX_MQUEUE POSIX Message Queues * - * @ingroup POSIX + * @ingroup POSIXAPI + * */ -/**@{*/ +/**@{**/ #ifdef __cplusplus extern "C" { @@ -54,14 +57,14 @@ extern "C" { */ /** - * Message queue id type. + * Message queue id type. * - * @note Use uint32_t since all POSIX Ids are 32-bit currently. + * NOTE: Use uint32_t since all POSIX Ids are 32-bit currently. */ typedef uint32_t mqd_t; /** - * This is the message queue attributes structure. + * This is the message queue attributes structure. */ struct mq_attr { /** This is the message queue flags */ @@ -75,7 +78,7 @@ struct mq_attr { }; /** - * 15.2.2 Open a Message Queue, P1003.1b-1993, p. 272 + * 15.2.2 Open a Message Queue, P1003.1b-1993, p. 272 */ mqd_t mq_open( const char *name, @@ -84,37 +87,37 @@ mqd_t mq_open( ); /** - * 15.2.2 Close a Message Queue, P1003.1b-1993, p. 275 + * 15.2.2 Close a Message Queue, P1003.1b-1993, p. 275 */ int mq_close( mqd_t mqdes ); /** - * @brief Remove a Message Queue + * @brief Remove a message queue. * - * 15.2.2 Remove a Message Queue, P1003.1b-1993, p. 276 + * 15.2.2 Remove a Message Queue, P1003.1b-1993, p. 276 * - * NOTE: The structure of the routines is identical to that of POSIX - * Message_queues to leave the option of having unnamed message - * queues at a future date. They are currently not part of the - * POSIX standard but unnamed message_queues are. This is also - * the reason for the apparently unnecessary tracking of - * the process_shared attribute. [In addition to the fact that - * it would be trivial to add pshared to the mq_attr structure - * and have process private message queues.] + * NOTE: The structure of the routines is identical to that of POSIX + * Message_queues to leave the option of having unnamed message + * queues at a future date. They are currently not part of the + * POSIX standard but unnamed message_queues are. This is also + * the reason for the apparently unnecessary tracking of + * the process_shared attribute. [In addition to the fact that + * it would be trivial to add pshared to the mq_attr structure + * and have process private message queues.] * - * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open - * time. + * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open + * time. */ int mq_unlink( const char *name ); /** - * 15.2.4 Send a Message to a Message Queue, P1003.1b-1993, p. 277 + * 15.2.4 Send a Message to a Message Queue, P1003.1b-1993, p. 277 * - * @note P1003.4b/D8, p. 45 adds mq_timedsend(). + * NOTE; P1003.4b/D8, p. 45 adds mq_timedsend(). */ int mq_send( mqd_t mqdes, @@ -128,11 +131,9 @@ int mq_send( #include <time.h> /** - * @brief Send a Message to a Message Queue + * @brief Send a message to a message queue. * - * 15.2.4 Send a Message to a Message Queue, P1003.1b-1993, p. 277 - * - * @note P1003.4b/D8, p. 45 adds mq_timedsend(). + * @see mq_send() */ int mq_timedsend( mqd_t mqdes, @@ -145,11 +146,11 @@ int mq_timedsend( #endif /* _POSIX_TIMEOUTS */ /** - * @brief Receive a Message From a Message Queue + * @brief Receive a message from a message queue. * - * 15.2.5 Receive a Message From a Message Queue, P1003.1b-1993, p. 279 + * 15.2.5 Receive a Message From a Message Queue, P1003.1b-1993, p. 279 * - * @note P1003.4b/D8, p. 45 adds mq_timedreceive(). + * NOTE: P1003.4b/D8, p. 45 adds mq_timedreceive(). */ ssize_t mq_receive( mqd_t mqdes, @@ -173,7 +174,7 @@ ssize_t mq_timedreceive( #if defined(_POSIX_REALTIME_SIGNALS) /** - * @brief Notify Process that a Message is Available on a Queue + * @brief Notify process that a message is available on a queue. * * 15.2.6 Notify Process that a Message is Available on a Queue, * P1003.1b-1993, p. 280 @@ -186,7 +187,7 @@ int mq_notify( #endif /* _POSIX_REALTIME_SIGNALS */ /** - * @brief Set Message Queue Attributes + * @brief Set message queue attributes. * * 15.2.7 Set Message Queue Attributes, P1003.1b-1993, p. 281 */ @@ -205,11 +206,13 @@ int mq_getattr( struct mq_attr *mqstat ); +/** @} */ + #ifdef __cplusplus } #endif #endif /* _POSIX_MESSAGE_PASSING */ -/**@}*/ + #endif /* end of include file */ diff --git a/cpukit/posix/include/rtems/posix/aio_misc.h b/cpukit/posix/include/rtems/posix/aio_misc.h index da926086ac..4dfcb592c2 100644 --- a/cpukit/posix/include/rtems/posix/aio_misc.h +++ b/cpukit/posix/include/rtems/posix/aio_misc.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/aio_misc.h + * @file + * + * @brief POSIX Asynchronous Input and Output Private Support * * This defines private information for the AIO implementation. */ diff --git a/cpukit/posix/include/rtems/posix/barrier.h b/cpukit/posix/include/rtems/posix/barrier.h index ce75358d5e..73c63f7162 100644 --- a/cpukit/posix/include/rtems/posix/barrier.h +++ b/cpukit/posix/include/rtems/posix/barrier.h @@ -1,14 +1,16 @@ /** - * @file rtems/posix/barrier.h + * @file + * + * @brief Constants and Structures Associated with the POSIX Barrier Manager * - * This include file contains all the constants and structures associated - * with the POSIX Barrier Manager. + * This include file contains all the constants and structures associated + * with the POSIX Barrier Manager. * - * Directives provided are: + * Directives provided are: * - * - create a barrier - * - delete a barrier - * - wait for a barrier + * - create a barrier + * - delete a barrier + * - wait for a barrier */ /* @@ -23,6 +25,17 @@ #ifndef _RTEMS_POSIX_BARRIER_H #define _RTEMS_POSIX_BARRIER_H +/** + * @defgroup POSIXBarrier POSIX Barriers + * + * @ingroup POSIXAPI + * + * This encapsulates functionality which implements the RTEMS API + * Barrier Manager. + * + */ +/**@{**/ + #ifdef __cplusplus extern "C" { #endif @@ -31,7 +44,7 @@ extern "C" { #include <rtems/score/corebarrier.h> /** - * This type defines the control block used to manage each barrier. + * This type defines the control block used to manage each barrier. */ typedef struct { @@ -49,26 +62,22 @@ typedef struct { POSIX_EXTERN Objects_Information _POSIX_Barrier_Information; /** - * @brief _POSIX_Barrier_Manager_initialization + * @brief POSIX barrier manager initialization. * - * This routine performs the initialization necessary for this manager. - * - * @param[in] maximum_barriers is the total number of barriers allowed to - * concurrently be active in the system. + * This routine performs the initialization necessary for this manager. */ void _POSIX_Barrier_Manager_initialization(void); /** - * @brief _POSIX_Barrier_Translate_core_barrier_return_code ( - * - * This routine translates SuperCore Barrier status codes into the - * corresponding POSIX ones. + * @brief POSIX translate barrier return code. + * + * This routine translates SuperCore Barrier status codes into the + * corresponding POSIX ones. * + * @param[in] the_barrier_status is the SuperCore status. * - * @param[in] the_barrier_status is the SuperCore status. - * - * @return the corresponding POSIX status + * @return the corresponding POSIX status */ int _POSIX_Barrier_Translate_core_barrier_return_code( CORE_barrier_Status the_barrier_status @@ -78,6 +87,8 @@ int _POSIX_Barrier_Translate_core_barrier_return_code( #include <rtems/posix/barrier.inl> #endif +/** @} */ + #ifdef __cplusplus } #endif diff --git a/cpukit/posix/include/rtems/posix/cancel.h b/cpukit/posix/include/rtems/posix/cancel.h index 06b8efd645..c1fff9c04d 100644 --- a/cpukit/posix/include/rtems/posix/cancel.h +++ b/cpukit/posix/include/rtems/posix/cancel.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/cancel.h + * @file + * + * @brief POSIX Thread Cancelation Support * * This file contains the prototypes and data types used to implement * POSIX thread cancelation. @@ -20,7 +22,7 @@ #include <rtems/posix/threadsup.h> /** - * This structure is used to manage the cancelation handlers. + * This structure is used to manage the cancelation handlers. */ typedef struct { /** This field is the Chain Node so we can put these on lists. */ @@ -32,25 +34,25 @@ typedef struct { } POSIX_Cancel_Handler_control; /** - * @brief _POSIX_Threads_cancel_run + * @brief POSIX run thread cancelation. * - * This support routine runs through the chain of cancel handlers that - * have been registered and executes them. + * This support routine runs through the chain of cancel handlers that + * have been registered and executes them. * - * @param[in] the_thread is the thread whose cancelation handlers - * should be run + * @param[in] the_thread is a pointer to the thread whose cancelation handlers + * should be run */ void _POSIX_Threads_cancel_run( Thread_Control *the_thread ); /** - * @brief _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch + * @brief POSIX evaluate thread cancelation and enable dispatch. * - * This routine separates a piece of code that existed as part of - * another routine, but had to be separated to improve coverage. + * This routine separates a piece of code that existed as part of + * another routine, but had to be separated to improve coverage. * - * @param[in] the_thread is the thread to evaluate canceling + * @param[in] the_thread is a pointer to the thread to evaluate canceling */ void _POSIX_Thread_Evaluate_cancellation_and_enable_dispatch ( Thread_Control *the_thread diff --git a/cpukit/posix/include/rtems/posix/cond.h b/cpukit/posix/include/rtems/posix/cond.h index 93b5b4cf2a..8ff34e0ce6 100644 --- a/cpukit/posix/include/rtems/posix/cond.h +++ b/cpukit/posix/include/rtems/posix/cond.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/cond.h + * @file + * + * @brief POSIX Condition Variables Private Support * * This include file contains all the private support information for * POSIX condition variables. @@ -18,11 +20,12 @@ #define _RTEMS_POSIX_COND_H /** - * @defgroup POSIX_COND_VARS Condition Variables + * @defgroup POSIX_COND_VARS POSIX Condition Variables * - * @ingroup POSIX + * @ingroup POSIXAPI + * */ -/**@{*/ +/**@{**/ #ifdef __cplusplus extern "C" { #endif @@ -132,24 +135,21 @@ RTEMS_INLINE_ROUTINE bool _POSIX_Condition_variables_Is_null ( POSIX_Condition_variables_Control *the_condition_variable ); -/* - * @brief Implements wake up version of the "signal" operation - * - * _POSIX_Condition_variables_Signal_support - * - * DESCRIPTION: +/** + * @brief Implements wake up version of the "signal" operation. + * + * DESCRIPTION: * - * A support routine which implements guts of the broadcast and single task - * wake up version of the "signal" operation. + * A support routine which implements guts of the broadcast and single task + * wake up version of the "signal" operation. */ - int _POSIX_Condition_variables_Signal_support( pthread_cond_t *cond, bool is_broadcast ); /** - * @brief POSIX Condition Variables Wait Support + * @brief POSIX condition variables wait support. * * DESCRIPTION: * @@ -180,9 +180,11 @@ POSIX_Condition_variables_Control *_POSIX_Condition_variables_Get ( #include <rtems/posix/cond.inl> +/** @} */ + #ifdef __cplusplus } #endif -/**@}*/ + #endif /* end of include file */ diff --git a/cpukit/posix/include/rtems/posix/config.h b/cpukit/posix/include/rtems/posix/config.h index ddd63acae6..460ddcb2a9 100644 --- a/cpukit/posix/include/rtems/posix/config.h +++ b/cpukit/posix/include/rtems/posix/config.h @@ -1,6 +1,8 @@ /** - * @file rtems/posix/config.h + * @file * + * @brief User Defined Configuration Parameters Specific For The POSIX API + * * This include file contains the table of user defined configuration * parameters specific for the POSIX API. */ @@ -60,10 +62,10 @@ typedef struct { } posix_api_configuration_table; /** - * @brief POSIX API Configuration Table + * @brief POSIX API configuration table. * - * This is the POSIX API Configuration Table expected to be generated - * by confdefs.h. + * This is the POSIX API Configuration Table expected to be generated + * by confdefs.h. */ extern posix_api_configuration_table Configuration_POSIX_API; diff --git a/cpukit/posix/include/rtems/posix/key.h b/cpukit/posix/include/rtems/posix/key.h index edcaa42685..0bb1dbe6a8 100644 --- a/cpukit/posix/include/rtems/posix/key.h +++ b/cpukit/posix/include/rtems/posix/key.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/key.h + * @file + * + * @brief POSIX Key Private Support * * This include file contains all the private support information for * POSIX key. @@ -20,20 +22,22 @@ #include <rtems/score/object.h> /** - * @defgroup POSIX_KEY Key + * @defgroup POSIX_KEY POSIX Key * - * @ingroup POSIX + * @ingroup POSIXAPI + * */ -/**@{*/ +/**@{**/ + #ifdef __cplusplus extern "C" { #endif /** - * This is the data Structure used to manage a POSIX key. + * This is the data Structure used to manage a POSIX key. * - * @note The Values is a table indexed by the index portion of the - * ID of the currently executing thread. + * NOTE: The Values is a table indexed by the index portion of the + * ID of the currently executing thread. */ typedef struct { /** This field is the Object control structure. */ @@ -45,52 +49,53 @@ typedef struct { } POSIX_Keys_Control; /** - * The following defines the information control block used to manage - * this class of objects. + * The following defines the information control block used to manage + * this class of objects. */ POSIX_EXTERN Objects_Information _POSIX_Keys_Information; /** - * @brief POSIX Keys Manager Initialization + * @brief POSIX keys manager initialization. * - * This routine performs the initialization necessary for this manager. + * This routine performs the initialization necessary for this manager. */ void _POSIX_Key_Manager_initialization(void); /** - * @brief Thread-Specific Data Key Create + * @brief Create thread-specific data POSIX key. * - * This function executes all the destructors associated with the thread's - * keys. This function will execute until all values have been set to NULL. + * This function executes all the destructors associated with the thread's + * keys. This function will execute until all values have been set to NULL. * - * @param[in] thread is the thread whose keys should have all their - * destructors run. + * @param[in] thread is a pointer to the thread whose keys should have + * all their destructors run. * - * @note This is the routine executed when a thread exits to - * run through all the keys and do the destructor action. + * NOTE: This is the routine executed when a thread exits to + * run through all the keys and do the destructor action. */ void _POSIX_Keys_Run_destructors( Thread_Control *thread ); /** - * @brief Free Key Memory + * @brief Free a POSIX key table memory. * - * This memory frees the key table memory associated with @a the_key. + * This memory frees the key table memory associated with @a the_key. * - * @param[in] the_key is the POSIX key to free the table memory of. + * @param[in] the_key is a pointer to the POSIX key to free + * the table memory of. */ void _POSIX_Keys_Free_memory( POSIX_Keys_Control *the_key ); /** - * @brief _POSIX_Keys_Free + * @brief Free a POSIX keys control block. * - * This routine frees a keys control block to the - * inactive chain of free keys control blocks. + * This routine frees a keys control block to the + * inactive chain of free keys control blocks. * - * @param[in] the_key is the POSIX key to free. + * @param[in] the_key is a pointer to the POSIX key to free. */ RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( POSIX_Keys_Control *the_key @@ -98,9 +103,11 @@ RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( #include <rtems/posix/key.inl> +/** @} */ + #ifdef __cplusplus } #endif -/**@}*/ + #endif /* end of include file */ diff --git a/cpukit/posix/include/rtems/posix/mqueue.h b/cpukit/posix/include/rtems/posix/mqueue.h index 582d5b73b2..d6f370cbf8 100644 --- a/cpukit/posix/include/rtems/posix/mqueue.h +++ b/cpukit/posix/include/rtems/posix/mqueue.h @@ -1,20 +1,22 @@ /** - * @file rtems/posix/mqueue.h + * @file + * + * @brief POSIX Message Queues Private Private Support * * This include file contains all the private support information for * POSIX Message Queues. * - * The structure of the routines is identical to that of POSIX - * Message_queues to leave the option of having unnamed message - * queues at a future date. They are currently not part of the - * POSIX standard but unnamed message_queues are. This is also - * the reason for the apparently unnecessary tracking of - * the process_shared attribute. [In addition to the fact that - * it would be trivial to add pshared to the mq_attr structure - * and have process private message queues.] - * - * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open - * time. + * The structure of the routines is identical to that of POSIX + * Message_queues to leave the option of having unnamed message + * queues at a future date. They are currently not part of the + * POSIX standard but unnamed message_queues are. This is also + * the reason for the apparently unnecessary tracking of + * the process_shared attribute. [In addition to the fact that + * it would be trivial to add pshared to the mq_attr structure + * and have process private message queues.] + * + * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open + * time. */ /* @@ -36,19 +38,16 @@ #include <rtems/posix/posixapi.h> /** - * @defgroup POSIX_MQUEUE_P Message Queues Private Support Information + * @defgroup POSIX_MQUEUE_P Message Queues Private Support * - * @ingroup POSIX + * @ingroup POSIXAPI + * */ -/**@{*/ +/**@{**/ #ifdef __cplusplus extern "C" { #endif -/** - * @ingroup POSIX_MQUEUE - */ - /* * Data Structure used to manage a POSIX message queue */ @@ -78,24 +77,24 @@ typedef struct { POSIX_EXTERN Objects_Information _POSIX_Message_queue_Information; POSIX_EXTERN Objects_Information _POSIX_Message_queue_Information_fds; -/* - * @brief Initializes message_queue Manager Related Data Structures +/** + * @brief Initialize message_queue manager related data structures. * - * DESCRIPTION: + * DESCRIPTION: * - * This routine performs the initialization necessary for this manager. + * This routine performs the initialization necessary for this manager. * - * NOTE: The structure of the routines is identical to that of POSIX - * Message_queues to leave the option of having unnamed message - * queues at a future date. They are currently not part of the - * POSIX standard but unnamed message_queues are. This is also - * the reason for the apparently unnecessary tracking of - * the process_shared attribute. [In addition to the fact that - * it would be trivial to add pshared to the mq_attr structure - * and have process private message queues.] + * NOTE: The structure of the routines is identical to that of POSIX + * Message_queues to leave the option of having unnamed message + * queues at a future date. They are currently not part of the + * POSIX standard but unnamed message_queues are. This is also + * the reason for the apparently unnecessary tracking of + * the process_shared attribute. [In addition to the fact that + * it would be trivial to add pshared to the mq_attr structure + * and have process private message queues.] * - * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open - * time. + * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open + * time. * */ @@ -120,12 +119,12 @@ int _POSIX_Message_queue_Create_support( ); /** - * @brief POSIX Delete Message Queue + * @brief Delete a POSIX message queue. * - * DESCRIPTION: + * DESCRIPTION: * - * This routine supports the mq_unlink and mq_close routines by - * doing most of the work involved with removing a message queue. + * This routine supports the mq_unlink and mq_close routines by + * doing most of the work involved with removing a message queue. */ void _POSIX_Message_queue_Delete( POSIX_Message_queue_Control *the_mq @@ -271,9 +270,11 @@ int _POSIX_Message_queue_Translate_core_message_queue_return_code( #include <rtems/posix/mqueue.inl> +/** @} */ + #ifdef __cplusplus } #endif -/**@}*/ + #endif /* end of include file */ diff --git a/cpukit/posix/include/rtems/posix/mutex.h b/cpukit/posix/include/rtems/posix/mutex.h index 727745ae67..f228644377 100644 --- a/cpukit/posix/include/rtems/posix/mutex.h +++ b/cpukit/posix/include/rtems/posix/mutex.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/mutex.h + * @file + * + * @brief POSIX MUTEX Support * * This include file contains all the private support information for * POSIX mutex's. @@ -24,10 +26,12 @@ extern "C" { /** * @defgroup POSIX_MUTEX POSIX Mutex Support * - * @ingroup POSIX + * @ingroup POSIXAPI * * @brief Private Support Information for POSIX Mutex + * */ +/**@{**/ #include <rtems/score/coremutex.h> #include <pthread.h> @@ -138,16 +142,28 @@ int _POSIX_Mutex_Lock_support( ); /** - * @brief POSIX Mutex Translate Core Mutex Return Code - * - * DESCRIPTION: - * - * A support routine which converts core mutex status codes into the - * appropriate POSIX status values. - * - * @param[in] the_mutex_status is the mutex status code to translate - * - * @return the translated POSIX status code + * @brief Convert core mutex status codes into the appropriate POSIX status + * values. + * + * DESCRIPTION: + * + * A support routine which converts core mutex status codes into the + * appropriate POSIX status values. + * + * @param[in] the_mutex_status is the mutex status code to translate + * + * @retval 0 Mutex status code indicates the operation completed successfully. + * @retval EBUSY Mutex status code indicates that the operation unable to + * complete immediately because the resource was unavailable. + * @retval EDEADLK Mutex status code indicates that an attempt was made to + * relock a mutex for which nesting is not configured. + * @retval EPERM Mutex status code indicates that an attempt was made to + * release a mutex by a thread other than the thread which locked it. + * @retval EINVAL Mutex status code indicates that the thread was blocked + * waiting for an operation to complete and the mutex was deleted. + * @retval ETIMEDOUT Mutex status code indicates that the calling task was + * willing to block but the operation was unable to complete within the time + * allotted because the resource never became available. */ int _POSIX_Mutex_Translate_core_mutex_return_code( @@ -198,5 +214,7 @@ POSIX_Mutex_Control *_POSIX_Mutex_Get_interrupt_disable ( } #endif +/** @} */ + #endif /* end of include file */ diff --git a/cpukit/posix/include/rtems/posix/posixapi.h b/cpukit/posix/include/rtems/posix/posixapi.h index cb61ba0036..6ae5dfabfd 100644 --- a/cpukit/posix/include/rtems/posix/posixapi.h +++ b/cpukit/posix/include/rtems/posix/posixapi.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/posixapi.h + * @file + * + * @brief POSIX API Implementation * * This include file defines the top level interface to the POSIX API * implementation in RTEMS. @@ -21,27 +23,35 @@ #include <rtems/score/object.h> /** - * @brief Initialize POSIX API + * @defgroup POSIXAPI RTEMS POSIX API * - * This method is responsible for initializing each of the POSIX - * API managers. + * RTEMS POSIX API definitions and modules. + * + */ +/**@{**/ + +/** + * @brief Initialize POSIX API. + * + * This method is responsible for initializing each of the POSIX + * API managers. */ void _POSIX_API_Initialize(void); /** - * @brief Queries the object identifier @a id for a @a name. + * @brief Queries the object identifier @a id for a @a name. * - * @param[in] information Object information. - * @param[in] name Zero terminated name string to look up. - * @param[out] id Pointer for identifier. The pointer must be valid. - * @param[out] len Pointer for string length. The pointer must be valid. + * @param[in] information Object information. + * @param[in] name Zero terminated name string to look up. + * @param[out] id Pointer for identifier. The pointer must be valid. + * @param[out] len Pointer for string length. The pointer must be valid. * - * @retval 0 Successful operation. - * @retval EINVAL The @a name pointer is @c NULL or the @a name string has - * zero length. - * @retval ENAMETOOLONG The @a name string length is greater than or equal to - * @c NAME_MAX. - * @retval ENOENT Found no corresponding identifier. + * @retval 0 Successful operation. + * @retval EINVAL The @a name pointer is @c NULL or the @a name string has + * zero length. + * @retval ENAMETOOLONG The @a name string length is greater than or equal to + * @c NAME_MAX. + * @retval ENOENT Found no corresponding identifier. */ int _POSIX_Name_to_id( Objects_Information *information, @@ -50,5 +60,7 @@ int _POSIX_Name_to_id( size_t *len ); +/** @} */ + #endif /* end of include file */ diff --git a/cpukit/posix/include/rtems/posix/priority.h b/cpukit/posix/include/rtems/posix/priority.h index a6a3c289da..e9ee2f900b 100644 --- a/cpukit/posix/include/rtems/posix/priority.h +++ b/cpukit/posix/include/rtems/posix/priority.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/priority.h + * @file + * + * @brief POSIX Priority Support * * This include file defines the interface to the POSIX priority * implementation. @@ -20,28 +22,30 @@ /** * @defgroup POSIX_PRIORITY POSIX Priority Support * - * @ingroup POSIX + * @ingroup POSIXAPI * * @brief Interface to the POSIX Priority Implementation + * */ +/**@{**/ #include <rtems/score/priority.h> /** - * 1003.1b-1993,2.2.2.80 definition of priority, p. 19 + * 1003.1b-1993,2.2.2.80 definition of priority, p. 19 * - * "Numerically higher values represent higher priorities." + * "Numerically higher values represent higher priorities." * - * Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API. + * Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API. * - * There are only 254 posix priority levels since a task at priority level - * 255 would never run because of the RTEMS idle task. This is necessary - * because GNAT maps the lowest Ada task priority to the lowest thread - * priority. The lowest priority Ada task should get to run, so there is - * a fundamental conflict with having 255 priorities. + * There are only 254 posix priority levels since a task at priority level + * 255 would never run because of the RTEMS idle task. This is necessary + * because GNAT maps the lowest Ada task priority to the lowest thread + * priority. The lowest priority Ada task should get to run, so there is + * a fundamental conflict with having 255 priorities. * - * But since RTEMS can be configured with fewer than 256 priorities, - * we use the internal constant. + * But since RTEMS can be configured with fewer than 256 priorities, + * we use the internal constant. */ #define POSIX_SCHEDULER_MAXIMUM_PRIORITY (PRIORITY_MAXIMUM - 1) @@ -52,46 +56,46 @@ #define POSIX_SCHEDULER_MINIMUM_PRIORITY (1) /** - * @brief POSIX Is Priority Valid + * @brief Check if POSIX priority is valid. * - * 1003.1b-1993,2.2.2.80 definition of priority, p. 19 + * 1003.1b-1993,2.2.2.80 definition of priority, p. 19 * - * "Numerically higher values represent higher priorities." + * "Numerically higher values represent higher priorities." * - * Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API. + * Thus, RTEMS Core has priorities run in the opposite sense of the POSIX API. * - * @param[in] priority is the priority to test + * @param[in] priority is the priority to test * - * @return This method returns true if the priority is valid and - * false otherwise. + * @retval TRUE The priority is valid. + * @retval FALSE The priority is invalid. */ bool _POSIX_Priority_Is_valid( int priority ); /** - * @brief Convert POSIX Priority To SuperCore Priority + * @brief Convert POSIX priority to SuperCore priority. * - * This method converts a POSIX API priority into onto the corresponding - * SuperCore value. + * This method converts a POSIX API priority into onto the corresponding + * SuperCore value. * - * @param[in] priority is the POSIX API priority. + * @param[in] priority is the POSIX API priority. * - * @return This method returns the corresponding SuperCore priority. + * @return This method returns the corresponding SuperCore priority. */ RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Priority_To_core( int priority ); /** - * @brief Convert SuperCore Priority To POSIX Priority + * @brief Convert SuperCore priority To POSIX priority. * - * This method converts a SuperCore priority into onto the corresponding - * POSIX API value. + * This method converts a SuperCore priority into onto the corresponding + * POSIX API value. * - * @param[in] priority is the POSIX API priority. + * @param[in] priority is the POSIX API priority. * - * @return This method returns the corresponding POSIX priority. + * @return This method returns the corresponding POSIX priority. */ RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( Priority_Control priority @@ -99,4 +103,6 @@ RTEMS_INLINE_ROUTINE int _POSIX_Priority_From_core( #include <rtems/posix/priority.inl> +/** @} */ + #endif diff --git a/cpukit/posix/include/rtems/posix/psignal.h b/cpukit/posix/include/rtems/posix/psignal.h index 604b98982c..977fade2bb 100644 --- a/cpukit/posix/include/rtems/posix/psignal.h +++ b/cpukit/posix/include/rtems/posix/psignal.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/psignal.h + * @file + * + * @brief Internal Information about POSIX Signals * * This include file defines internal information about POSIX signals. */ diff --git a/cpukit/posix/include/rtems/posix/psignalimpl.h b/cpukit/posix/include/rtems/posix/psignalimpl.h index c416a7aa1b..481a7ea57e 100644 --- a/cpukit/posix/include/rtems/posix/psignalimpl.h +++ b/cpukit/posix/include/rtems/posix/psignalimpl.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/psignal.h + * @file + * + * @brief POSIX Signals Support * * This include file defines internal information about POSIX signals. */ @@ -19,10 +21,12 @@ /** * @defgroup POSIX_SIGNALS POSIX Signals Support * - * @ingroup POSIX + * @ingroup POSIXAPI * * @brief Internal Information about POSIX Signals + * */ +/**@{**/ #include <rtems/posix/psignal.h> #include <rtems/posix/pthread.h> @@ -72,7 +76,7 @@ extern API_extensions_Post_switch_control _POSIX_signals_Post_switch; */ /** - * @brief POSIX Signals Manager Initialization + * @brief POSIX signals manager initialization. */ void _POSIX_signals_Manager_Initialization(void); @@ -82,7 +86,7 @@ static inline void _POSIX_signals_Add_post_switch_extension(void) } /** - * @brief POSIX Signals Thread Unlock + * @brief Unlock POSIX signals thread. * * XXX this routine could probably be cleaned up */ @@ -93,7 +97,7 @@ bool _POSIX_signals_Unblock_thread( ); /** - * @brief POSIX Signals Check Signal + * @brief Check POSIX signal. */ bool _POSIX_signals_Check_signal( POSIX_API_Control *api, @@ -102,7 +106,7 @@ bool _POSIX_signals_Check_signal( ); /** - * @brief POSIX Signals Clear Signals + * @brief Clear POSIX signals. */ bool _POSIX_signals_Clear_signals( POSIX_API_Control *api, @@ -119,7 +123,7 @@ int killinfo( ); /** - * @brief POSIX Signals Set Process Signals + * @brief Set POSIX process signals. */ void _POSIX_signals_Set_process_signals( sigset_t mask @@ -138,5 +142,7 @@ void _POSIX_signals_Clear_process_signals( void _POSIX_signals_Abnormal_termination_handler( int signo ); +/** @} */ + #endif /* end of file */ diff --git a/cpukit/posix/include/rtems/posix/pthread.h b/cpukit/posix/include/rtems/posix/pthread.h index 5932d45a39..5250b70d0f 100644 --- a/cpukit/posix/include/rtems/posix/pthread.h +++ b/cpukit/posix/include/rtems/posix/pthread.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/pthread.h + * @file + * + * @brief POSIX Threads Private Support * * This include file contains all the private support information for * POSIX threads. @@ -21,12 +23,6 @@ #include <rtems/posix/config.h> #include <rtems/posix/threadsup.h> -/** - * @defgroup POSIX_PTHREADS Private Threads - * - * @ingroup POSIX - */ -/**@{*/ #ifdef __cplusplus extern "C" { #endif @@ -34,80 +30,82 @@ extern "C" { /** * @defgroup POSIX_PTHREAD POSIX Threads Support * - * @ingroup POSIX + * @ingroup POSIXAPI * * @brief Private Support Information for POSIX Threads + * */ +/**@{**/ /** - * The following sets the minimum stack size for POSIX threads. + * The following sets the minimum stack size for POSIX threads. */ #define PTHREAD_MINIMUM_STACK_SIZE (_Stack_Minimum() * 2) /** - * The following defines the information control block used to manage - * this class of objects. + * The following defines the information control block used to manage + * this class of objects. */ POSIX_EXTERN Objects_Information _POSIX_Threads_Information; /** - * This variable contains the default POSIX Thread attributes. + * This variable contains the default POSIX Thread attributes. */ extern const pthread_attr_t _POSIX_Threads_Default_attributes; /** - * When the user configures a set of POSIX API initialization threads, - * This variable will point to the method used to initialize them. + * When the user configures a set of POSIX API initialization threads, + * This variable will point to the method used to initialize them. * - * @note It is instantiated and initialized by confdefs.h based upon - * application requirements. + * NOTE: It is instantiated and initialized by confdefs.h based upon + * application requirements. */ extern void (*_POSIX_Threads_Initialize_user_threads_p)(void); /** - * @brief _POSIX_Threads_Manager_initialization + * @brief POSIX threads manager initialization. * - * This routine performs the initialization necessary for this manager. + * This routine performs the initialization necessary for this manager. */ void _POSIX_Threads_Manager_initialization(void); /** - * @brief _POSIX_Threads_Allocate + * @brief Allocate POSIX thread control block. * - * This function allocates a pthread control block from - * the inactive chain of free pthread control blocks. + * This function allocates a pthread control block from + * the inactive chain of free pthread control blocks. * - * @return This method returns a newly allocated thread. + * @return This method returns a newly allocated thread. */ RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate( void ); /** - * @brief _POSIX_Threads_Free + * @brief Free POSIX control block. * - * This routine frees a pthread control block to the - * inactive chain of free pthread control blocks. + * This routine frees a pthread control block to the + * inactive chain of free pthread control blocks. * - * @param[in] the_pthread is the thread to free + * @param[in] the_pthread is a pointer to the thread to free. */ RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free( Thread_Control *the_pthread ); /** - * @brief _POSIX_Threads_Get + * @brief Map POSIX thread IDs to control blocks. * - * This function maps pthread IDs to pthread control blocks. - * If ID corresponds to a local pthread, then it returns - * the_pthread control pointer which maps to ID and location - * is set to OBJECTS_LOCAL. if the pthread ID is global and - * resides on a remote node, then location is set to OBJECTS_REMOTE, - * and the_pthread is undefined. Otherwise, location is set - * to OBJECTS_ERROR and the_pthread is undefined. + * This function maps pthread IDs to pthread control blocks. + * If ID corresponds to a local pthread, then it returns + * the_pthread control pointer which maps to ID and location + * is set to OBJECTS_LOCAL. if the pthread ID is global and + * resides on a remote node, then location is set to OBJECTS_REMOTE, + * and the_pthread is undefined. Otherwise, location is set + * to OBJECTS_ERROR and the_pthread is undefined. * - * @param[in] id is the id to lookup - * @param[in] location points to the returned location value + * @param[in] id is the id to lookup + * @param[in] location points to the returned location value * - * @return This methods returns a pointer to the corresponding Thread_Control. + * @return This methods returns a pointer to the corresponding Thread_Control. */ RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Get( pthread_t id, @@ -115,43 +113,45 @@ RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Get( ); /** - * @brief _POSIX_Threads_Is_null + * @brief Check if a POSIX thread control block is NULL. * - * This function returns TRUE if the_pthread is NULL and FALSE otherwise. + * This function returns @c TRUE if the_pthread is @c NULL and @c FALSE + * otherwise. * - * @param[in] the_pthread is the thread pointer to check. + * @param[in] the_pthread is a pointer to the POSIX thread control block + * to check. * - * @return This method returns true if the thread pointer is null. + * @retval TRUE The thread control block is @c NULL. + * @retval FALSE The thread control block is not @c NULL. */ RTEMS_INLINE_ROUTINE bool _POSIX_Threads_Is_null( Thread_Control *the_pthread ); /** - * @brief _POSIX_Threads_Sporadic_budget_callout + * @brief POSIX threads sporadic budget callout. * - * This routine handles the sporadic scheduling algorithm. + * This routine handles the sporadic scheduling algorithm. * - * @param[in] the_thread is the thread whose budget has been exceeded. + * @param[in] the_thread is a pointer to the thread whose budget + * has been exceeded. */ void _POSIX_Threads_Sporadic_budget_callout( Thread_Control *the_thread ); /** - * _POSIX_Threads_Sporadic_budget_TSR + * This routine supports the sporadic scheduling algorithm. It + * is scheduled to be executed at the end of each replenishment + * period. In sporadic scheduling a thread will execute at a + * high priority for a user specified amount of CPU time. When + * it exceeds that amount of CPU time, its priority is automatically + * lowered. This TSR is executed when it is time to replenish + * the thread's processor budget and raise its priority. * - * This routine supports the sporadic scheduling algorithm. It - * is scheduled to be executed at the end of each replenishment - * period. In sporadic scheduling a thread will execute at a - * high priority for a user specified amount of CPU time. When - * it exceeds that amount of CPU time, its priority is automatically - * lowered. This TSR is executed when it is time to replenish - * the thread's processor budget and raise its priority. - * - * @param[in] id is ignored - * @param[in] argument is a pointer to the Thread_Control structure - * for the thread being replenished. + * @param[in] id is ignored + * @param[in] argument is a pointer to the Thread_Control structure + * for the thread being replenished. */ void _POSIX_Threads_Sporadic_budget_TSR( Objects_Id id, @@ -159,17 +159,18 @@ void _POSIX_Threads_Sporadic_budget_TSR( ); /** - * @brief Translate sched_param into SuperCore Terms + * @brief Translate sched_param into SuperCore terms. * - * This method translates the POSIX API sched_param into the corresponding - * SuperCore settings. + * This method translates the POSIX API sched_param into the corresponding + * SuperCore settings. * - * @param[in] policy is the POSIX scheduling policy - * @param[in] param points to the scheduling parameter structure - * @param[in] budget_algorithm points to the output CPU Budget algorithm - * @param[in] budget_callout points to the output CPU Callout + * @param[in] policy is the POSIX scheduling policy + * @param[in] param points to the scheduling parameter structure + * @param[in] budget_algorithm points to the output CPU Budget algorithm + * @param[in] budget_callout points to the output CPU Callout * - * @return This method returns 0 on success or a POSIX error code. + * @retval 0 Indicates success. + * @retval error_code POSIX error code indicating failure. */ int _POSIX_Thread_Translate_sched_param( int policy, @@ -179,7 +180,7 @@ int _POSIX_Thread_Translate_sched_param( ); /** - * @brief POSIX Threads Initialize User Threads Body + * @brief POSIX threads initialize user threads body. * * This routine creates and starts all configured user * initialization threads. @@ -188,9 +189,11 @@ extern void _POSIX_Threads_Initialize_user_threads_body(void); #include <rtems/posix/pthread.inl> +/** @} */ + #ifdef __cplusplus } #endif -/**@}*/ + #endif /* end of include file */ diff --git a/cpukit/posix/include/rtems/posix/ptimer.h b/cpukit/posix/include/rtems/posix/ptimer.h index 1b791cc915..e06b1e9449 100644 --- a/cpukit/posix/include/rtems/posix/ptimer.h +++ b/cpukit/posix/include/rtems/posix/ptimer.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/ptimer.h + * @file + * + * @brief POSIX Timers Private Support * * This include file contains all the private support information for * POSIX timers. @@ -21,11 +23,12 @@ #define _RTEMS_POSIX_PTIMER_H /** - * @defgroup POSIX_PRIV_TIMERS Timers + * @defgroup POSIX_PRIV_TIMERS POSIX Timers * - * @ingroup POSIX + * @ingroup POSIXAPI + * */ -/**@{*/ +/**@{**/ #ifdef __cplusplus extern "C" { #endif @@ -89,16 +92,18 @@ int timer_gettime( ); /** - * @brief Get Overrun Count for a POSIX Per-Process Timer + * @brief Get overrun count for a POSIX per-process timer. * - * The expiration of a timer must increase by one a counter. - * After the signal handler associated to the timer finishes - * its execution, _POSIX_Timer_TSR will have to set this counter to 0. + * The expiration of a timer must increase by one a counter. + * After the signal handler associated to the timer finishes + * its execution, _POSIX_Timer_TSR will have to set this counter to 0. * - * 14.2.4 Per-Process Timers, P1003.1b-1993, p. 267 + * 14.2.4 Per-Process Timers, P1003.1b-1993, p. 267 */ int timer_getoverrun( timer_t timerid ); -/**@}*/ + +/** @} */ + #endif diff --git a/cpukit/posix/include/rtems/posix/rwlock.h b/cpukit/posix/include/rtems/posix/rwlock.h index 411384c2c6..0cfd20dad8 100644 --- a/cpukit/posix/include/rtems/posix/rwlock.h +++ b/cpukit/posix/include/rtems/posix/rwlock.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/rwlock.h + * @file + * + * @brief Constants and Structures Associated with the POSIX RWLock Manager * * This include file contains all the constants and structures associated * with the POSIX RWLock Manager. @@ -30,16 +32,18 @@ extern "C" { /** * @defgroup POSIX_RWLOCK POSIX RWLock Manager * - * @ingroup POSIX + * @ingroup POSIXAPI * * @brief Constants and Structures Associated with the POSIX RWLock Manager + * */ +/**@{**/ #include <rtems/score/object.h> #include <rtems/score/corerwlock.h> /** - * This type defines the control block used to manage each RWLock. + * This type defines the control block used to manage each RWLock. */ typedef struct { @@ -50,33 +54,38 @@ typedef struct { } POSIX_RWLock_Control; /** - * The following defines the information control block used to manage - * this class of objects. + * The following defines the information control block used to manage + * this class of objects. */ POSIX_EXTERN Objects_Information _POSIX_RWLock_Information; /** - * @brief _POSIX_RWLock_Manager_initialization - * - * This routine performs the initialization necessary for this manager. + * @brief POSIX RWLock manager initialization. * - * @param[in] maximum_rwlocks is the total number of RWLocks allowed to - * concurrently be active in the system. + * This routine performs the initialization necessary for this manager. */ void _POSIX_RWLock_Manager_initialization(void); /** - * @brief POSIX RWLock Translate Core RWLock Return Code + * @brief POSIX translate core RWLock return code. * - * This routine translates SuperCore RWLock status codes into the - * corresponding POSIX ones. + * This routine translates SuperCore RWLock status codes into the + * corresponding POSIX ones. * * - * @param[in] the_RWLock_status is the SuperCore status. + * @param[in] the_RWLock_status is the SuperCore status. * - * @return the corresponding POSIX status + * @return the corresponding POSIX status + * @retval 0 The status indicates that the operation completed successfully. + * @retval EINVAL The status indicates that the thread was blocked waiting for + * an operation to complete and the RWLock was deleted. + * @retval EBUSY This status indicates that the RWLock was not + * immediately available. + * @retval ETIMEDOUT This status indicates that the calling task was + * willing to block but the operation was unable to complete within + * the time allotted because the resource never became available. */ int _POSIX_RWLock_Translate_core_RWLock_return_code( CORE_RWLock_Status the_RWLock_status @@ -86,6 +95,8 @@ int _POSIX_RWLock_Translate_core_RWLock_return_code( #include <rtems/posix/rwlock.inl> #endif +/** @} */ + #ifdef __cplusplus } #endif diff --git a/cpukit/posix/include/rtems/posix/semaphore.h b/cpukit/posix/include/rtems/posix/semaphore.h index 08ace7684f..3127c3f9aa 100644 --- a/cpukit/posix/include/rtems/posix/semaphore.h +++ b/cpukit/posix/include/rtems/posix/semaphore.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/semaphore.h + * @file + * + * @brief Private Support Information for POSIX Semaphores * * This include file contains all the private support information for * POSIX Semaphores. @@ -18,19 +20,18 @@ #define _RTEMS_POSIX_SEMAPHORE_H /** - * @defgroup POSIX_SEMAPHORES Semaphore + * @defgroup POSIXSemaphorePrivate POSIX Semaphore Private Support + * + * @ingroup POSIXAPI * - * @ingroup POSIX + * This defines the internal implementation support for POSIX semaphores. */ /**@{*/ + #ifdef __cplusplus extern "C" { #endif -/** - * @ingroup POSIX_SEMAPHORE - */ - #include <semaphore.h> #include <rtems/score/coresem.h> #include <rtems/posix/posixapi.h> @@ -145,25 +146,24 @@ int _POSIX_Semaphore_Create_support( ); /** - * @brief POSIX Delete Semaphore + * @brief POSIX delete a semaphore. * - * DESCRIPTION: + * DESCRIPTION: * - * This routine supports the sem_close and sem_unlink routines. + * This routine supports the sem_close and sem_unlink routines. */ void _POSIX_Semaphore_Delete( POSIX_Semaphore_Control *the_semaphore ); -/* - * @brief POSIX Semaphore Wait Support +/** + * @brief POSIX semaphore wait support. * - * DESCRIPTION: + * DESCRIPTION: * - * This routine supports the sem_wait, sem_trywait, and sem_timedwait - * services. + * This routine supports the sem_wait, sem_trywait, and sem_timedwait + * services. */ - int _POSIX_Semaphore_Wait_support( sem_t *sem, bool blocking, @@ -189,5 +189,7 @@ int _POSIX_Semaphore_Translate_core_semaphore_return_code( } #endif +/** @} */ + #endif /* end of include file */ diff --git a/cpukit/posix/include/rtems/posix/sigset.h b/cpukit/posix/include/rtems/posix/sigset.h index b0dd61fe58..0dd218913c 100644 --- a/cpukit/posix/include/rtems/posix/sigset.h +++ b/cpukit/posix/include/rtems/posix/sigset.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/sigset.h + * @file + * + * @brief POSIX Signal Sets Management Helper * * This file defines the interface to implementation helper for management * of POSIX Signal Sets. diff --git a/cpukit/posix/include/rtems/posix/spinlock.h b/cpukit/posix/include/rtems/posix/spinlock.h index 44061bd42c..34b04ebbc9 100644 --- a/cpukit/posix/include/rtems/posix/spinlock.h +++ b/cpukit/posix/include/rtems/posix/spinlock.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/spinlock.h + * @file + * + * @brief POSIX Spinlock Support * * This include file contains all the constants and structures associated * with the POSIX Spinlock Manager. @@ -30,16 +32,18 @@ extern "C" { /** * @defgroup POSIX_SPINLOCK POSIX Spinlock Support * - * @ingroup POSIX + * @ingroup POSIXAPI * * @brief Constants and Structures Associated with the POSIX Spinlock Manager + * */ +/**@{**/ #include <rtems/score/object.h> #include <rtems/score/corespinlock.h> /** - * This type defines the control block used to manage each spinlock. + * This type defines the control block used to manage each spinlock. */ typedef struct { @@ -50,33 +54,29 @@ typedef struct { } POSIX_Spinlock_Control; /** - * The following defines the information control block used to manage - * this class of objects. + * The following defines the information control block used to manage + * this class of objects. */ POSIX_EXTERN Objects_Information _POSIX_Spinlock_Information; /** - * @brief _POSIX_Spinlock_Manager_initialization + * @brief POSIX spinlock manager initialization. * - * This routine performs the initialization necessary for this manager. - * - * @param[in] maximum_spinlocks is the total number of spinlocks allowed to - * concurrently be active in the system. + * This routine performs the initialization necessary for this manager. */ void _POSIX_Spinlock_Manager_initialization(void); /** - * @brief POSIX Spinlock Translate Core Spinlock Return Code - * - * This routine translates SuperCore Spinlock status codes into the - * corresponding POSIX ones. + * @brief Translate core spinlock status code. * + * This routine translates SuperCore Spinlock status codes into the + * corresponding POSIX ones. + * + * @param[in] the_spinlock_status is the SuperCore status. * - * @param[in] the_spinlock_status is the SuperCore status. - * - * @return the corresponding POSIX status + * @return the corresponding POSIX status */ int _POSIX_Spinlock_Translate_core_spinlock_return_code( CORE_spinlock_Status the_spinlock_status @@ -86,6 +86,8 @@ int _POSIX_Spinlock_Translate_core_spinlock_return_code( #include <rtems/posix/spinlock.inl> #endif +/** @} */ + #ifdef __cplusplus } #endif diff --git a/cpukit/posix/include/rtems/posix/threadsup.h b/cpukit/posix/include/rtems/posix/threadsup.h index c5a2e3db7e..80f64dc2a8 100644 --- a/cpukit/posix/include/rtems/posix/threadsup.h +++ b/cpukit/posix/include/rtems/posix/threadsup.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/threadsup.h + * @file + * + * @brief POSIX Thread API Support * * This defines the POSIX thread API extension. */ @@ -21,18 +23,19 @@ #include <rtems/score/tqdata.h> /** - * @defgroup POSIX_THREAD Thread API Extension + * @defgroup POSIX_THREAD POSIX Thread API Extension * - * @ingroup POSIX + * @ingroup POSIXAPI + * */ -/**@{*/ +/**@{**/ #ifdef __cplusplus extern "C" { #endif -/*! - * This defines the POSIX API support structure associated with - * each thread in a system with POSIX configured. +/** + * This defines the POSIX API support structure associated with + * each thread in a system with POSIX configured. */ typedef struct { /** This is the POSIX threads attribute set. */ @@ -46,13 +49,13 @@ typedef struct { /** This is the thread's current set of scheduling parameters. */ struct sched_param schedparam; /** - * This is the high priority to execute at when using the sporadic - * scheduler. + * This is the high priority to execute at when using the sporadic + * scheduler. */ int ss_high_priority; /** - * This is the timer which controls when the thread executes at - * high and low priority when using the sporadic scheduler. + * This is the timer which controls when the thread executes at + * high and low priority when using the sporadic scheduler. */ Watchdog_Control Sporadic_timer; @@ -78,19 +81,19 @@ typedef struct { } POSIX_API_Control; -/*! - * @brief POSIX Thread Exit Shared Helper +/** + * @brief POSIX thread exit shared helper. * - * 16.1.5.1 Thread Termination, p1003.1c/Draft 10, p. 150 + * 16.1.5.1 Thread Termination, p1003.1c/Draft 10, p. 150 * - * This method is a helper routine which ensures that all - * POSIX thread calls which result in a thread exiting will - * do so in the same manner. + * This method is a helper routine which ensures that all + * POSIX thread calls which result in a thread exiting will + * do so in the same manner. * - * @param[in] the_thread is the thread exiting or being canceled - * @param[in] value_ptr is the value to be returned by the thread + * @param[in] the_thread is a pointer to the thread exiting or being canceled + * @param[in] value_ptr is a pointer the value to be returned by the thread * - * NOTE: Key destructors are executed in the POSIX api delete extension. + * NOTE: Key destructors are executed in the POSIX api delete extension. * */ void _POSIX_Thread_Exit( @@ -98,9 +101,11 @@ void _POSIX_Thread_Exit( void *value_ptr ); +/** @} */ + #ifdef __cplusplus } #endif -/**@}*/ + #endif /* end of include file */ diff --git a/cpukit/posix/include/rtems/posix/time.h b/cpukit/posix/include/rtems/posix/time.h index d0dc4a27fe..735082e074 100644 --- a/cpukit/posix/include/rtems/posix/time.h +++ b/cpukit/posix/include/rtems/posix/time.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/time.h + * @file + * + * @brief POSIX Time Types * * This defines the interface to implementation helper routines related * to POSIX time types. @@ -20,18 +22,19 @@ #include <rtems/score/timespec.h> #include <rtems/score/watchdog.h> /** - * @defgroup POSIX_TIMETYPES Time Types + * @defgroup POSIX_TIMETYPES POSIX Time Types * - * @ingroup POSIX + * @ingroup POSIXAPI + * */ -/**@{*/ +/**@{**/ /** - * @brief Absolute Timeout Conversion Results + * @brief Absolute timeout conversion results. * - * This enumeration defines the possible results of converting - * an absolute time used for timeouts to POSIX blocking calls to - * a number of ticks. + * This enumeration defines the possible results of converting + * an absolute time used for timeouts to POSIX blocking calls to + * a number of ticks. */ typedef enum { /** The timeout is invalid. */ @@ -45,24 +48,25 @@ typedef enum { } POSIX_Absolute_timeout_conversion_results_t; /** - * @brief Convert Absolute Timeout to Ticks + * @brief Convert absolute timeout to ticks. * - * This method takes an absolute time being used as a timeout - * to a blocking directive, validates it and returns the number - * of corresponding clock ticks for use by the SuperCore. + * This method takes an absolute time being used as a timeout + * to a blocking directive, validates it and returns the number + * of corresponding clock ticks for use by the SuperCore. * - * @param[in] abstime is the timeout - * @param[in] ticks_out will contain the number of ticks + * @param[in] abstime is a pointer to the timeout + * @param[out] ticks_out will contain the number of ticks * - * @return This method returns the number of ticks in @a ticks_out - * and a status value indicating whether the absolute time - * is valid, in the past, equal to the current time or in - * the future as it should be. + * @return This method returns the number of ticks in @a ticks_out + * and a status value indicating whether the absolute time + * is valid, in the past, equal to the current time or in + * the future as it should be. */ POSIX_Absolute_timeout_conversion_results_t _POSIX_Absolute_timeout_to_ticks( const struct timespec *abstime, Watchdog_Interval *ticks_out ); +/** @} */ + #endif -/**@}*/ diff --git a/cpukit/posix/include/rtems/posix/timer.h b/cpukit/posix/include/rtems/posix/timer.h index 1298178e95..0b70cc9950 100644 --- a/cpukit/posix/include/rtems/posix/timer.h +++ b/cpukit/posix/include/rtems/posix/timer.h @@ -1,5 +1,7 @@ /** - * @file rtems/posix/timer.h + * @file + * + * @brief POSIX Timers Internal Support * * This include files defines the internal support for implementation of * POSIX Timers. @@ -22,11 +24,12 @@ #include <rtems/score/watchdog.h> /* Watchdog_Control */ /** - * @defgroup POSIX_INTERNAL_TIMERS Timers + * @defgroup POSIX_INTERNAL_TIMERS POSIX Timer Private Support * - * @ingroup POSIX + * @ingroup POSIXAPI */ /**@{*/ + #ifdef __cplusplus extern "C" { #endif @@ -34,13 +37,13 @@ extern "C" { /* Timer is free */ #define POSIX_TIMER_STATE_FREE 0x01 -/* Created timer but not running */ +/* Created timer but not running */ #define POSIX_TIMER_STATE_CREATE_NEW 0x02 -/* Created timer and running */ +/* Created timer and running */ #define POSIX_TIMER_STATE_CREATE_RUN 0x03 -/* Created, ran and stopped timer */ +/* Created, ran and stopped timer */ #define POSIX_TIMER_STATE_CREATE_STOP 0x04 /* Indicates that the fire time is relative to the current one */ @@ -55,7 +58,6 @@ extern "C" { #error "POSIX_TIMER_RELATIVE == TIMER_ABSTIME" #endif - /* * Data for a timer */ @@ -108,9 +110,11 @@ POSIX_EXTERN Objects_Information _POSIX_Timer_Information; #include <rtems/posix/timer.inl> #endif +/** @} */ + #ifdef __cplusplus } #endif -/**@}*/ + #endif /* end of include file */ diff --git a/cpukit/posix/include/semaphore.h b/cpukit/posix/include/semaphore.h index 37e3fd54b4..489258ecb0 100644 --- a/cpukit/posix/include/semaphore.h +++ b/cpukit/posix/include/semaphore.h @@ -1,5 +1,7 @@ /** - * @file semaphore.h + * @file + * + * @brief Private Support Information for POSIX Semaphores * * This file contains definitions that are internal to the RTEMS * implementation of POSIX Semaphores. @@ -24,7 +26,7 @@ extern "C" { /** * @defgroup POSIX_SEMAPHORE POSIX Semaphores Support * - * @ingroup POSIX + * @ingroup POSIXAPI * * @brief Private Support Information for POSIX Semaphores */ @@ -55,9 +57,9 @@ int sem_init( ); /** - * @brief Destroy an Unnamed Semaphore + * @brief Destroy an unnamed semaphore. * - * 11.2.2 Destroy an Unnamed Semaphore, P1003.1b-1993, p.220 + * 11.2.2 Destroy an Unnamed Semaphore, P1003.1b-1993, p.220 */ int sem_destroy( sem_t *sem @@ -75,7 +77,7 @@ sem_t *sem_open( ); /** - * @brief Close a Named Semaphore + * @brief Close a named semaphore. * * Routine to close a semaphore that has been opened or initialized. * @@ -86,7 +88,7 @@ int sem_close( ); /** - * @brief Remove a Named Semaphore + * @brief Remove a named semaphore. * * Unlinks a named semaphore, sem_close must also be called to remove * the semaphore. @@ -98,20 +100,20 @@ int sem_unlink( ); /** - * @brief Lock a Semaphore + * @brief Lock a semaphore. * - * 11.2.6 Lock a Semaphore, P1003.1b-1993, p.226 + * 11.2.6 Lock a Semaphore, P1003.1b-1993, p.226 * - * @note P1003.4b/D8 adds sem_timedwait(), p. 27 + * NOTE: P1003.4b/D8 adds sem_timedwait(), p. 27 */ int sem_wait( sem_t *sem ); /** - * @brief Lock a Semaphore + * @brief Lock a semaphore. * - * @see sem_wait() + * @see sem_wait() */ int sem_trywait( sem_t *sem @@ -119,7 +121,7 @@ int sem_trywait( #if defined(_POSIX_TIMEOUTS) /** - * @brief Lock a Semaphore + * @brief Lock a semaphore. */ int sem_timedwait( sem_t *sem, @@ -128,16 +130,16 @@ int sem_timedwait( #endif /** - * @brief Unlock a Semaphore + * @brief Unlock a semaphore. * - * 11.2.7 Unlock a Semaphore, P1003.1b-1993, p.227 + * 11.2.7 Unlock a Semaphore, P1003.1b-1993, p.227 */ int sem_post( sem_t *sem ); /** - * @brief Get the Value of a Semaphore + * @brief Get the value of a semaphore. * * 11.2.8 Get the Value of a Semaphore, P1003.1b-1993, p.229 */ diff --git a/cpukit/posix/inline/rtems/posix/barrier.inl b/cpukit/posix/inline/rtems/posix/barrier.inl index f78e432b07..6e439d8c66 100644 --- a/cpukit/posix/inline/rtems/posix/barrier.inl +++ b/cpukit/posix/inline/rtems/posix/barrier.inl @@ -1,8 +1,10 @@ /** - * @file rtems/posix/barrier.inl + * @file + * + * @brief Inlined Routines from the POSIX Barrier Manager * - * This file contains the static inlin implementation of the inlined - * routines from the POSIX Barrier Manager. + * This file contains the static inlin implementation of the inlined + * routines from the POSIX Barrier Manager. */ /* @@ -24,10 +26,10 @@ #include <pthread.h> /** - * @brief _POSIX_Barrier_Allocate + * @brief Allocate a barrier control block. * - * This function allocates a barrier control block from - * the inactive chain of free barrier control blocks. + * This function allocates a barrier control block from + * the inactive chain of free barrier control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void ) { @@ -36,10 +38,10 @@ RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Allocate( void ) } /** - * @brief _POSIX_Barrier_Free + * @brief Free a barrier control block. * - * This routine frees a barrier control block to the - * inactive chain of free barrier control blocks. + * This routine frees a barrier control block to the + * inactive chain of free barrier control blocks. */ RTEMS_INLINE_ROUTINE void _POSIX_Barrier_Free ( POSIX_Barrier_Control *the_barrier @@ -49,15 +51,15 @@ RTEMS_INLINE_ROUTINE void _POSIX_Barrier_Free ( } /** - * @brief _POSIX_Barrier_Get + * @brief Get a barrier control block. * - * This function maps barrier IDs to barrier control blocks. - * If ID corresponds to a local barrier, then it returns - * the_barrier control pointer which maps to ID and location - * is set to OBJECTS_LOCAL. if the barrier ID is global and - * resides on a remote node, then location is set to OBJECTS_REMOTE, - * and the_barrier is undefined. Otherwise, location is set - * to OBJECTS_ERROR and the_barrier is undefined. + * This function maps barrier IDs to barrier control blocks. + * If ID corresponds to a local barrier, then it returns + * the_barrier control pointer which maps to ID and location + * is set to OBJECTS_LOCAL. if the barrier ID is global and + * resides on a remote node, then location is set to OBJECTS_REMOTE, + * and the_barrier is undefined. Otherwise, location is set + * to OBJECTS_ERROR and the_barrier is undefined. */ RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get ( pthread_barrier_t *barrier, @@ -72,9 +74,16 @@ RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get ( } /** - * @brief _POSIX_Barrier_Is_null + * @brief Check if a barrier control block is NULL. * - * This function returns TRUE if the_barrier is NULL and FALSE otherwise. + * This function returns @c TRUE if the_barrier is @c NULL and @c FALSE + * otherwise. + * + * @param[in] the_barrier is the pointer to the barrier control block + * to be checked. + * + * @retval TRUE The barrier control block is @c NULL. + * @retval FALSE The barrier control block is not @c NULL. */ RTEMS_INLINE_ROUTINE bool _POSIX_Barrier_Is_null ( POSIX_Barrier_Control *the_barrier diff --git a/cpukit/posix/inline/rtems/posix/key.inl b/cpukit/posix/inline/rtems/posix/key.inl index 4c2466be57..ce5601b06d 100644 --- a/cpukit/posix/inline/rtems/posix/key.inl +++ b/cpukit/posix/inline/rtems/posix/key.inl @@ -1,8 +1,10 @@ /** - * @file rtems/posix/key.inl + * @file + * + * @brief Private Inlined Routines for POSIX Key's * - * This include file contains the static inline implementation of the private - * inlined routines for POSIX key's. + * This include file contains the static inline implementation of the private + * inlined routines for POSIX key's. */ /* @@ -22,10 +24,10 @@ #define _RTEMS_POSIX_KEY_INL /** - * @brief _POSIX_Keys_Allocate + * @brief Allocate a keys control block. * - * This function allocates a keys control block from - * the inactive chain of free keys control blocks. + * This function allocates a keys control block from + * the inactive chain of free keys control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void ) @@ -34,10 +36,10 @@ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void ) } /** - * @brief _POSIX_Keys_Free + * @brief Free a keys control block. * - * This routine frees a keys control block to the - * inactive chain of free keys control blocks. + * This routine frees a keys control block to the + * inactive chain of free keys control blocks. */ RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( POSIX_Keys_Control *the_key @@ -47,15 +49,15 @@ RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( } /** - * @brief _POSIX_Keys_Get + * @brief Get a keys control block. * - * This function maps key IDs to key control blocks. - * If ID corresponds to a local keys, then it returns - * the_key control pointer which maps to ID and location - * is set to OBJECTS_LOCAL. if the keys ID is global and - * resides on a remote node, then location is set to OBJECTS_REMOTE, - * and the_key is undefined. Otherwise, location is set - * to OBJECTS_ERROR and the_key is undefined. + * This function maps key IDs to key control blocks. + * If ID corresponds to a local keys, then it returns + * the_key control pointer which maps to ID and location + * is set to OBJECTS_LOCAL. if the keys ID is global and + * resides on a remote node, then location is set to OBJECTS_REMOTE, + * and the_key is undefined. Otherwise, location is set + * to OBJECTS_ERROR and the_key is undefined. */ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Get ( @@ -68,9 +70,15 @@ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Get ( } /** - * @brief _POSIX_Keys_Is_null + * @brief Check if a keys control block is NULL. * - * This function returns TRUE if the_key is NULL and FALSE otherwise. + * This function returns @c TRUE if the_key is @c NULL and @c FALSE + * otherwise. + * + * @param[in] the_key is the pointer to the key control block to be checked. + * + * @retval TRUE The key control block is @c NULL. + * @retval FALSE The key control block is not @c NULL. */ RTEMS_INLINE_ROUTINE bool _POSIX_Keys_Is_null ( POSIX_Keys_Control *the_key diff --git a/cpukit/posix/inline/rtems/posix/mqueue.inl b/cpukit/posix/inline/rtems/posix/mqueue.inl index ed345125af..e27efcacfe 100644 --- a/cpukit/posix/inline/rtems/posix/mqueue.inl +++ b/cpukit/posix/inline/rtems/posix/mqueue.inl @@ -1,6 +1,8 @@ /** - * @file rtems/posix/mqueue.inl + * @file * + * @brief Private Inlined Routines for POSIX Message Queue + * * This include file contains the static inline implementation of the private * inlined routines for POSIX Message Queue. */ diff --git a/cpukit/posix/inline/rtems/posix/mutex.inl b/cpukit/posix/inline/rtems/posix/mutex.inl index 033a4ccfcf..e5c68016bd 100644 --- a/cpukit/posix/inline/rtems/posix/mutex.inl +++ b/cpukit/posix/inline/rtems/posix/mutex.inl @@ -1,6 +1,8 @@ /** - * @file rtems/posix/mutex.inl + * @file * + * @brief Private Inlined Routines for POSIX Mutex's. + * * This include file contains the static inline implementation of the private * inlined routines for POSIX mutex's. */ diff --git a/cpukit/posix/inline/rtems/posix/priority.inl b/cpukit/posix/inline/rtems/posix/priority.inl index b1eb9b8da5..cae2242c78 100644 --- a/cpukit/posix/inline/rtems/posix/priority.inl +++ b/cpukit/posix/inline/rtems/posix/priority.inl @@ -1,6 +1,8 @@ /** - * @file rtems/posix/priority.inl + * @file * + * @brief Inline Methods Related to POSIX Priority Management + * * This defines the static inline methods related to POSIX priority management. */ diff --git a/cpukit/posix/inline/rtems/posix/pthread.inl b/cpukit/posix/inline/rtems/posix/pthread.inl index 1127841586..2df49804b0 100644 --- a/cpukit/posix/inline/rtems/posix/pthread.inl +++ b/cpukit/posix/inline/rtems/posix/pthread.inl @@ -1,5 +1,7 @@ /** - * @file rtems/posix/pthread.inl + * @file + * + * @brief Private Inlined Routines for POSIX Threads * * This include file contains the static inline implementation of the private * inlined routines for POSIX threads. diff --git a/cpukit/posix/inline/rtems/posix/rwlock.inl b/cpukit/posix/inline/rtems/posix/rwlock.inl index 5f1ef7e477..ac641c926b 100644 --- a/cpukit/posix/inline/rtems/posix/rwlock.inl +++ b/cpukit/posix/inline/rtems/posix/rwlock.inl @@ -1,5 +1,7 @@ /** - * @file rtems/posix/rwlock.inl + * @file + * + * @brief Inlined Routines from the POSIX RWLock Manager * * This file contains the static inlin implementation of the inlined * routines from the POSIX RWLock Manager. @@ -24,10 +26,10 @@ #include <pthread.h> /** - * @brief _POSIX_RWLock_Allocate + * @brief Allocate a RWLock control block. * - * This function allocates a RWLock control block from - * the inactive chain of free RWLock control blocks. + * This function allocates a RWLock control block from + * the inactive chain of free RWLock control blocks. */ RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void ) { @@ -36,10 +38,10 @@ RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Allocate( void ) } /** - * @brief _POSIX_RWLock_Free + * @brief Free a RWLock control block. * - * This routine frees a RWLock control block to the - * inactive chain of free RWLock control blocks. + * This routine frees a RWLock control block to the + * inactive chain of free RWLock control blocks. */ RTEMS_INLINE_ROUTINE void _POSIX_RWLock_Free ( POSIX_RWLock_Control *the_RWLock @@ -49,15 +51,15 @@ RTEMS_INLINE_ROUTINE void _POSIX_RWLock_Free ( } /** - * @brief _POSIX_RWLock_Get + * @brief Get a RWLock control block. * - * This function maps RWLock IDs to RWLock control blocks. - * If ID corresponds to a local RWLock, then it returns - * the_RWLock control pointer which maps to ID and location - * is set to OBJECTS_LOCAL. if the RWLock ID is global and - * resides on a remote node, then location is set to OBJECTS_REMOTE, - * and the_RWLock is undefined. Otherwise, location is set - * to OBJECTS_ERROR and the_RWLock is undefined. + * This function maps RWLock IDs to RWLock control blocks. + * If ID corresponds to a local RWLock, then it returns + * the_RWLock control pointer which maps to ID and location + * is set to OBJECTS_LOCAL. if the RWLock ID is global and + * resides on a remote node, then location is set to OBJECTS_REMOTE, + * and the_RWLock is undefined. Otherwise, location is set + * to OBJECTS_ERROR and the_RWLock is undefined. */ RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get ( pthread_rwlock_t *RWLock, @@ -72,9 +74,16 @@ RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get ( } /** - * @brief _POSIX_RWLock_Is_null + * @brief Check if a RWLock control block is NULL. * - * This function returns TRUE if the_RWLock is NULL and FALSE otherwise. + * This function returns @c TRUE if the_RWLock is @c NULL and @c FALSE + * otherwise. + * + * @param[in] the_RWLock is the pointer to the RWLock control block + * to be checked. + * + * @retval TRUE The RWLock control block is @c NULL. + * @retval FALSE The RWLock control block is not @c NULL. */ RTEMS_INLINE_ROUTINE bool _POSIX_RWLock_Is_null ( POSIX_RWLock_Control *the_RWLock diff --git a/cpukit/posix/inline/rtems/posix/semaphore.inl b/cpukit/posix/inline/rtems/posix/semaphore.inl index 4828bcd5ea..8c7d6700a9 100644 --- a/cpukit/posix/inline/rtems/posix/semaphore.inl +++ b/cpukit/posix/inline/rtems/posix/semaphore.inl @@ -1,5 +1,7 @@ /** - * @file rtems/posix/semaphore.inl + * @file + * + * @brief Private Inlined Routines for POSIX Semaphores * * This include file contains the static inline implementation of the private * inlined routines for POSIX Semaphores. diff --git a/cpukit/posix/inline/rtems/posix/spinlock.inl b/cpukit/posix/inline/rtems/posix/spinlock.inl index 0924e5ad3d..b8ababda02 100644 --- a/cpukit/posix/inline/rtems/posix/spinlock.inl +++ b/cpukit/posix/inline/rtems/posix/spinlock.inl @@ -1,5 +1,7 @@ /** - * @file rtems/posix/spinlock.inl + * @file + * + * @brief Inlined Routines from the POSIX Spinlock Manager * * This file contains the static inlin implementation of the inlined * routines from the POSIX Spinlock Manager. @@ -24,10 +26,10 @@ #include <pthread.h> /** - * @brief _POSIX_Spinlock_Allocate + * @brief Allocate a spinlock control block. * - * This function allocates a spinlock control block from - * the inactive chain of free spinlock control blocks. + * This function allocates a spinlock control block from + * the inactive chain of free spinlock control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Allocate( void ) { @@ -36,10 +38,10 @@ RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Allocate( void ) } /** - * @brief _POSIX_Spinlock_Free + * @brief Free a spinlock control block. * - * This routine frees a spinlock control block to the - * inactive chain of free spinlock control blocks. + * This routine frees a spinlock control block to the + * inactive chain of free spinlock control blocks. */ RTEMS_INLINE_ROUTINE void _POSIX_Spinlock_Free ( POSIX_Spinlock_Control *the_spinlock @@ -49,15 +51,15 @@ RTEMS_INLINE_ROUTINE void _POSIX_Spinlock_Free ( } /** - * @brief _POSIX_Spinlock_Get + * @brief Get a spinlock control block. * - * This function maps spinlock IDs to spinlock control blocks. - * If ID corresponds to a local spinlock, then it returns - * the_spinlock control pointer which maps to ID and location - * is set to OBJECTS_LOCAL. if the spinlock ID is global and - * resides on a remote node, then location is set to OBJECTS_REMOTE, - * and the_spinlock is undefined. Otherwise, location is set - * to OBJECTS_ERROR and the_spinlock is undefined. + * This function maps spinlock IDs to spinlock control blocks. + * If ID corresponds to a local spinlock, then it returns + * the_spinlock control pointer which maps to ID and location + * is set to OBJECTS_LOCAL. if the spinlock ID is global and + * resides on a remote node, then location is set to OBJECTS_REMOTE, + * and the_spinlock is undefined. Otherwise, location is set + * to OBJECTS_ERROR and the_spinlock is undefined. */ RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get ( pthread_spinlock_t *spinlock, @@ -72,9 +74,16 @@ RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get ( } /** - * @brief _POSIX_Spinlock_Is_null + * @brief Check if a spinlock control block is NULL. * - * This function returns TRUE if the_spinlock is NULL and FALSE otherwise. + * This function returns @c TRUE if the_spinlock is @c NULL and @c FALSE + * otherwise. + * + * @param[in] the_spinlock is the pointer to the spinlock control block + * to be checked. + * + * @retval TRUE The spinlock control block is @c NULL. + * @retval FALSE The spinlock control block is not @c NULL. */ RTEMS_INLINE_ROUTINE bool _POSIX_Spinlock_Is_null ( POSIX_Spinlock_Control *the_spinlock diff --git a/cpukit/posix/inline/rtems/posix/timer.inl b/cpukit/posix/inline/rtems/posix/timer.inl index 03377252fe..bc1db80c88 100644 --- a/cpukit/posix/inline/rtems/posix/timer.inl +++ b/cpukit/posix/inline/rtems/posix/timer.inl @@ -1,6 +1,8 @@ /** - * @file rtems/posix/timer.inl + * @file * + * @brief Inlined Routines from the POSIX Timer Manager + * * This file contains the static inline implementation of the inlined routines * from the POSIX Timer Manager. */ diff --git a/cpukit/posix/src/_execve.c b/cpukit/posix/src/_execve.c index b606fd63df..aa57ccb8a3 100644 --- a/cpukit/posix/src/_execve.c +++ b/cpukit/posix/src/_execve.c @@ -2,7 +2,7 @@ * @file * * @brief execve() - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/adjtime.c b/cpukit/posix/src/adjtime.c index 23f7d3a9ed..3b17a7461b 100644 --- a/cpukit/posix/src/adjtime.c +++ b/cpukit/posix/src/adjtime.c @@ -2,7 +2,7 @@ * @file * * @brief Correct the Time to Synchronize the System Clock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/aio_error.c b/cpukit/posix/src/aio_error.c index e29c8361b1..852422d394 100644 --- a/cpukit/posix/src/aio_error.c +++ b/cpukit/posix/src/aio_error.c @@ -2,7 +2,7 @@ * @file * * @brief Returns the error status for the Asynchronous I/O request - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/aio_fsync.c b/cpukit/posix/src/aio_fsync.c index 0330076696..dbfd79901d 100644 --- a/cpukit/posix/src/aio_fsync.c +++ b/cpukit/posix/src/aio_fsync.c @@ -2,7 +2,7 @@ * @file * * @brief Syncing of all Outstanding Asynchronous I/O Operations - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/aio_misc.c b/cpukit/posix/src/aio_misc.c index 12bec2eb7d..e4c40df84e 100644 --- a/cpukit/posix/src/aio_misc.c +++ b/cpukit/posix/src/aio_misc.c @@ -2,7 +2,7 @@ * @file * * @brief Actual request being processed - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/aio_read.c b/cpukit/posix/src/aio_read.c index f339752525..5445e86145 100644 --- a/cpukit/posix/src/aio_read.c +++ b/cpukit/posix/src/aio_read.c @@ -2,7 +2,7 @@ * @file * * @brief Asynchronously reads Data from a File - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/aio_return.c b/cpukit/posix/src/aio_return.c index 87c3af1f3e..89f0076c9e 100644 --- a/cpukit/posix/src/aio_return.c +++ b/cpukit/posix/src/aio_return.c @@ -2,7 +2,7 @@ * @file * * @brief Final return status for Asynchronous I/O request pointed to by aiobcp - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/aio_suspend.c b/cpukit/posix/src/aio_suspend.c index 60c4af1389..15448e54dc 100644 --- a/cpukit/posix/src/aio_suspend.c +++ b/cpukit/posix/src/aio_suspend.c @@ -2,7 +2,7 @@ * @file * * @brief Suspends Process until Asynchronous I/O Operation completes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/aio_write.c b/cpukit/posix/src/aio_write.c index a510946837..dec08fe345 100644 --- a/cpukit/posix/src/aio_write.c +++ b/cpukit/posix/src/aio_write.c @@ -2,7 +2,7 @@ * @file * * @brief Function queues I/O request described by buffer pointed by aiocb - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/alarm.c b/cpukit/posix/src/alarm.c index 22ffcae5c3..5130b0162b 100644 --- a/cpukit/posix/src/alarm.c +++ b/cpukit/posix/src/alarm.c @@ -2,7 +2,7 @@ * @file * * @brief System Generates Signal for process after realtime seconds elapsed - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/barrierattrdestroy.c b/cpukit/posix/src/barrierattrdestroy.c index c0a6fada2c..1e3cb17ae3 100644 --- a/cpukit/posix/src/barrierattrdestroy.c +++ b/cpukit/posix/src/barrierattrdestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Function shall Destroy a Barrier Attribues Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/barrierattrgetpshared.c b/cpukit/posix/src/barrierattrgetpshared.c index 1141fa5a5c..352b9ade0f 100644 --- a/cpukit/posix/src/barrierattrgetpshared.c +++ b/cpukit/posix/src/barrierattrgetpshared.c @@ -2,7 +2,7 @@ * @file * * @brief Barrier Attributes Get Process Shared - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/barrierattrinit.c b/cpukit/posix/src/barrierattrinit.c index 29d58f4991..342e9f2e0a 100644 --- a/cpukit/posix/src/barrierattrinit.c +++ b/cpukit/posix/src/barrierattrinit.c @@ -2,7 +2,7 @@ * @file * * @brief Initialize the Barrier Attributes Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/barrierattrsetpshared.c b/cpukit/posix/src/barrierattrsetpshared.c index 897a833946..22cefcf4f4 100644 --- a/cpukit/posix/src/barrierattrsetpshared.c +++ b/cpukit/posix/src/barrierattrsetpshared.c @@ -2,7 +2,7 @@ * @file * * @brief Set the Process-Shared Attribute of the Barrier Attributes Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/cancel.c b/cpukit/posix/src/cancel.c index 42321ce93b..77ccf8c238 100644 --- a/cpukit/posix/src/cancel.c +++ b/cpukit/posix/src/cancel.c @@ -2,7 +2,7 @@ * @file * * @brief Canceling Execution of a Thread - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/canceleval.c b/cpukit/posix/src/canceleval.c index 804efb4726..973d2a7db1 100644 --- a/cpukit/posix/src/canceleval.c +++ b/cpukit/posix/src/canceleval.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX Function Evaluates Thread Cancellation and Enables Dispatch - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/cancelrun.c b/cpukit/posix/src/cancelrun.c index 39a8de763d..2d73bdaca7 100644 --- a/cpukit/posix/src/cancelrun.c +++ b/cpukit/posix/src/cancelrun.c @@ -2,7 +2,7 @@ * @file * * @brief Executes a thread's cancellation handlers - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/cleanuppop.c b/cpukit/posix/src/cleanuppop.c index 9e198f74c9..bbadec5f11 100644 --- a/cpukit/posix/src/cleanuppop.c +++ b/cpukit/posix/src/cleanuppop.c @@ -2,7 +2,7 @@ * @file * * @brief Removes Routine from Top of Calling Thread's stack and Invoke it - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/cleanuppush.c b/cpukit/posix/src/cleanuppush.c index 87df540555..4fb82c250b 100644 --- a/cpukit/posix/src/cleanuppush.c +++ b/cpukit/posix/src/cleanuppush.c @@ -2,7 +2,7 @@ * @file * * @brief Establishing Cancellation Handlers - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/clockgetcpuclockid.c b/cpukit/posix/src/clockgetcpuclockid.c index fb04e174aa..d69783cb83 100644 --- a/cpukit/posix/src/clockgetcpuclockid.c +++ b/cpukit/posix/src/clockgetcpuclockid.c @@ -2,7 +2,7 @@ * @file * * @brief Function Returns Clock ID of CPU-time Clock of process specified - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/clockgetenableattr.c b/cpukit/posix/src/clockgetenableattr.c index 8420c2be88..b6a638b100 100644 --- a/cpukit/posix/src/clockgetenableattr.c +++ b/cpukit/posix/src/clockgetenableattr.c @@ -2,7 +2,7 @@ * @file * * @brief Clock get Enable Attribute Access - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/clockgetres.c b/cpukit/posix/src/clockgetres.c index 60d516d26e..08fd773a11 100644 --- a/cpukit/posix/src/clockgetres.c +++ b/cpukit/posix/src/clockgetres.c @@ -2,7 +2,7 @@ * @file * * @brief Function Returns the Resolution of any Clock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/clockgettime.c b/cpukit/posix/src/clockgettime.c index 46c1d46811..a8aa0f09bb 100644 --- a/cpukit/posix/src/clockgettime.c +++ b/cpukit/posix/src/clockgettime.c @@ -2,7 +2,7 @@ * @file * * @brief Retrieves the Specified Clock Time - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/clocksetenableattr.c b/cpukit/posix/src/clocksetenableattr.c index 592b82341e..d6e2c11e84 100644 --- a/cpukit/posix/src/clocksetenableattr.c +++ b/cpukit/posix/src/clocksetenableattr.c @@ -2,7 +2,7 @@ * @file * * @brief Clock set Enable Attribute Access - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/clocksettime.c b/cpukit/posix/src/clocksettime.c index 7e7edb4f56..df9d81da82 100644 --- a/cpukit/posix/src/clocksettime.c +++ b/cpukit/posix/src/clocksettime.c @@ -2,7 +2,7 @@ * @file * * @brief Set Time of Clock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/condattrdestroy.c b/cpukit/posix/src/condattrdestroy.c index 6f686fe1df..3c54fcb3a0 100644 --- a/cpukit/posix/src/condattrdestroy.c +++ b/cpukit/posix/src/condattrdestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Destroy Condition Attribute - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/condattrgetpshared.c b/cpukit/posix/src/condattrgetpshared.c index 298c2618b3..080253d0ed 100644 --- a/cpukit/posix/src/condattrgetpshared.c +++ b/cpukit/posix/src/condattrgetpshared.c @@ -2,7 +2,7 @@ * @file * * @brief Get the Process-Shared Condition Variable Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/condattrinit.c b/cpukit/posix/src/condattrinit.c index 89b806cb7e..edd7e7b5d2 100644 --- a/cpukit/posix/src/condattrinit.c +++ b/cpukit/posix/src/condattrinit.c @@ -2,7 +2,7 @@ * @file * * @brief Initialization of Conditional Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/condattrsetpshared.c b/cpukit/posix/src/condattrsetpshared.c index 4e00c920c5..b38782a6f4 100644 --- a/cpukit/posix/src/condattrsetpshared.c +++ b/cpukit/posix/src/condattrsetpshared.c @@ -2,7 +2,7 @@ * @file * * @brief Initialize Condition Variable Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/condbroadcast.c b/cpukit/posix/src/condbroadcast.c index 6506d87d98..7ae1eade2e 100644 --- a/cpukit/posix/src/condbroadcast.c +++ b/cpukit/posix/src/condbroadcast.c @@ -2,7 +2,7 @@ * @file * * @brief Broadcast a Condition - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/conddefaultattributes.c b/cpukit/posix/src/conddefaultattributes.c index 32ec64d69a..d7a4545a34 100644 --- a/cpukit/posix/src/conddefaultattributes.c +++ b/cpukit/posix/src/conddefaultattributes.c @@ -2,7 +2,7 @@ * @file * * @brief Condition variable Attributes structure - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/conddestroy.c b/cpukit/posix/src/conddestroy.c index 0f32b89da3..99f60569e2 100644 --- a/cpukit/posix/src/conddestroy.c +++ b/cpukit/posix/src/conddestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Destroy a Condition Variable - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/condinit.c b/cpukit/posix/src/condinit.c index 2a8321192e..4123510ec2 100644 --- a/cpukit/posix/src/condinit.c +++ b/cpukit/posix/src/condinit.c @@ -2,7 +2,7 @@ * @file * * @brief Initialize a Condition Variable - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/condsignal.c b/cpukit/posix/src/condsignal.c index debc110143..c9ff936bfd 100644 --- a/cpukit/posix/src/condsignal.c +++ b/cpukit/posix/src/condsignal.c @@ -2,7 +2,7 @@ * @file * * @brief Signal a Condition - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/condtimedwait.c b/cpukit/posix/src/condtimedwait.c index 031376cfea..a78cb1ae5e 100644 --- a/cpukit/posix/src/condtimedwait.c +++ b/cpukit/posix/src/condtimedwait.c @@ -2,7 +2,7 @@ * @file * * @brief Waiting on a Condition - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/condwait.c b/cpukit/posix/src/condwait.c index 3162b4d97b..b50fb33592 100644 --- a/cpukit/posix/src/condwait.c +++ b/cpukit/posix/src/condwait.c @@ -2,7 +2,7 @@ * @file * * @brief Waiting on a Condition - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/execl.c b/cpukit/posix/src/execl.c index 61b9a74fce..4b2eb6cc6d 100644 --- a/cpukit/posix/src/execl.c +++ b/cpukit/posix/src/execl.c @@ -2,7 +2,7 @@ * @file * * @brief Process will get Executed and then Terminated by execl - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/execle.c b/cpukit/posix/src/execle.c index 1dbd3826a1..64edc6ee09 100644 --- a/cpukit/posix/src/execle.c +++ b/cpukit/posix/src/execle.c @@ -2,7 +2,7 @@ * @file * * @brief Execute a File - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/execlp.c b/cpukit/posix/src/execlp.c index 7a4c5142a6..402604e696 100644 --- a/cpukit/posix/src/execlp.c +++ b/cpukit/posix/src/execlp.c @@ -2,7 +2,7 @@ * @file * * @brief execlp() - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/execv.c b/cpukit/posix/src/execv.c index 26d62b123d..8baec845cc 100644 --- a/cpukit/posix/src/execv.c +++ b/cpukit/posix/src/execv.c @@ -2,7 +2,7 @@ * @file * * @brief Inoperable implementation of execv for POSIX threads - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/execve.c b/cpukit/posix/src/execve.c index 03320e52a0..b05a7f1cc7 100644 --- a/cpukit/posix/src/execve.c +++ b/cpukit/posix/src/execve.c @@ -2,7 +2,7 @@ * @file * * @brief Execute a Program - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/fork.c b/cpukit/posix/src/fork.c index 4cfccf4a02..7d5c803bde 100644 --- a/cpukit/posix/src/fork.c +++ b/cpukit/posix/src/fork.c @@ -2,7 +2,7 @@ * @file * * @brief Inoperable implementation of fork() for POSIX threads - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/getitimer.c b/cpukit/posix/src/getitimer.c index a7ee836b04..2264a6ffae 100644 --- a/cpukit/posix/src/getitimer.c +++ b/cpukit/posix/src/getitimer.c @@ -2,7 +2,7 @@ * @file * * @brief Function Gets Value of an Interval Timer - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/keycreate.c b/cpukit/posix/src/keycreate.c index 3ac462dbcb..b41b59017e 100644 --- a/cpukit/posix/src/keycreate.c +++ b/cpukit/posix/src/keycreate.c @@ -2,7 +2,7 @@ * @file * * @brief Thread-Specific Data Key Create - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/keydelete.c b/cpukit/posix/src/keydelete.c index 41d57772bf..5ef6261148 100644 --- a/cpukit/posix/src/keydelete.c +++ b/cpukit/posix/src/keydelete.c @@ -2,7 +2,7 @@ * @file * * @brief Deletes Thread-specific Data Key Previously Returned by keycreate.c - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/keyfreememory.c b/cpukit/posix/src/keyfreememory.c index 35e8a36918..f71af4f327 100644 --- a/cpukit/posix/src/keyfreememory.c +++ b/cpukit/posix/src/keyfreememory.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX Function Keys Free Memory - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/keygetspecific.c b/cpukit/posix/src/keygetspecific.c index 3a34359297..debad830ae 100644 --- a/cpukit/posix/src/keygetspecific.c +++ b/cpukit/posix/src/keygetspecific.c @@ -2,7 +2,7 @@ * @file * * @brief Thread-Specific Data Management - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/keysetspecific.c b/cpukit/posix/src/keysetspecific.c index e631127fba..b25e44ccbf 100644 --- a/cpukit/posix/src/keysetspecific.c +++ b/cpukit/posix/src/keysetspecific.c @@ -2,7 +2,7 @@ * @file * * @brief Set Specific Key - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/kill.c b/cpukit/posix/src/kill.c index 8a476e40ce..cf60cac5a1 100644 --- a/cpukit/posix/src/kill.c +++ b/cpukit/posix/src/kill.c @@ -2,7 +2,7 @@ * @file * * @brief Send a Signal to a Process - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/kill_r.c b/cpukit/posix/src/kill_r.c index 739fed7358..57f5c24473 100644 --- a/cpukit/posix/src/kill_r.c +++ b/cpukit/posix/src/kill_r.c @@ -2,7 +2,7 @@ * @file * * @brief Send a Signal to a Process - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/killinfo.c b/cpukit/posix/src/killinfo.c index b7b556de39..f386757e8f 100644 --- a/cpukit/posix/src/killinfo.c +++ b/cpukit/posix/src/killinfo.c @@ -2,7 +2,7 @@ * @file * * @brief Send a Signal to a Process - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/lio_listio.c b/cpukit/posix/src/lio_listio.c index 9b53b4d858..64a578f22b 100644 --- a/cpukit/posix/src/lio_listio.c +++ b/cpukit/posix/src/lio_listio.c @@ -2,7 +2,7 @@ * @file * * @brief Function Initiates a List of I/O Requests with Single Function Call - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mprotect.c b/cpukit/posix/src/mprotect.c index 32de472a21..cb9161b9ad 100644 --- a/cpukit/posix/src/mprotect.c +++ b/cpukit/posix/src/mprotect.c @@ -2,7 +2,7 @@ * @file * * @brief Change Memory Protection - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mqueueclose.c b/cpukit/posix/src/mqueueclose.c index 8492c90705..4f1bb41bd3 100644 --- a/cpukit/posix/src/mqueueclose.c +++ b/cpukit/posix/src/mqueueclose.c @@ -2,7 +2,7 @@ * @file * * @brief Function closes the Message Queue - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mqueuegetattr.c b/cpukit/posix/src/mqueuegetattr.c index cfcc51af1e..0f250f1c2d 100644 --- a/cpukit/posix/src/mqueuegetattr.c +++ b/cpukit/posix/src/mqueuegetattr.c @@ -2,7 +2,7 @@ * @file * * @brief Message Queue Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mqueueopen.c b/cpukit/posix/src/mqueueopen.c index d5f783990e..01d3d57351 100644 --- a/cpukit/posix/src/mqueueopen.c +++ b/cpukit/posix/src/mqueueopen.c @@ -2,7 +2,7 @@ * @file * * @brief Creates a new POSIX Message Queue or Opens an Existing Queue - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mqueuesend.c b/cpukit/posix/src/mqueuesend.c index 0d67b6d337..11016e4830 100644 --- a/cpukit/posix/src/mqueuesend.c +++ b/cpukit/posix/src/mqueuesend.c @@ -2,7 +2,7 @@ * @file * * @brief Adds Message Pointed by msg_ptr to Message Queue Reffered by mqdes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mqueuesendsupp.c b/cpukit/posix/src/mqueuesendsupp.c index 3fbe0fb164..1f9bf63d5a 100644 --- a/cpukit/posix/src/mqueuesendsupp.c +++ b/cpukit/posix/src/mqueuesendsupp.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX Message Queue and Send Support - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mqueuetimedreceive.c b/cpukit/posix/src/mqueuetimedreceive.c index 58f796160c..53b3364a8f 100644 --- a/cpukit/posix/src/mqueuetimedreceive.c +++ b/cpukit/posix/src/mqueuetimedreceive.c @@ -2,7 +2,7 @@ * @file * * @brief Receive Message from Message Queue - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mqueuetranslatereturncode.c b/cpukit/posix/src/mqueuetranslatereturncode.c index 34edf80a24..614226188d 100644 --- a/cpukit/posix/src/mqueuetranslatereturncode.c +++ b/cpukit/posix/src/mqueuetranslatereturncode.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX Error Translation in Message Queue - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrdestroy.c b/cpukit/posix/src/mutexattrdestroy.c index 06d5c1d2fc..5573b7284f 100644 --- a/cpukit/posix/src/mutexattrdestroy.c +++ b/cpukit/posix/src/mutexattrdestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Destroy Mutex Attributes Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrgetprioceiling.c b/cpukit/posix/src/mutexattrgetprioceiling.c index 949fd3b32c..1ce6c692ca 100644 --- a/cpukit/posix/src/mutexattrgetprioceiling.c +++ b/cpukit/posix/src/mutexattrgetprioceiling.c @@ -2,7 +2,7 @@ * @file * * @brief Mutex Initialization Scheduling Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrgetprotocol.c b/cpukit/posix/src/mutexattrgetprotocol.c index 1824b3fff9..59fe109041 100644 --- a/cpukit/posix/src/mutexattrgetprotocol.c +++ b/cpukit/posix/src/mutexattrgetprotocol.c @@ -2,7 +2,7 @@ * @file * * @brief Get protocol Attribute of Mutex Attribute Obect - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrgetpshared.c b/cpukit/posix/src/mutexattrgetpshared.c index d32ef838b6..6ddba3a320 100644 --- a/cpukit/posix/src/mutexattrgetpshared.c +++ b/cpukit/posix/src/mutexattrgetpshared.c @@ -2,7 +2,7 @@ * @file * * @brief Obtaining process-shared Attribute Value from the Attributes Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrgettype.c b/cpukit/posix/src/mutexattrgettype.c index 9137271d9d..365defc787 100644 --- a/cpukit/posix/src/mutexattrgettype.c +++ b/cpukit/posix/src/mutexattrgettype.c @@ -2,7 +2,7 @@ * @file * * @brief Function gets the Mutex Type Attribute - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrinit.c b/cpukit/posix/src/mutexattrinit.c index 9e1345ee6d..64f077b103 100644 --- a/cpukit/posix/src/mutexattrinit.c +++ b/cpukit/posix/src/mutexattrinit.c @@ -2,7 +2,7 @@ * @file * * @brief Mutex Initialization Attribute - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrsetprioceiling.c b/cpukit/posix/src/mutexattrsetprioceiling.c index 82c83cf80e..69e1f91157 100644 --- a/cpukit/posix/src/mutexattrsetprioceiling.c +++ b/cpukit/posix/src/mutexattrsetprioceiling.c @@ -2,7 +2,7 @@ * @file * * @brief Mutex Initialization Scheduling Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrsetprotocol.c b/cpukit/posix/src/mutexattrsetprotocol.c index fc7c1afe74..c32655025e 100644 --- a/cpukit/posix/src/mutexattrsetprotocol.c +++ b/cpukit/posix/src/mutexattrsetprotocol.c @@ -2,7 +2,7 @@ * @file * * @brief Mutex Initialization Scheduling Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrsetpshared.c b/cpukit/posix/src/mutexattrsetpshared.c index 87e8b52f2b..a97265f2df 100644 --- a/cpukit/posix/src/mutexattrsetpshared.c +++ b/cpukit/posix/src/mutexattrsetpshared.c @@ -2,7 +2,7 @@ * @file * * @brief Function sets Current pshared Attribute for Mutex Attributes Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexattrsettype.c b/cpukit/posix/src/mutexattrsettype.c index 861e616ad3..024f6e6b1f 100644 --- a/cpukit/posix/src/mutexattrsettype.c +++ b/cpukit/posix/src/mutexattrsettype.c @@ -2,7 +2,7 @@ * @file * * @brief Set a Mutex Type - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexdestroy.c b/cpukit/posix/src/mutexdestroy.c index 4a9f1e964a..f733ce714c 100644 --- a/cpukit/posix/src/mutexdestroy.c +++ b/cpukit/posix/src/mutexdestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Initializing and Destroying a Mutex - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexget.c b/cpukit/posix/src/mutexget.c index 44d1864118..e8b84eaf3e 100644 --- a/cpukit/posix/src/mutexget.c +++ b/cpukit/posix/src/mutexget.c @@ -2,7 +2,7 @@ * @file * * @brief Convert POSIX Mutex ID to local object pointer - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexgetprioceiling.c b/cpukit/posix/src/mutexgetprioceiling.c index 21287e2c38..8355286ebc 100644 --- a/cpukit/posix/src/mutexgetprioceiling.c +++ b/cpukit/posix/src/mutexgetprioceiling.c @@ -2,7 +2,7 @@ * @file * * @brief Returns the Current Priority Ceiling of the Mutex - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexinit.c b/cpukit/posix/src/mutexinit.c index 5ef3485ee2..979e5b84b9 100644 --- a/cpukit/posix/src/mutexinit.c +++ b/cpukit/posix/src/mutexinit.c @@ -2,7 +2,7 @@ * @file * * @brief Initialize a Mutex - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexlock.c b/cpukit/posix/src/mutexlock.c index be5e4d56df..6777048424 100644 --- a/cpukit/posix/src/mutexlock.c +++ b/cpukit/posix/src/mutexlock.c @@ -2,7 +2,7 @@ * @file * * @brief Call to function enables locking of Mutex Object referenced by mutex - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexlocksupp.c b/cpukit/posix/src/mutexlocksupp.c index 6b5d7bd92f..0a35e3c661 100644 --- a/cpukit/posix/src/mutexlocksupp.c +++ b/cpukit/posix/src/mutexlocksupp.c @@ -2,7 +2,7 @@ * @file * * @brief Support Call to function Enables Locking of Mutex Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexsetprioceiling.c b/cpukit/posix/src/mutexsetprioceiling.c index b11c4570ab..920d6fae92 100644 --- a/cpukit/posix/src/mutexsetprioceiling.c +++ b/cpukit/posix/src/mutexsetprioceiling.c @@ -2,7 +2,7 @@ * @file * * @brief Changes the Priority Ceiling of a Mutex and Releases it - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutextimedlock.c b/cpukit/posix/src/mutextimedlock.c index 442f3c6052..e5d6019d55 100644 --- a/cpukit/posix/src/mutextimedlock.c +++ b/cpukit/posix/src/mutextimedlock.c @@ -2,7 +2,7 @@ * @file * * @brief Mutex Timed Lock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutextrylock.c b/cpukit/posix/src/mutextrylock.c index f398dc208a..a354c8089d 100644 --- a/cpukit/posix/src/mutextrylock.c +++ b/cpukit/posix/src/mutextrylock.c @@ -2,7 +2,7 @@ * @file * * @brief Try to Lock Mutex - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/mutexunlock.c b/cpukit/posix/src/mutexunlock.c index 75eaec73c1..cfe8bdbeeb 100644 --- a/cpukit/posix/src/mutexunlock.c +++ b/cpukit/posix/src/mutexunlock.c @@ -2,7 +2,7 @@ * @file * * @brief Locking and Unlocking a Mutex - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/nanosleep.c b/cpukit/posix/src/nanosleep.c index 02abe55cec..b59b9934b0 100644 --- a/cpukit/posix/src/nanosleep.c +++ b/cpukit/posix/src/nanosleep.c @@ -2,7 +2,7 @@ * @file * * @brief Suspends Execution of calling thread until Time elaps - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pause.c b/cpukit/posix/src/pause.c index ee74f6746b..5700fe9992 100644 --- a/cpukit/posix/src/pause.c +++ b/cpukit/posix/src/pause.c @@ -2,7 +2,7 @@ * @file * * @brief Suspend Process Execution - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pbarrierdestroy.c b/cpukit/posix/src/pbarrierdestroy.c index 6b2e9d0bc9..66f701452f 100644 --- a/cpukit/posix/src/pbarrierdestroy.c +++ b/cpukit/posix/src/pbarrierdestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Destroy a Barrier Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pbarrierinit.c b/cpukit/posix/src/pbarrierinit.c index c3077cb903..edf7e7ca32 100644 --- a/cpukit/posix/src/pbarrierinit.c +++ b/cpukit/posix/src/pbarrierinit.c @@ -2,7 +2,7 @@ * @file * * @brief Call to Function Enables Reinitializing of the Barrier - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pbarriertranslatereturncode.c b/cpukit/posix/src/pbarriertranslatereturncode.c index e8a53ec459..e9552d1f7d 100644 --- a/cpukit/posix/src/pbarriertranslatereturncode.c +++ b/cpukit/posix/src/pbarriertranslatereturncode.c @@ -2,7 +2,7 @@ * @file * * @brief Function Translates POSIX Barrier Status Code - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pbarrierwait.c b/cpukit/posix/src/pbarrierwait.c index 0ad9634411..e941bf5d7f 100644 --- a/cpukit/posix/src/pbarrierwait.c +++ b/cpukit/posix/src/pbarrierwait.c @@ -2,7 +2,7 @@ * @file * * @brief Wait at a Barrier - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/prwlockdestroy.c b/cpukit/posix/src/prwlockdestroy.c index 9b644ba943..6c99abf128 100644 --- a/cpukit/posix/src/prwlockdestroy.c +++ b/cpukit/posix/src/prwlockdestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Destroy a RWLock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* * COPYRIGHT (c) 1989-2007. diff --git a/cpukit/posix/src/prwlockinit.c b/cpukit/posix/src/prwlockinit.c index 61825fe1d5..0ee53e84d5 100644 --- a/cpukit/posix/src/prwlockinit.c +++ b/cpukit/posix/src/prwlockinit.c @@ -2,7 +2,7 @@ * @file * * @brief Allocate resources to use the read-write lock and Initialize it - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/prwlockrdlock.c b/cpukit/posix/src/prwlockrdlock.c index 0ce4764915..24adcb451c 100644 --- a/cpukit/posix/src/prwlockrdlock.c +++ b/cpukit/posix/src/prwlockrdlock.c @@ -2,7 +2,7 @@ * @file * * @brief Obtain a Read Lock on a RWLock Instance - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/prwlocktimedrdlock.c b/cpukit/posix/src/prwlocktimedrdlock.c index 95a3fa5423..414fec3fd3 100644 --- a/cpukit/posix/src/prwlocktimedrdlock.c +++ b/cpukit/posix/src/prwlocktimedrdlock.c @@ -2,7 +2,7 @@ * @file * * @brief Attempt to Obtain a Read Lock on a RWLock Instance - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/prwlocktimedwrlock.c b/cpukit/posix/src/prwlocktimedwrlock.c index ca435373ff..84aa3a00ff 100644 --- a/cpukit/posix/src/prwlocktimedwrlock.c +++ b/cpukit/posix/src/prwlocktimedwrlock.c @@ -2,7 +2,7 @@ * @file * * @brief Function applies a Write lock to RWLock referenced by rwlock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/prwlocktryrdlock.c b/cpukit/posix/src/prwlocktryrdlock.c index f8524e34d2..f58467743c 100644 --- a/cpukit/posix/src/prwlocktryrdlock.c +++ b/cpukit/posix/src/prwlocktryrdlock.c @@ -2,7 +2,7 @@ * @file * * @brief Attempt to Obtain a Read Lock on a RWLock Instance - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/prwlocktrywrlock.c b/cpukit/posix/src/prwlocktrywrlock.c index f8857a831b..6b51d17611 100644 --- a/cpukit/posix/src/prwlocktrywrlock.c +++ b/cpukit/posix/src/prwlocktrywrlock.c @@ -2,7 +2,7 @@ * @file * * @brief Attempt to Obtain a Write Lock on a RWLock Instance - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/prwlockunlock.c b/cpukit/posix/src/prwlockunlock.c index 79042b259d..d9c2f6fa75 100644 --- a/cpukit/posix/src/prwlockunlock.c +++ b/cpukit/posix/src/prwlockunlock.c @@ -2,7 +2,7 @@ * @file * * @brief Function Releases a lock held on RWLock object referenced by rwlock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/prwlockwrlock.c b/cpukit/posix/src/prwlockwrlock.c index 16e5ecd6f1..672772e6e3 100644 --- a/cpukit/posix/src/prwlockwrlock.c +++ b/cpukit/posix/src/prwlockwrlock.c @@ -2,7 +2,7 @@ * @file * * @brief Obtain a Write Lock on a RWlock Instance - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/psignalclearprocesssignals.c b/cpukit/posix/src/psignalclearprocesssignals.c index 3d1d16b5aa..b16398c8cf 100644 --- a/cpukit/posix/src/psignalclearprocesssignals.c +++ b/cpukit/posix/src/psignalclearprocesssignals.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX_signals clear_process_signals - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pspindestroy.c b/cpukit/posix/src/pspindestroy.c index 97745b6b77..f49fd47348 100644 --- a/cpukit/posix/src/pspindestroy.c +++ b/cpukit/posix/src/pspindestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Destroy a Spinlock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pspininit.c b/cpukit/posix/src/pspininit.c index 030bb50ae2..164cb5039f 100644 --- a/cpukit/posix/src/pspininit.c +++ b/cpukit/posix/src/pspininit.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX Function Initializes a Spinlock Instance - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pspinlock.c b/cpukit/posix/src/pspinlock.c index 7f6793c1d5..3d0aed903b 100644 --- a/cpukit/posix/src/pspinlock.c +++ b/cpukit/posix/src/pspinlock.c @@ -2,7 +2,7 @@ * @file * * @brief Wait at a Spinlock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pspintrylock.c b/cpukit/posix/src/pspintrylock.c index de89b4e579..08ace6d9da 100644 --- a/cpukit/posix/src/pspintrylock.c +++ b/cpukit/posix/src/pspintrylock.c @@ -2,7 +2,7 @@ * @file * * @brief Wait at a Spinlock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pspinunlock.c b/cpukit/posix/src/pspinunlock.c index 67a69cbc02..8f7c5b1e96 100644 --- a/cpukit/posix/src/pspinunlock.c +++ b/cpukit/posix/src/pspinunlock.c @@ -2,7 +2,7 @@ * @file * * @brief Function Unlocks a Spin Lock Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/psxnametoid.c b/cpukit/posix/src/psxnametoid.c index d75d5d43df..4049970e8c 100644 --- a/cpukit/posix/src/psxnametoid.c +++ b/cpukit/posix/src/psxnametoid.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX Name to ID - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadatfork.c b/cpukit/posix/src/pthreadatfork.c index 558bc77555..59c358c819 100644 --- a/cpukit/posix/src/pthreadatfork.c +++ b/cpukit/posix/src/pthreadatfork.c @@ -2,7 +2,7 @@ * @file * * @brief Register Fork Handlers - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrdestroy.c b/cpukit/posix/src/pthreadattrdestroy.c index 27d58ccec7..eebda081bf 100644 --- a/cpukit/posix/src/pthreadattrdestroy.c +++ b/cpukit/posix/src/pthreadattrdestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Thread Creation Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrgetdetachstate.c b/cpukit/posix/src/pthreadattrgetdetachstate.c index bd23cb7f30..fd66a6bd47 100644 --- a/cpukit/posix/src/pthreadattrgetdetachstate.c +++ b/cpukit/posix/src/pthreadattrgetdetachstate.c @@ -2,7 +2,7 @@ * @file * * @brief Function gets the detachstate Attribute in the attr Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrgetguardsize.c b/cpukit/posix/src/pthreadattrgetguardsize.c index 81eee4f9f9..1258a3a771 100644 --- a/cpukit/posix/src/pthreadattrgetguardsize.c +++ b/cpukit/posix/src/pthreadattrgetguardsize.c @@ -2,7 +2,7 @@ * @file * * @brief Thread Creation Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrgetinheritsched.c b/cpukit/posix/src/pthreadattrgetinheritsched.c index 84f1fa560f..629519f2fe 100644 --- a/cpukit/posix/src/pthreadattrgetinheritsched.c +++ b/cpukit/posix/src/pthreadattrgetinheritsched.c @@ -2,7 +2,7 @@ * @file * * @brief Thread Creation Scheduling Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrgetschedparam.c b/cpukit/posix/src/pthreadattrgetschedparam.c index eee962f854..cf0fa82ad1 100644 --- a/cpukit/posix/src/pthreadattrgetschedparam.c +++ b/cpukit/posix/src/pthreadattrgetschedparam.c @@ -2,7 +2,7 @@ * @file * * @brief Returns Scheduling Parameter Attributes of Thread Attributes Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrgetschedpolicy.c b/cpukit/posix/src/pthreadattrgetschedpolicy.c index 6b57e8a2ca..0db47ef6bb 100644 --- a/cpukit/posix/src/pthreadattrgetschedpolicy.c +++ b/cpukit/posix/src/pthreadattrgetschedpolicy.c @@ -2,7 +2,7 @@ * @file * * @brief Get The Schedpolicy Attribute - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrgetscope.c b/cpukit/posix/src/pthreadattrgetscope.c index ee5ed4c044..617f8fde0d 100644 --- a/cpukit/posix/src/pthreadattrgetscope.c +++ b/cpukit/posix/src/pthreadattrgetscope.c @@ -2,7 +2,7 @@ * @file * * @brief Function gets the Contentionscope Attribute in the attr object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrgetstack.c b/cpukit/posix/src/pthreadattrgetstack.c index a1254ae7a1..298383556b 100644 --- a/cpukit/posix/src/pthreadattrgetstack.c +++ b/cpukit/posix/src/pthreadattrgetstack.c @@ -2,7 +2,7 @@ * @file * * @brief Function Gets the Thread Creation Stack Attributes in the attr - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrgetstackaddr.c b/cpukit/posix/src/pthreadattrgetstackaddr.c index dfdffbd662..e169bc6ecc 100644 --- a/cpukit/posix/src/pthreadattrgetstackaddr.c +++ b/cpukit/posix/src/pthreadattrgetstackaddr.c @@ -2,7 +2,7 @@ * @file * * @brief Thread Creation Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrgetstacksize.c b/cpukit/posix/src/pthreadattrgetstacksize.c index 06854ca54b..97c0b9478e 100644 --- a/cpukit/posix/src/pthreadattrgetstacksize.c +++ b/cpukit/posix/src/pthreadattrgetstacksize.c @@ -2,7 +2,7 @@ * @file * * @brief Thread Creation Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrinit.c b/cpukit/posix/src/pthreadattrinit.c index 1e5211bfd6..dd3f222cf6 100644 --- a/cpukit/posix/src/pthreadattrinit.c +++ b/cpukit/posix/src/pthreadattrinit.c @@ -2,7 +2,7 @@ * @file * * @brief Thread Attributes Creation - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrsetdetachstate.c b/cpukit/posix/src/pthreadattrsetdetachstate.c index a76d304a43..1d5feb817a 100644 --- a/cpukit/posix/src/pthreadattrsetdetachstate.c +++ b/cpukit/posix/src/pthreadattrsetdetachstate.c @@ -2,7 +2,7 @@ * @file * * @brief Thread Creation Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrsetguardsize.c b/cpukit/posix/src/pthreadattrsetguardsize.c index 7656d4fee9..f6df5784ef 100644 --- a/cpukit/posix/src/pthreadattrsetguardsize.c +++ b/cpukit/posix/src/pthreadattrsetguardsize.c @@ -2,7 +2,7 @@ * @file * * @brief Thread Creation Attributes - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrsetinheritsched.c b/cpukit/posix/src/pthreadattrsetinheritsched.c index 2951444fcf..8f414abed3 100644 --- a/cpukit/posix/src/pthreadattrsetinheritsched.c +++ b/cpukit/posix/src/pthreadattrsetinheritsched.c @@ -2,7 +2,7 @@ * @file * * @brief Function sets the inheritsched Attribute in the attr Argument - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrsetschedparam.c b/cpukit/posix/src/pthreadattrsetschedparam.c index 65e560198f..f84ff0ec9e 100644 --- a/cpukit/posix/src/pthreadattrsetschedparam.c +++ b/cpukit/posix/src/pthreadattrsetschedparam.c @@ -2,7 +2,7 @@ * @file * * @brief Thread Creation Scheduling Parameters - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrsetschedpolicy.c b/cpukit/posix/src/pthreadattrsetschedpolicy.c index ee7fe1fce3..4b4187ef40 100644 --- a/cpukit/posix/src/pthreadattrsetschedpolicy.c +++ b/cpukit/posix/src/pthreadattrsetschedpolicy.c @@ -2,7 +2,7 @@ * @file * * @brief Sets Scheduling policy Attributes of Thread Attributes Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrsetscope.c b/cpukit/posix/src/pthreadattrsetscope.c index d468524086..db2c931388 100644 --- a/cpukit/posix/src/pthreadattrsetscope.c +++ b/cpukit/posix/src/pthreadattrsetscope.c @@ -2,7 +2,7 @@ * @file * * @brief Function Sets the Contentionscope Attribute in the attr Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrsetstack.c b/cpukit/posix/src/pthreadattrsetstack.c index 04231ed791..e512c160e2 100644 --- a/cpukit/posix/src/pthreadattrsetstack.c +++ b/cpukit/posix/src/pthreadattrsetstack.c @@ -2,7 +2,7 @@ * @file * * @brief Function Sets Thread Creation Stack Attributes in the attr object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrsetstackaddr.c b/cpukit/posix/src/pthreadattrsetstackaddr.c index 1696bb95ac..1ac4720c09 100644 --- a/cpukit/posix/src/pthreadattrsetstackaddr.c +++ b/cpukit/posix/src/pthreadattrsetstackaddr.c @@ -2,7 +2,7 @@ * @file * * @brief Sets the Thread Creation stackaddr Attribute in the attr Object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadattrsetstacksize.c b/cpukit/posix/src/pthreadattrsetstacksize.c index eb269e3df9..313034ce02 100644 --- a/cpukit/posix/src/pthreadattrsetstacksize.c +++ b/cpukit/posix/src/pthreadattrsetstacksize.c @@ -2,7 +2,7 @@ * @file * * @brief Sets the Thread Creation Stacksize Attribute in the attr object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadcreate.c b/cpukit/posix/src/pthreadcreate.c index 30551ac64c..9585772d17 100644 --- a/cpukit/posix/src/pthreadcreate.c +++ b/cpukit/posix/src/pthreadcreate.c @@ -2,7 +2,7 @@ * @file * * @brief Function Starts a New Thread in The Calling Process - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreaddetach.c b/cpukit/posix/src/pthreaddetach.c index 682bac8b42..824537eb8c 100644 --- a/cpukit/posix/src/pthreaddetach.c +++ b/cpukit/posix/src/pthreaddetach.c @@ -2,7 +2,7 @@ * @file * * @brief Detaching a Thread - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadequal.c b/cpukit/posix/src/pthreadequal.c index ce08b1ea88..199cc8fb9a 100644 --- a/cpukit/posix/src/pthreadequal.c +++ b/cpukit/posix/src/pthreadequal.c @@ -2,7 +2,7 @@ * @file * * @brief Compare Thread IDs - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadgetcpuclockid.c b/cpukit/posix/src/pthreadgetcpuclockid.c index 0b7e3bbd28..2d95b00684 100644 --- a/cpukit/posix/src/pthreadgetcpuclockid.c +++ b/cpukit/posix/src/pthreadgetcpuclockid.c @@ -2,7 +2,7 @@ * @file * * @brief Returns Clock ID for CPU time clock of the thread - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadgetschedparam.c b/cpukit/posix/src/pthreadgetschedparam.c index 8c78ccca52..d681f0479a 100644 --- a/cpukit/posix/src/pthreadgetschedparam.c +++ b/cpukit/posix/src/pthreadgetschedparam.c @@ -2,7 +2,7 @@ * @file * * @brief Gets Scheduling Policy and Parameters of Individual Threads - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadjoin.c b/cpukit/posix/src/pthreadjoin.c index 115f39d103..8304aa3685 100644 --- a/cpukit/posix/src/pthreadjoin.c +++ b/cpukit/posix/src/pthreadjoin.c @@ -2,7 +2,7 @@ * @file * * @brief Suspends Execution of Calling Thread until Target Thread Terminates - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadkill.c b/cpukit/posix/src/pthreadkill.c index 420aaa567f..e0f395070d 100644 --- a/cpukit/posix/src/pthreadkill.c +++ b/cpukit/posix/src/pthreadkill.c @@ -2,7 +2,7 @@ * @file * * @brief Sends a signal Asynchronously directed to a thread - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadonce.c b/cpukit/posix/src/pthreadonce.c index 651e4d0539..0700a222c7 100644 --- a/cpukit/posix/src/pthreadonce.c +++ b/cpukit/posix/src/pthreadonce.c @@ -2,7 +2,7 @@ * @file * * @brief Call to function by Thread will call init_routine with no Arguments - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadself.c b/cpukit/posix/src/pthreadself.c index 0ed68be515..de6a40955b 100644 --- a/cpukit/posix/src/pthreadself.c +++ b/cpukit/posix/src/pthreadself.c @@ -2,7 +2,7 @@ * @file * * @brief Function returns the ID of the Calling Thread - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadsetschedparam.c b/cpukit/posix/src/pthreadsetschedparam.c index d574811ae0..06216f49a1 100644 --- a/cpukit/posix/src/pthreadsetschedparam.c +++ b/cpukit/posix/src/pthreadsetschedparam.c @@ -2,7 +2,7 @@ * @file * * @brief Function sets scheduling policy and parameters of the thread - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/pthreadsigmask.c b/cpukit/posix/src/pthreadsigmask.c index 9d47e44865..3f985bfa39 100644 --- a/cpukit/posix/src/pthreadsigmask.c +++ b/cpukit/posix/src/pthreadsigmask.c @@ -2,7 +2,7 @@ * @file * * @brief Examine and/or change the calling thread's signal mask - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/ptimer.c b/cpukit/posix/src/ptimer.c index 1d5ac6245e..540fb71cef 100644 --- a/cpukit/posix/src/ptimer.c +++ b/cpukit/posix/src/ptimer.c @@ -2,7 +2,7 @@ * @file * * @brief Process Timer - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/rwlockattrdestroy.c b/cpukit/posix/src/rwlockattrdestroy.c index 102b141704..925ff35e68 100644 --- a/cpukit/posix/src/rwlockattrdestroy.c +++ b/cpukit/posix/src/rwlockattrdestroy.c @@ -2,7 +2,7 @@ * @file * * @brief Function Destroys a read-write lock Attributes object - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/rwlockattrgetpshared.c b/cpukit/posix/src/rwlockattrgetpshared.c index 233cbffa22..95e059ee87 100644 --- a/cpukit/posix/src/rwlockattrgetpshared.c +++ b/cpukit/posix/src/rwlockattrgetpshared.c @@ -2,7 +2,7 @@ * @file * * @brief Get the Process-Shared Attribute of the RWLock - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/rwlockattrinit.c b/cpukit/posix/src/rwlockattrinit.c index 381cd52b0d..2baad73c3d 100644 --- a/cpukit/posix/src/rwlockattrinit.c +++ b/cpukit/posix/src/rwlockattrinit.c @@ -2,7 +2,7 @@ * @file * * @brief Initialises a RWLock Attributes object attr with the default value - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/rwlockattrsetpshared.c b/cpukit/posix/src/rwlockattrsetpshared.c index 5a32530e1e..80f53cd7af 100644 --- a/cpukit/posix/src/rwlockattrsetpshared.c +++ b/cpukit/posix/src/rwlockattrsetpshared.c @@ -2,7 +2,7 @@ * @file * * @brief RWLock Attributes Set Process Shared - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sched_getparam.c b/cpukit/posix/src/sched_getparam.c index d9e516a8ed..8e7336080d 100644 --- a/cpukit/posix/src/sched_getparam.c +++ b/cpukit/posix/src/sched_getparam.c @@ -2,7 +2,7 @@ * @file * * @brief Set Scheduling Parameters - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sched_getprioritymax.c b/cpukit/posix/src/sched_getprioritymax.c index 5a77e258f1..ab4c2056d1 100644 --- a/cpukit/posix/src/sched_getprioritymax.c +++ b/cpukit/posix/src/sched_getprioritymax.c @@ -2,7 +2,7 @@ * @file * * @brief Returns the Appropriate Maximum for Scheduling policy - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sched_getprioritymin.c b/cpukit/posix/src/sched_getprioritymin.c index 73d892de47..d419e66431 100644 --- a/cpukit/posix/src/sched_getprioritymin.c +++ b/cpukit/posix/src/sched_getprioritymin.c @@ -2,7 +2,7 @@ * @file * * @brief Get the Minimum Priority Limit - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sched_getscheduler.c b/cpukit/posix/src/sched_getscheduler.c index 6f12cd7868..92da28f854 100644 --- a/cpukit/posix/src/sched_getscheduler.c +++ b/cpukit/posix/src/sched_getscheduler.c @@ -2,7 +2,7 @@ * @file * * @brief Function Returns Scheduling Policy of the process specified by pid - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sched_rr_get_interval.c b/cpukit/posix/src/sched_rr_get_interval.c index b73f60f229..c606bc9ef2 100644 --- a/cpukit/posix/src/sched_rr_get_interval.c +++ b/cpukit/posix/src/sched_rr_get_interval.c @@ -2,7 +2,7 @@ * @file * * @brief Limits for Scheduling Parameter - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sched_setparam.c b/cpukit/posix/src/sched_setparam.c index 8e894e0978..e291292555 100644 --- a/cpukit/posix/src/sched_setparam.c +++ b/cpukit/posix/src/sched_setparam.c @@ -2,7 +2,7 @@ * @file * * @brief Sets Scheduling Parameters Associated with Scheduling Policies - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sched_setscheduler.c b/cpukit/posix/src/sched_setscheduler.c index f9b5c3f562..fef66f2aa7 100644 --- a/cpukit/posix/src/sched_setscheduler.c +++ b/cpukit/posix/src/sched_setscheduler.c @@ -2,7 +2,7 @@ * @file * * @brief Set Scheduling Policy and Scheduling Parameters - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sched_yield.c b/cpukit/posix/src/sched_yield.c index 1aa4713a85..207cbb286a 100644 --- a/cpukit/posix/src/sched_yield.c +++ b/cpukit/posix/src/sched_yield.c @@ -2,7 +2,7 @@ * @file * * @brief Yield Processor - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/semaphore.c b/cpukit/posix/src/semaphore.c index b214a3c302..58da098501 100644 --- a/cpukit/posix/src/semaphore.c +++ b/cpukit/posix/src/semaphore.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX Function Initializes Semaphore Manager - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/semaphorecreatesupp.c b/cpukit/posix/src/semaphorecreatesupp.c index 18fef72a03..026e7fafcd 100644 --- a/cpukit/posix/src/semaphorecreatesupp.c +++ b/cpukit/posix/src/semaphorecreatesupp.c @@ -2,7 +2,7 @@ * @file * * @brief Function does Actual creation and Initialization of POSIX Semaphore - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/semaphoretranslatereturncode.c b/cpukit/posix/src/semaphoretranslatereturncode.c index 2c54b9fb49..44885d6085 100644 --- a/cpukit/posix/src/semaphoretranslatereturncode.c +++ b/cpukit/posix/src/semaphoretranslatereturncode.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX Semaphore Code Translation Error - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/semaphorewaitsupp.c b/cpukit/posix/src/semaphorewaitsupp.c index 5b215dad23..08a26ee16f 100644 --- a/cpukit/posix/src/semaphorewaitsupp.c +++ b/cpukit/posix/src/semaphorewaitsupp.c @@ -2,11 +2,11 @@ * @file * * @brief POSIX Semaphore Wait Support - * @ingroup POSIX_SEMAPHORES Semaphore + * @ingroup POSIXSemaphorePrivate */ /* - * COPYRIGHT (c) 1989-2008. + * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -32,10 +32,6 @@ #include <rtems/posix/time.h> #include <rtems/seterr.h> -/* - * _POSIX_Semaphore_Wait_support - */ - int _POSIX_Semaphore_Wait_support( sem_t *sem, bool blocking, diff --git a/cpukit/posix/src/seminit.c b/cpukit/posix/src/seminit.c index be7056dcad..f0dcb7137f 100644 --- a/cpukit/posix/src/seminit.c +++ b/cpukit/posix/src/seminit.c @@ -2,7 +2,7 @@ * @file * * @brief Initializing of an Unnamed Semaphore - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/semopen.c b/cpukit/posix/src/semopen.c index 1ecd75105b..113c622e97 100644 --- a/cpukit/posix/src/semopen.c +++ b/cpukit/posix/src/semopen.c @@ -2,7 +2,7 @@ * @file * * @brief Function Creates New POSIX semaphore or Opens an existing Semaphore - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/setcancelstate.c b/cpukit/posix/src/setcancelstate.c index 31bef65eff..4d0699c310 100644 --- a/cpukit/posix/src/setcancelstate.c +++ b/cpukit/posix/src/setcancelstate.c @@ -2,7 +2,7 @@ * @file * * @brief Setting Cancelability State - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/setcanceltype.c b/cpukit/posix/src/setcanceltype.c index 6a82374229..115eebf638 100644 --- a/cpukit/posix/src/setcanceltype.c +++ b/cpukit/posix/src/setcanceltype.c @@ -2,7 +2,7 @@ * @file * * @brief Sets the Cancelability Type of Calling Thread to value given in type - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/setitimer.c b/cpukit/posix/src/setitimer.c index f8ab9efa56..3c84b469c7 100644 --- a/cpukit/posix/src/setitimer.c +++ b/cpukit/posix/src/setitimer.c @@ -2,7 +2,7 @@ * @file * * @brief Set the Timer - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigaction.c b/cpukit/posix/src/sigaction.c index b2906558e0..cfcc65cec4 100644 --- a/cpukit/posix/src/sigaction.c +++ b/cpukit/posix/src/sigaction.c @@ -2,7 +2,7 @@ * @file * * @brief Allows calling process to examine action of a Specific Signal - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigaddset.c b/cpukit/posix/src/sigaddset.c index d4e324fe5e..4ad925e563 100644 --- a/cpukit/posix/src/sigaddset.c +++ b/cpukit/posix/src/sigaddset.c @@ -2,7 +2,7 @@ * @file * * @brief Function Adds Signal from Set - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigdelset.c b/cpukit/posix/src/sigdelset.c index 7567689ccd..0d808163c1 100644 --- a/cpukit/posix/src/sigdelset.c +++ b/cpukit/posix/src/sigdelset.c @@ -2,7 +2,7 @@ * @file * * @brief Deleted Signal from Set - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigemptyset.c b/cpukit/posix/src/sigemptyset.c index 5cfc310ba1..270f67636f 100644 --- a/cpukit/posix/src/sigemptyset.c +++ b/cpukit/posix/src/sigemptyset.c @@ -2,7 +2,7 @@ * @file * * @brief Manipulate Signal Sets - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigfillset.c b/cpukit/posix/src/sigfillset.c index 32b1ef15d0..fb6ca50dfa 100644 --- a/cpukit/posix/src/sigfillset.c +++ b/cpukit/posix/src/sigfillset.c @@ -2,7 +2,7 @@ * @file * * @brief Manipulate Signal Sets - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigismember.c b/cpukit/posix/src/sigismember.c index 5591085af4..f08e9c7224 100644 --- a/cpukit/posix/src/sigismember.c +++ b/cpukit/posix/src/sigismember.c @@ -2,7 +2,7 @@ * @file * * @brief Manipulate Signal Sets - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/signal_2.c b/cpukit/posix/src/signal_2.c index 75f13d8f92..de15cf62e3 100644 --- a/cpukit/posix/src/signal_2.c +++ b/cpukit/posix/src/signal_2.c @@ -2,7 +2,7 @@ * @file * * @brief POSIX Function Installs signal Handler - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigpending.c b/cpukit/posix/src/sigpending.c index c62d878b6b..44dbe93127 100644 --- a/cpukit/posix/src/sigpending.c +++ b/cpukit/posix/src/sigpending.c @@ -2,7 +2,7 @@ * @file * * @brief Examine Pending Signals - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigprocmask.c b/cpukit/posix/src/sigprocmask.c index 464343bab0..b6daf81e35 100644 --- a/cpukit/posix/src/sigprocmask.c +++ b/cpukit/posix/src/sigprocmask.c @@ -2,7 +2,7 @@ * @file * * @brief Examine and Change Blocked Signals - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigqueue.c b/cpukit/posix/src/sigqueue.c index 8b65aba0cb..99c214745e 100644 --- a/cpukit/posix/src/sigqueue.c +++ b/cpukit/posix/src/sigqueue.c @@ -2,7 +2,7 @@ * @file * * @brief Queue a Signal to a Process - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigsuspend.c b/cpukit/posix/src/sigsuspend.c index b1f1c4cc77..c3ab2bb0a0 100644 --- a/cpukit/posix/src/sigsuspend.c +++ b/cpukit/posix/src/sigsuspend.c @@ -2,7 +2,7 @@ * @file * * @brief Replacing signal mask with *sigmask and suspending calling process - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigtimedwait.c b/cpukit/posix/src/sigtimedwait.c index b350a2cc33..ef8bbdfd8f 100644 --- a/cpukit/posix/src/sigtimedwait.c +++ b/cpukit/posix/src/sigtimedwait.c @@ -2,7 +2,7 @@ * @file * * @brief Wait for Queued Signals - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sigwait.c b/cpukit/posix/src/sigwait.c index 24afa80602..a51fe7b2ff 100644 --- a/cpukit/posix/src/sigwait.c +++ b/cpukit/posix/src/sigwait.c @@ -2,7 +2,7 @@ * @file * * @brief Synchronously Accept a Signal - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/sysconf.c b/cpukit/posix/src/sysconf.c index fb0939fbe2..65812d34a5 100644 --- a/cpukit/posix/src/sysconf.c +++ b/cpukit/posix/src/sysconf.c @@ -2,7 +2,7 @@ * @file * * @brief Get Configurable System Variables - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/testcancel.c b/cpukit/posix/src/testcancel.c index 6228af6165..e7e08d2b73 100644 --- a/cpukit/posix/src/testcancel.c +++ b/cpukit/posix/src/testcancel.c @@ -2,7 +2,7 @@ * @file * * @brief Setting test on Cancelability State - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/timerdelete.c b/cpukit/posix/src/timerdelete.c index 473c0df3fe..f8690eb2fc 100644 --- a/cpukit/posix/src/timerdelete.c +++ b/cpukit/posix/src/timerdelete.c @@ -2,7 +2,7 @@ * @file * * @brief Deletes a POSIX Interval Timer - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/timergettime.c b/cpukit/posix/src/timergettime.c index 823989a4e4..7b9de539b6 100644 --- a/cpukit/posix/src/timergettime.c +++ b/cpukit/posix/src/timergettime.c @@ -2,7 +2,7 @@ * @file * * @brief Function Fetches State of POSIX Per-Process Timers - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/timerinserthelper.c b/cpukit/posix/src/timerinserthelper.c index a1726770d9..eddc455f57 100644 --- a/cpukit/posix/src/timerinserthelper.c +++ b/cpukit/posix/src/timerinserthelper.c @@ -2,7 +2,7 @@ * @file * * @brief Helper Routine for POSIX TIMERS - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/timersettime.c b/cpukit/posix/src/timersettime.c index 00cce57b59..7bdcad8bad 100644 --- a/cpukit/posix/src/timersettime.c +++ b/cpukit/posix/src/timersettime.c @@ -2,7 +2,7 @@ * @file * * @brief Function Arms or Disarms the Timer Identified by timerid - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/ualarm.c b/cpukit/posix/src/ualarm.c index 34ab0a41cc..e9a4bb82ae 100644 --- a/cpukit/posix/src/ualarm.c +++ b/cpukit/posix/src/ualarm.c @@ -2,7 +2,7 @@ * @file * * @brief Schedule Alarm - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/vfork.c b/cpukit/posix/src/vfork.c index 3bb0f31b83..1d9fa71cf2 100644 --- a/cpukit/posix/src/vfork.c +++ b/cpukit/posix/src/vfork.c @@ -2,7 +2,7 @@ * @file * * @brief Creates Child process Of The Calling process - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/wait.c b/cpukit/posix/src/wait.c index 8e48af71d6..da22ab7486 100644 --- a/cpukit/posix/src/wait.c +++ b/cpukit/posix/src/wait.c @@ -2,7 +2,7 @@ * @file * * @brief Wait for Process to Change State - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/posix/src/waitpid.c b/cpukit/posix/src/waitpid.c index 03e4f7d731..3899fc427c 100644 --- a/cpukit/posix/src/waitpid.c +++ b/cpukit/posix/src/waitpid.c @@ -2,7 +2,7 @@ * @file * * @brief Wait for Process to Change State - * @ingroup POSIX + * @ingroup POSIXAPI */ /* diff --git a/cpukit/preinstall.am b/cpukit/preinstall.am index 26b90ecc75..d1e1f87804 100644 --- a/cpukit/preinstall.am +++ b/cpukit/preinstall.am @@ -43,7 +43,7 @@ $(PROJECT_INCLUDE)/sys/$(dirstamp): @: > $(PROJECT_INCLUDE)/sys/$(dirstamp) PREINSTALL_DIRS += $(PROJECT_INCLUDE)/sys/$(dirstamp) -$(PROJECT_INCLUDE)/memory.h: libnetworking/memory.h $(PROJECT_INCLUDE)/$(dirstamp) +$(PROJECT_INCLUDE)/memory.h: include/memory.h $(PROJECT_INCLUDE)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/memory.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/memory.h @@ -87,10 +87,14 @@ $(PROJECT_INCLUDE)/sys/utsname.h: libcsupport/include/sys/utsname.h $(PROJECT_IN $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/utsname.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/utsname.h -$(PROJECT_INCLUDE)/sys/uio.h: libnetworking/sys/uio.h $(PROJECT_INCLUDE)/sys/$(dirstamp) +$(PROJECT_INCLUDE)/sys/uio.h: include/sys/uio.h $(PROJECT_INCLUDE)/sys/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/uio.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/uio.h +$(PROJECT_INCLUDE)/sys/_iovec.h: include/sys/_iovec.h $(PROJECT_INCLUDE)/sys/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/_iovec.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/_iovec.h + $(PROJECT_INCLUDE)/sys/priority.h: include/sys/priority.h $(PROJECT_INCLUDE)/sys/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/priority.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/priority.h diff --git a/cpukit/rtems/include/rtems.h b/cpukit/rtems/include/rtems.h index 68c6a0b7b9..a644fa051c 100644 --- a/cpukit/rtems/include/rtems.h +++ b/cpukit/rtems/include/rtems.h @@ -1,17 +1,19 @@ /** * @file * - * @ingroup ClassicRTEMS + * @defgroup ClassicRTEMS RTEMS Classic API + * + * @brief RTEMS Classic API * - * @brief Provides the public interface to the RTEMS Classic API. + * the Public Interface to the RTEMS Classic API */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_H @@ -21,9 +23,8 @@ * @defgroup ClassicRTEMS RTEMS Classic API * * RTEMS Classic API definitions and modules. - * - * @{ */ +/**@{*/ #ifdef __cplusplus extern "C" { @@ -158,7 +159,7 @@ const char *rtems_get_version_string(void); * risk of blown stacks for most user applications. Using this constant when * specifying the task stack size, indicates that the stack size will be at * least RTEMS_MINIMUM_STACK_SIZE bytes in size. If the user configured minimum - * stack size is larger than the recommended minimum, then it will be used. + * stack size is larger than the recommended minimum, then it will be used. */ #define RTEMS_MINIMUM_STACK_SIZE STACK_MINIMUM_SIZE @@ -174,7 +175,7 @@ const char *rtems_get_version_string(void); * minimum stack size value, you may get a stack size that is smaller or larger * than the recommended minimum. This can be used to provide large stacks for * all tasks on complex applications or small stacks on applications that are - * trying to conserve memory. + * trying to conserve memory. */ #define RTEMS_CONFIGURED_MINIMUM_STACK_SIZE 0 diff --git a/cpukit/rtems/include/rtems/rtems/asr.h b/cpukit/rtems/include/rtems/rtems/asr.h index 372f4c7073..6516233328 100644 --- a/cpukit/rtems/include/rtems/rtems/asr.h +++ b/cpukit/rtems/include/rtems/rtems/asr.h @@ -1,19 +1,22 @@ /** * @file rtems/rtems/asr.h * - * @brief Constants and Structures Associated with the Asynchronous Signal Handler + * @defgroup ClassicASR ASR Support * - * This include file contains all the constants and structures associated - * with the Asynchronous Signal Handler. This Handler provides the low-level - * support required by the Signal Manager. + * @ingroup ClassicRTEMS + * @brief Asynchronous Signal Handler + * + * This include file contains all the constants and structures associated + * with the Asynchronous Signal Handler. This Handler provides the low-level + * support required by the Signal Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_ASR_H diff --git a/cpukit/rtems/include/rtems/rtems/attr.h b/cpukit/rtems/include/rtems/rtems/attr.h index 674ee08eff..4753e3acee 100644 --- a/cpukit/rtems/include/rtems/rtems/attr.h +++ b/cpukit/rtems/include/rtems/rtems/attr.h @@ -1,16 +1,21 @@ /** * @file rtems/rtems/attr.h * - * This include file contains all information about the Object Attributes - * Handler. + * @defgroup ClassicAttributes Attributes + * + * @ingroup ClassicRTEMS + * @brief Object Attributes Handler + * + * This include file contains all information about the Object Attributes + * Handler. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_ATTR_H diff --git a/cpukit/rtems/include/rtems/rtems/barrier.h b/cpukit/rtems/include/rtems/rtems/barrier.h index b7e74839a5..b27f81b378 100644 --- a/cpukit/rtems/include/rtems/rtems/barrier.h +++ b/cpukit/rtems/include/rtems/rtems/barrier.h @@ -1,49 +1,53 @@ /** * @file rtems/rtems/barrier.h * - * @brief Constants and Structures Associated with the Barrier Manager + * @defgroup ClassicBarrier Barriers * - * This include file contains all the constants and structures associated - * with the Barrier Manager. + * @ingroup ClassicRTEMS + * @brief Classic API Barrier Manager * - * Directives provided are: + * This include file contains all the constants and structures associated + * with the Barrier Manager. * - * - create a barrier - * - get an ID of a barrier - * - delete a barrier - * - wait for a barrier - * - signal a barrier + * Directives provided are: + * + * - create a barrier + * - get an ID of a barrier + * - delete a barrier + * - wait for a barrier + * - signal a barrier */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_BARRIER_H #define _RTEMS_RTEMS_BARRIER_H /** - * @defgroup ClassicBarrier Barriers + * @defgroup ClassicBarrier Barriers * - * @ingroup ClassicRTEMS + * @ingroup ClassicRTEMS * - * This encapsulates functionality which XXX + * This encapsulates functionality which implements the Classic API + * Barrier Manager. */ /**@{*/ /** - * @brief Instantiate Barrier Data + * @brief Instantiate Barrier Data * - * Barrier Manager -- Instantiate Data + * Barrier Manager -- Instantiate Data * - * This constant is defined to extern most of the time when using - * this header file. However by defining it to nothing, the data - * declared in this header file can be instantiated. This is done - * in a single per manager file. + * This constant is defined to extern most of the time when using + * this header file. However by defining it to nothing, the data + * declared in this header file can be instantiated. This is done + * in a single per manager file. */ #ifndef RTEMS_BARRIER_EXTERN #define RTEMS_BARRIER_EXTERN extern @@ -86,23 +90,23 @@ RTEMS_BARRIER_EXTERN Objects_Information _Barrier_Information; void _Barrier_Manager_initialization(void); /** - * @brief RTEMS Create Barrier + * @brief RTEMS Create Barrier * - * Barrier Manager -- Create a Barrier Instance + * Barrier Manager -- Create a Barrier Instance * - * This routine implements the rtems_barrier_create directive. The - * barrier will have the name name. The starting count for - * the barrier is count. The attribute_set determines if - * the barrier is global or local and the thread queue - * discipline. It returns the id of the created barrier in ID. + * This routine implements the rtems_barrier_create directive. The + * barrier will have the name name. The starting count for + * the barrier is count. The attribute_set determines if + * the barrier is global or local and the thread queue + * discipline. It returns the id of the created barrier in ID. * - * @param[in] name is the name of this barrier instance. - * @param[in] attribute_set specifies the attributes of this barrier instance. - * @param[in] maximum_waiters is the maximum number of threads which will - * be allowed to concurrently wait at the barrier. - * @param[out] id will contain the id of this barrier. + * @param[in] name is the name of this barrier instance. + * @param[in] attribute_set specifies the attributes of this barrier instance. + * @param[in] maximum_waiters is the maximum number of threads which will + * be allowed to concurrently wait at the barrier. + * @param[out] id will contain the id of this barrier. * - * @return a status code indicating success or the reason for failure. + * @retval a status code indicating success or the reason for failure. */ rtems_status_code rtems_barrier_create( rtems_name name, @@ -112,20 +116,20 @@ rtems_status_code rtems_barrier_create( ); /** - * @brief RTEMS Barrier name to Id + * @brief RTEMS Barrier name to Id * - * This routine implements the rtems_barrier_ident directive. - * This directive returns the barrier ID associated with name. - * If more than one barrier is named name, then the barrier - * to which the ID belongs is arbitrary. node indicates the - * extent of the search for the ID of the barrier named name. - * The search can be limited to a particular node or allowed to - * encompass all nodes. + * This routine implements the rtems_barrier_ident directive. + * This directive returns the barrier ID associated with name. + * If more than one barrier is named name, then the barrier + * to which the ID belongs is arbitrary. node indicates the + * extent of the search for the ID of the barrier named name. + * The search can be limited to a particular node or allowed to + * encompass all nodes. * - * @param[in] name is the name of this barrier instance. - * @param[out] id will contain the id of this barrier. + * @param[in] name is the name of this barrier instance. + * @param[out] id will contain the id of this barrier. * - * @return a status code indicating success or the reason for failure. + * @retval a status code indicating success or the reason for failure. */ rtems_status_code rtems_barrier_ident( rtems_name name, @@ -133,34 +137,34 @@ rtems_status_code rtems_barrier_ident( ); /** - * @brief RTEMS Delete Barrier + * @brief RTEMS Delete Barrier * - * This routine implements the rtems_barrier_delete directive. The - * barrier indicated by @a id is deleted. The barrier is freed back to the - * inactive barrier chain. + * This routine implements the rtems_barrier_delete directive. The + * barrier indicated by @a id is deleted. The barrier is freed back to the + * inactive barrier chain. * * - * @param[in] id indicates the barrier to delete + * @param[in] id indicates the barrier to delete * - * @return a status code indicating success or the reason for failure. + * @retval a status code indicating success or the reason for failure. */ rtems_status_code rtems_barrier_delete( rtems_id id ); /** - * @brief RTEMS Barrier Wait + * @brief RTEMS Barrier Wait * - * This routine implements the rtems_barrier_wait directive. It - * attempts to wait at the barrier associated with @a id. The calling task - * may block waiting for the barrier with an optional timeout of @a timeout - * clock ticks. + * This routine implements the rtems_barrier_wait directive. It + * attempts to wait at the barrier associated with @a id. The calling task + * may block waiting for the barrier with an optional timeout of @a timeout + * clock ticks. * - * @param[in] id indicates the barrier to wait at. - * @param[in] timeout is the maximum length of time in ticks the calling - * thread is willing to block. + * @param[in] id indicates the barrier to wait at. + * @param[in] timeout is the maximum length of time in ticks the calling + * thread is willing to block. * - * @return a status code indicating success or the reason for failure. + * @retval a status code indicating success or the reason for failure. */ rtems_status_code rtems_barrier_wait( rtems_id id, @@ -168,19 +172,19 @@ rtems_status_code rtems_barrier_wait( ); /** - * @brief RTEMS Barrier Release + * @brief RTEMS Barrier Release * - * Barrier Manager -- Release Tasks Waitng at a Barrier + * Barrier Manager -- Release Tasks Waitng at a Barrier * - * This routine implements the rtems_barrier_release directive. It - * unblocks all of the threads waiting on the barrier associated with - * @a id. The number of threads unblocked is returned in @a released. + * This routine implements the rtems_barrier_release directive. It + * unblocks all of the threads waiting on the barrier associated with + * @a id. The number of threads unblocked is returned in @a released. * * - * @param[in] id indicates the barrier to wait at. - * @param[out] released will contain the number of threads unblocked. + * @param[in] id indicates the barrier to wait at. + * @param[out] released will contain the number of threads unblocked. * - * @return a status code indicating success or the reason for failure. + * @retval a status code indicating success or the reason for failure. */ rtems_status_code rtems_barrier_release( rtems_id id, @@ -188,14 +192,14 @@ rtems_status_code rtems_barrier_release( ); /** - * @brief Translate SuperCore Barrier Status Code to RTEMS Status Code + * @brief Translate SuperCore Barrier Status Code to RTEMS Status Code * - * This function returns a RTEMS status code based on the barrier - * status code specified. + * This function returns a RTEMS status code based on the barrier + * status code specified. * - * @param[in] the_status is the SuperCore Barrier status to translate. + * @param[in] the_status is the SuperCore Barrier status to translate. * - * @return a status code indicating success or the reason for failure. + * @retval a status code indicating success or the reason for failure. */ rtems_status_code _Barrier_Translate_core_barrier_return_code ( CORE_barrier_Status the_status diff --git a/cpukit/rtems/include/rtems/rtems/barriermp.h b/cpukit/rtems/include/rtems/rtems/barriermp.h index 102979c36b..d2a203b162 100644 --- a/cpukit/rtems/include/rtems/rtems/barriermp.h +++ b/cpukit/rtems/include/rtems/rtems/barriermp.h @@ -1,16 +1,18 @@ /** * @file rtems/rtems/barriermp.h * - * This include file contains all the constants and structures associated - * with the Multiprocessing Support in the Barrier Manager. + * @brief MP Support in the Barrier Manager + * + * This include file contains all the constants and structures associated + * with the Multiprocessing Support in the Barrier Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_SEMMP_H @@ -23,7 +25,7 @@ * * This encapsulates functionality which XXX */ -/**{*/ +/**@{*/ #ifdef __cplusplus extern "C" { diff --git a/cpukit/rtems/include/rtems/rtems/cache.h b/cpukit/rtems/include/rtems/rtems/cache.h index 95cf14f741..c4bc79dc97 100644 --- a/cpukit/rtems/include/rtems/rtems/cache.h +++ b/cpukit/rtems/include/rtems/rtems/cache.h @@ -1,32 +1,35 @@ /** * @file rtems/rtems/cache.h * - * @brief Functionality Associated with the Cache Manager + * @defgroup ClassicCache Cache * - * Cache Manager + * @ingroup ClassicRTEMS + * @brief Cache Manager + * + * Functionality Associated with the Cache Manager */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. * * - * The functions in this file define the API to the RTEMS Cache Manager and - * are divided into data cache and instruction cache functions. Data cache - * functions are only meaningful if a data cache is supported. Instruction - * cache functions are only meaningful if an instruction cache is supported. + * The functions in this file define the API to the RTEMS Cache Manager and + * are divided into data cache and instruction cache functions. Data cache + * functions are only meaningful if a data cache is supported. Instruction + * cache functions are only meaningful if an instruction cache is supported. * - * The functions below are implemented with CPU dependent support routines - * implemented as part of libcpu. In the event that a CPU does not support a - * specific function, the CPU dependent routine does nothing (but does exist). + * The functions below are implemented with CPU dependent support routines + * implemented as part of libcpu. In the event that a CPU does not support a + * specific function, the CPU dependent routine does nothing (but does exist). * - * At this point, the Cache Manager makes no considerations, and provides no - * support for BSP specific issues such as a secondary cache. In such a system, - * the CPU dependent routines would have to be modified, or a BSP layer added - * to this Manager. + * At this point, the Cache Manager makes no considerations, and provides no + * support for BSP specific issues such as a secondary cache. In such a system, + * the CPU dependent routines would have to be modified, or a BSP layer added + * to this Manager. */ #ifndef _RTEMS_RTEMS_CACHE_H diff --git a/cpukit/rtems/include/rtems/rtems/clock.h b/cpukit/rtems/include/rtems/rtems/clock.h index 549dc798c9..3254b59dc1 100644 --- a/cpukit/rtems/include/rtems/rtems/clock.h +++ b/cpukit/rtems/include/rtems/rtems/clock.h @@ -1,27 +1,30 @@ /** * @file rtems/rtems/clock.h * - * @brief Constants and Structures Associated with the Clock Manager + * @defgroup ClassicClock Clocks * - * This include file contains all the constants and structures associated - * with the Clock Manager. This manager provides facilities to set, obtain, - * and continually update the current date and time. + * @ingroup ClassicRTEMS + * @brief Clock Manager API * - * This manager provides directives to: + * This include file contains all the constants and structures associated + * with the Clock Manager. This manager provides facilities to set, obtain, + * and continually update the current date and time. * - * - set the current date and time - * - obtain the current date and time - * - set the nanoseconds since last clock tick handler - * - announce a clock tick - * - obtain the system uptime + * This manager provides directives to: + * + * - set the current date and time + * - obtain the current date and time + * - set the nanoseconds since last clock tick handler + * - announce a clock tick + * - obtain the system uptime */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_CLOCK_H @@ -70,21 +73,21 @@ typedef Watchdog_Nanoseconds_since_last_tick_routine rtems_nanoseconds_extension_routine; /** - * @brief Obtain Current Time of Day + * @brief Obtain Current Time of Day * - * This routine implements the rtems_clock_get directive. It returns - * one of the following: - * + current time of day - * + seconds since epoch - * + ticks since boot - * + ticks per second + * This routine implements the rtems_clock_get directive. It returns + * one of the following: + * + current time of day + * + seconds since epoch + * + ticks since boot + * + ticks per second * - * @param[in] option is the format of time to return - * @param[in] time_buffer points to the output area + * @param[in] option is the format of time to return + * @param[in] time_buffer points to the output area * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_clock_get( rtems_clock_get_options option, @@ -92,189 +95,191 @@ rtems_status_code rtems_clock_get( ); /** - * @brief Obtain Current Time of Day (Classic TOD) + * @brief Obtain Current Time of Day (Classic TOD) * - * This routine implements the rtems_clock_get_tod directive. It returns - * the current time of day in the format defined by RTEID. + * This routine implements the rtems_clock_get_tod directive. It returns + * the current time of day in the format defined by RTEID. * - * Clock Manager - rtems_clock_get_tod + * Clock Manager - rtems_clock_get_tod * - * @param[in] time_buffer points to the time of day structure + * @param[in] time_buffer points to the time of day structure * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the time_buffer will - * be filled in with the current time of day. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the time_buffer will + * be filled in with the current time of day. */ rtems_status_code rtems_clock_get_tod( rtems_time_of_day *time_buffer ); /** - * @brief Obtain TOD in struct timeval Format + * @brief Obtain TOD in struct timeval Format * - * This routine implements the rtems_clock_get_tod_timeval - * directive. + * This routine implements the rtems_clock_get_tod_timeval + * directive. * - * @param[in] time points to the struct timeval variable to fill in + * @param[in] time points to the struct timeval variable to fill in * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the time will - * be filled in with the current time of day. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the time will + * be filled in with the current time of day. */ rtems_status_code rtems_clock_get_tod_timeval( struct timeval *time ); /** - * @brief Obtain Seconds Since Epoch + * @brief Obtain Seconds Since Epoch * - * This routine implements the rtems_clock_get_seconds_since_epoch - * directive. + * This routine implements the rtems_clock_get_seconds_since_epoch + * directive. * - * @param[in] the_interval points to the interval variable to fill in + * @param[in] the_interval points to the interval variable to fill in * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the time_buffer will - * be filled in with the current time of day. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the time_buffer will + * be filled in with the current time of day. */ rtems_status_code rtems_clock_get_seconds_since_epoch( rtems_interval *the_interval ); /** - * @brief Obtain Ticks Since Boot + * @brief Obtain Ticks Since Boot * - * This routine implements the rtems_clock_get_ticks_since_boot - * directive. + * This routine implements the rtems_clock_get_ticks_since_boot + * directive. * - * @return This method returns the number of ticks since boot. It cannot - * fail since RTEMS always keeps a running count of ticks since boot. + * @retval This method returns the number of ticks since boot. It cannot + * fail since RTEMS always keeps a running count of ticks since boot. */ rtems_interval rtems_clock_get_ticks_since_boot(void); /** - * @brief Obtain Ticks Per Seconds + * @brief Obtain Ticks Per Seconds * - * This routine implements the rtems_clock_get_ticks_per_second - * directive. + * This routine implements the rtems_clock_get_ticks_per_second + * directive. * - * @return This method returns the number of ticks since boot. It cannot - * fail since RTEMS is always configured to know the number of - * ticks per second. + * @retval This method returns the number of ticks since boot. It cannot + * fail since RTEMS is always configured to know the number of + * ticks per second. */ rtems_interval rtems_clock_get_ticks_per_second(void); /** - * @brief Set the Current TOD + * @brief Set the Current TOD * - * This routine implements the rtems_clock_set directive. It sets - * the current time of day to that in the time_buffer record. + * This routine implements the rtems_clock_set directive. It sets + * the current time of day to that in the time_buffer record. * - * @param[in] time_buffer points to the new TOD + * @param[in] time_buffer points to the new TOD * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. * - * @note Activities scheduled based upon the current time of day - * may be executed immediately if the time is moved forward. + * @note Activities scheduled based upon the current time of day + * may be executed immediately if the time is moved forward. */ rtems_status_code rtems_clock_set( const rtems_time_of_day *time_buffer ); /** - * @brief Announce a Clock Tick + * @brief Announce a Clock Tick * - * This routine implements the rtems_clock_tick directive. It is invoked - * to inform RTEMS of the occurrence of a clock tick. + * This routine implements the rtems_clock_tick directive. It is invoked + * to inform RTEMS of the occurrence of a clock tick. * - * @return This directive always returns RTEMS_SUCCESSFUL. + * @retval This directive always returns RTEMS_SUCCESSFUL. * - * @note This method is typically called from an ISR and is the basis - * for all timeouts and delays. This routine only works for leap-years - * through 2099. + * @note This method is typically called from an ISR and is the basis + * for all timeouts and delays. This routine only works for leap-years + * through 2099. */ rtems_status_code rtems_clock_tick( void ); /** - * @brief Set the BSP specific Nanoseconds Extension + * @brief Set the BSP specific Nanoseconds Extension * - * Clock Manager + * Clock Manager * - * This directive sets the BSP provided nanoseconds since last tick - * extension. + * This directive sets the BSP provided nanoseconds since last tick + * extension. * - * @param[in] routine is a pointer to the extension routine + * @param[in] routine is a pointer to the extension routine * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @return This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_clock_set_nanoseconds_extension( rtems_nanoseconds_extension_routine routine ); /** - * @brief Obtain the System Uptime - * - * This directive returns the system uptime. + * @brief Obtain the System Uptime * - * @param[in] uptime is a pointer to the time structure + * This directive returns the system uptime. * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the uptime will be - * filled in. + * @param[in] uptime is a pointer to the time structure * - * Clock Manager - get uptime + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the @a uptime will be + * filled in. */ rtems_status_code rtems_clock_get_uptime( struct timespec *uptime ); /** - * @brief Gets the System Uptime in the Struct Timeval Format + * @brief Gets the System Uptime in the Struct Timeval Format + * + * @param[out] uptime is a pointer to a struct timeval structure. + * + * @retval This methods returns the system uptime. * - * @param[out] Returns the system uptime. Pointer must not be NULL. + * @note Pointer must not be NULL. */ void rtems_clock_get_uptime_timeval( struct timeval *uptime ); /** - * @brief Returns the system uptime in seconds. + * @brief Returns the system uptime in seconds. * - * @return The system uptime in seconds. + * @retval The system uptime in seconds. */ time_t rtems_clock_get_uptime_seconds( void ); /** - * @brief TOD Validate + * @brief TOD Validate * - * This support function returns true if @a the_tod contains - * a valid time of day, and false otherwise. + * This support function returns true if @a the_tod contains + * a valid time of day, and false otherwise. * - * @param[in] the_tod is the TOD structure to validate + * @param[in] the_tod is the TOD structure to validate * - * @return This method returns true if the TOD is valid and false otherwise. + * @retval This method returns true if the TOD is valid and false otherwise. * - * @note This routine only works for leap-years through 2099. + * @note This routine only works for leap-years through 2099. */ bool _TOD_Validate( const rtems_time_of_day *the_tod ); /** - * @brief TOD to Seconds + * @brief TOD to Seconds * - * This function returns the number seconds between the epoch and @a the_tod. + * This function returns the number seconds between the epoch and @a the_tod. * - * @param[in] the_tod is the TOD structure to convert to seconds + * @param[in] the_tod is the TOD structure to convert to seconds * - * @return This method returns the number of seconds since epoch represented - * by @a the_tod + * @retval This method returns the number of seconds since epoch represented + * by @a the_tod */ Watchdog_Interval _TOD_To_seconds( const rtems_time_of_day *the_tod diff --git a/cpukit/rtems/include/rtems/rtems/config.h b/cpukit/rtems/include/rtems/rtems/config.h index e4ac509d88..3ad19ea68b 100644 --- a/cpukit/rtems/include/rtems/rtems/config.h +++ b/cpukit/rtems/include/rtems/rtems/config.h @@ -1,18 +1,21 @@ /** * @file rtems/rtems/config.h * - * @brief Records Which Define the Configuration Table + * @defgroup ClassicConfig Configuration * - * This include file contains the table of user defined configuration - * parameters specific for the RTEMS API. + * @ingroup ClassicRTEMS + * @brief Configuration Table + * + * This include file contains the table of user defined configuration + * parameters specific for the RTEMS API. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_CONFIG_H diff --git a/cpukit/rtems/include/rtems/rtems/dpmem.h b/cpukit/rtems/include/rtems/rtems/dpmem.h index 42601d5779..aea8aea6a4 100644 --- a/cpukit/rtems/include/rtems/rtems/dpmem.h +++ b/cpukit/rtems/include/rtems/rtems/dpmem.h @@ -1,27 +1,32 @@ /** * @file rtems/rtems/dpmem.h * - * This include file contains all the constants and structures associated - * with the Dual Ported Memory Manager. This manager provides a mechanism - * for converting addresses between internal and external representations - * for multiple dual-ported memory areas. + * @defgroup ClassicDPMEM Dual Ported Memory * - * Directives provided are: + * @ingroup ClassicRTEMS + * @brief Dual Ported Memory Manager * - * - create a port - * - get ID of a port - * - delete a port - * - convert external to internal address - * - convert internal to external address + * This include file contains all the constants and structures associated + * with the Dual Ported Memory Manager. This manager provides a mechanism + * for converting addresses between internal and external representations + * for multiple dual-ported memory areas. + * + * Directives provided are: + * + * - create a port + * - get ID of a port + * - delete a port + * - convert external to internal address + * - convert internal to external address * */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_DPMEM_H @@ -85,24 +90,24 @@ RTEMS_DPMEM_EXTERN Objects_Information _Dual_ported_memory_Information; void _Dual_ported_memory_Manager_initialization(void); /** - * @brief Creates a port into a dual-ported memory area. - * - * This routine implements the rtems_port_create directive. The port - * will have the name @a name. The port maps onto an area of dual ported - * memory of length bytes which has internal_start and external_start - * as the internal and external starting addresses, respectively. - * It returns the id of the created port in ID. - * - * @param[in] name is the user defined port name - * @param[in] internal_start is the internal start address of port - * @param[in] external_start is the external start address of port - * @param[in] length is the physical length in bytes - * @param[out] id is the address of port id to set - * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the id will - * be filled in with the port id. + * @brief Creates a port into a dual-ported memory area. + * + * This routine implements the rtems_port_create directive. The port + * will have the name @a name. The port maps onto an area of dual ported + * memory of length bytes which has internal_start and external_start + * as the internal and external starting addresses, respectively. + * It returns the id of the created port in ID. + * + * @param[in] name is the user defined port name + * @param[in] internal_start is the internal start address of port + * @param[in] external_start is the external start address of port + * @param[in] length is the physical length in bytes + * @param[out] id is the address of port id to set + * + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the id will + * be filled in with the port id. */ rtems_status_code rtems_port_create( rtems_name name, @@ -113,16 +118,16 @@ rtems_status_code rtems_port_create( ); /** - * @brief RTEMS Port Name to Id - * - * This routine implements the rtems_port_ident directive. This directive - * returns the port ID associated with name. If more than one port is - * named name, then the port to which the ID belongs is arbitrary. - * - * @param[in] name is the user defined port name - * @param[out] id is the pointer to port id - * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @brief RTEMS Port Name to Id + * + * This routine implements the rtems_port_ident directive. This directive + * returns the port ID associated with name. If more than one port is + * named name, then the port to which the ID belongs is arbitrary. + * + * @param[in] name is the user defined port name + * @param[out] id is the pointer to port id + * + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_port_ident( rtems_name name, @@ -130,35 +135,35 @@ rtems_status_code rtems_port_ident( ); /** - * @brief RTEMS Delete Port - * - * This routine implements the rtems_port_delete directive. It deletes - * the port associated with ID. - * - * @param[in] id is the dual-ported memory area id - * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @brief RTEMS Delete Port + * + * This routine implements the rtems_port_delete directive. It deletes + * the port associated with ID. + * + * @param[in] id is the dual-ported memory area id + * + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_port_delete( rtems_id id ); /** - * @brief RTEMS Port External to Internal - * - * This routine implements the rtems_port_external_to_internal directive. - * It returns the internal port address which maps to the provided - * external port address for the specified port ID.If the given external - * address is an invalid dual-ported address, then the internal address is - * set to the given external address. - * - * @param[in] id is the id of dp memory object - * @param[in] external is the external address - * @param[out] internal is the pointer of internal address to set - * - * @return RTEMS_SUCCESSFUL + * @brief RTEMS Port External to Internal + * + * This routine implements the rtems_port_external_to_internal directive. + * It returns the internal port address which maps to the provided + * external port address for the specified port ID. If the given external + * address is an invalid dual-ported address, then the internal address is + * set to the given external address. + * + * @param[in] id is the id of dp memory object + * @param[in] external is the external address + * @param[out] internal is the pointer of internal address to set + * + * @retval RTEMS_SUCCESSFUL */ rtems_status_code rtems_port_external_to_internal( rtems_id id, @@ -167,20 +172,20 @@ rtems_status_code rtems_port_external_to_internal( ); /** - * @brief RTEMS Port Internal to External - * - * This routine implements the Port_internal_to_external directive. - * It returns the external port address which maps to the provided - * internal port address for the specified port ID. If the given - * internal address is an invalid dual-ported address, then the - * external address is set to the given internal address. - * - * @param[in] id is the id of dual-ported memory object - * @param[in] internal is the internal address to set - * @param[in] external is the pointer to external address - * - * @return RTEMS_SUCCESSFUL and the external will be filled in - * with the external addresses + * @brief RTEMS Port Internal to External + * + * This routine implements the Port_internal_to_external directive. + * It returns the external port address which maps to the provided + * internal port address for the specified port ID. If the given + * internal address is an invalid dual-ported address, then the + * external address is set to the given internal address. + * + * @param[in] id is the id of dual-ported memory object + * @param[in] internal is the internal address to set + * @param[in] external is the pointer to external address + * + * @retval RTEMS_SUCCESSFUL and the external will be filled in + * with the external addresses */ rtems_status_code rtems_port_internal_to_external( rtems_id id, diff --git a/cpukit/rtems/include/rtems/rtems/event.h b/cpukit/rtems/include/rtems/rtems/event.h index 6c265c3f40..6a27c91aee 100644 --- a/cpukit/rtems/include/rtems/rtems/event.h +++ b/cpukit/rtems/include/rtems/rtems/event.h @@ -1,25 +1,28 @@ /** * @file rtems/rtems/event.h * - * @brief Information Related to the Event Manager + * @defgroup ClassicEvent Events * - * This include file contains the information pertaining to the Event - * Manager. This manager provides a high performance method of communication - * and synchronization. + * @ingroup ClassicRTEMS + * @brief Information Related to Event Manager * - * Directives provided are: + * This include file contains the information pertaining to the Event + * Manager. This manager provides a high performance method of communication + * and synchronization. * - * - send an event set to a task - * - receive event condition + * Directives provided are: + * + * - send an event set to a task + * - receive event condition * */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_EVENT_H @@ -100,38 +103,38 @@ extern "C" { */ /** - * @brief Sends an Event Set to the Target Task - * - * This directive sends an event set @a event_in to the task specified by - * @a id. - * - * Based upon the state of the target task, one of the following situations - * applies. The target task is - * - blocked waiting for events. - * If the waiting task's input event condition is - * - satisfied, then the task is made ready for execution. - * - not satisfied, then the event set is posted but left pending and the - * task remains blocked. - * - not waiting for events. - * - The event set is posted and left pending. - * - * Identical events sent to a task are not queued. In other words, the second, - * and subsequent, posting of an event to a task before it can perform an - * rtems_event_receive() has no effect. - * - * The calling task will be preempted if it has preemption enabled and a - * higher priority task is unblocked as the result of this directive. - * - * Sending an event set to a global task which does not reside on the local - * node will generate a request telling the remote node to send the event set - * to the appropriate task. - * - * @param[in] id Identifier of the target task. Specifying @ref RTEMS_SELF - * results in the event set being sent to the calling task. - * @param[in] event_in Event set sent to the target task. - * - * @retval RTEMS_SUCCESSFUL Successful operation. - * @retval RTEMS_INVALID_ID Invalid task identifier. + * @brief Sends an Event Set to the Target Task + * + * This directive sends an event set @a event_in to the task specified by + * @a id. + * + * Based upon the state of the target task, one of the following situations + * applies. The target task is + * - blocked waiting for events. + * If the waiting task's input event condition is + * - satisfied, then the task is made ready for execution. + * - not satisfied, then the event set is posted but left pending and the + * task remains blocked. + * - not waiting for events. + * - The event set is posted and left pending. + * + * Identical events sent to a task are not queued. In other words, the second, + * and subsequent, posting of an event to a task before it can perform an + * rtems_event_receive() has no effect. + * + * The calling task will be preempted if it has preemption enabled and a + * higher priority task is unblocked as the result of this directive. + * + * Sending an event set to a global task which does not reside on the local + * node will generate a request telling the remote node to send the event set + * to the appropriate task. + * + * @param[in] id Identifier of the target task. Specifying @ref RTEMS_SELF + * results in the event set being sent to the calling task. + * @param[in] event_in Event set sent to the target task. + * + * @retval RTEMS_SUCCESSFUL Successful operation. + * @retval RTEMS_INVALID_ID Invalid task identifier. */ rtems_status_code rtems_event_send ( rtems_id id, @@ -139,65 +142,65 @@ rtems_status_code rtems_event_send ( ); /** - * @brief Receives pending events. - * - * This directive attempts to receive the event condition specified in - * @a event_in. If @a event_in is set to @ref RTEMS_PENDING_EVENTS, then the - * current pending events are returned in @a event_out and left pending. The - * @aref RTEMS_WAIT and @aref RTEMS_NO_WAIT options in the @a option_set - * parameter are used to specify whether or not the task is willing to wait - * for the event condition to be satisfied. The @ref RTEMS_EVENT_ANY and @ref - * RTEMS_EVENT_ALL are used in the @a option_set parameter to specify whether - * at least a single event or the complete event set is necessary to satisfy - * the event condition. The @a event_out parameter is returned to the calling - * task with the value that corresponds to the events in @a event_in that were - * satisfied. - * - * A task can determine the pending event set by using a value of - * @ref RTEMS_PENDING_EVENTS for the input event set @a event_in. The pending - * events are returned to the calling task but the event set is left - * unaltered. - * - * A task can receive all of the currently pending events by using the a value - * of @ref RTEMS_ALL_EVENTS for the input event set @a event_in and - * @ref RTEMS_NO_WAIT | @ref RTEMS_EVENT_ANY for the option set @a option_set. - * The pending events are returned to the calling task and the event set is - * cleared. If no events are pending then the @ref RTEMS_UNSATISFIED status - * code will be returned. - * - * If pending events satisfy the event condition, then @a event_out is set to - * the satisfied events and the pending events in the event condition are - * cleared. If the event condition is not satisfied and @ref RTEMS_NO_WAIT is - * specified, then @a event_out is set to the currently satisfied events. If - * the calling task chooses to wait, then it will block waiting for the event - * condition. - * - * If the calling task must wait for the event condition to be satisfied, then - * the timeout parameter is used to specify the maximum interval to wait. If - * it is set to @ref RTEMS_NO_TIMEOUT, then the calling task will wait forever. - * - * This directive only affects the events specified in @a event_in. Any - * pending events that do not correspond to any of the events specified in - * @a event_in will be left pending. - * - * A clock tick is required to support the wait with time out functionality of - * this directive. - * - * @param[in] event_in Set of requested events (input events). - * @param[in] option_set Use a bitwise or of the following options - * - @ref RTEMS_WAIT - task will wait for event (default), - * - @ref RTEMS_NO_WAIT - task should not wait, - * - @ref RTEMS_EVENT_ALL - return after all events (default), and - * - @ref RTEMS_EVENT_ANY - return after any events. - * @param[in] ticks Time out in ticks. Use @ref RTEMS_NO_TIMEOUT to wait - * without a time out (potentially forever). - * @param[out] event_out Set of received events (output events). - * - * @retval RTEMS_SUCCESSFUL Successful operation. - * @retval RTEMS_UNSATISFIED Input events not satisfied (only with the - * @ref RTEMS_NO_WAIT option). - * @retval RTEMS_INVALID_ADDRESS The @a event_out pointer is @c NULL. - * @retval RTEMS_TIMEOUT Timed out waiting for events. + * @brief Receives pending events. + * + * This directive attempts to receive the event condition specified in + * @a event_in. If @a event_in is set to @ref RTEMS_PENDING_EVENTS, then the + * current pending events are returned in @a event_out and left pending. The + * @aref RTEMS_WAIT and @aref RTEMS_NO_WAIT options in the @a option_set + * parameter are used to specify whether or not the task is willing to wait + * for the event condition to be satisfied. The @ref RTEMS_EVENT_ANY and @ref + * RTEMS_EVENT_ALL are used in the @a option_set parameter to specify whether + * at least a single event or the complete event set is necessary to satisfy + * the event condition. The @a event_out parameter is returned to the calling + * task with the value that corresponds to the events in @a event_in that were + * satisfied. + * + * A task can determine the pending event set by using a value of + * @ref RTEMS_PENDING_EVENTS for the input event set @a event_in. The pending + * events are returned to the calling task but the event set is left + * unaltered. + * + * A task can receive all of the currently pending events by using the a value + * of @ref RTEMS_ALL_EVENTS for the input event set @a event_in and + * @ref RTEMS_NO_WAIT | @ref RTEMS_EVENT_ANY for the option set @a option_set. + * The pending events are returned to the calling task and the event set is + * cleared. If no events are pending then the @ref RTEMS_UNSATISFIED status + * code will be returned. + * + * If pending events satisfy the event condition, then @a event_out is set to + * the satisfied events and the pending events in the event condition are + * cleared. If the event condition is not satisfied and @ref RTEMS_NO_WAIT is + * specified, then @a event_out is set to the currently satisfied events. If + * the calling task chooses to wait, then it will block waiting for the event + * condition. + * + * If the calling task must wait for the event condition to be satisfied, then + * the timeout parameter is used to specify the maximum interval to wait. If + * it is set to @ref RTEMS_NO_TIMEOUT, then the calling task will wait forever. + * + * This directive only affects the events specified in @a event_in. Any + * pending events that do not correspond to any of the events specified in + * @a event_in will be left pending. + * + * A clock tick is required to support the wait with time out functionality of + * this directive. + * + * @param[in] event_in Set of requested events (input events). + * @param[in] option_set Use a bitwise or of the following options + * - @ref RTEMS_WAIT - task will wait for event (default), + * - @ref RTEMS_NO_WAIT - task should not wait, + * - @ref RTEMS_EVENT_ALL - return after all events (default), and + * - @ref RTEMS_EVENT_ANY - return after any events. + * @param[in] ticks Time out in ticks. Use @ref RTEMS_NO_TIMEOUT to wait + * without a time out (potentially forever). + * @param[out] event_out Set of received events (output events). + * + * @retval RTEMS_SUCCESSFUL Successful operation. + * @retval RTEMS_UNSATISFIED Input events not satisfied (only with the + * @ref RTEMS_NO_WAIT option). + * @retval RTEMS_INVALID_ADDRESS The @a event_out pointer is @c NULL. + * @retval RTEMS_TIMEOUT Timed out waiting for events. */ rtems_status_code rtems_event_receive ( rtems_event_set event_in, @@ -220,9 +223,8 @@ rtems_status_code rtems_event_receive ( * The event @ref RTEMS_EVENT_SYSTEM_TRANSIENT is used for transient usage. * See also @ref ClassicEventTransient. This event may be used by every entity * that fulfils its usage pattern. - * - * @{ */ +/**@{**/ /** * @brief Reserved system event for network SBWAIT usage. @@ -364,9 +366,8 @@ rtems_status_code rtems_event_system_receive( * assert(req.work_done); * } * @endcode - * - * @{ */ +/**@{**/ /** * @brief See rtems_event_system_send(). diff --git a/cpukit/rtems/include/rtems/rtems/eventmp.h b/cpukit/rtems/include/rtems/rtems/eventmp.h index a54f79cffe..45f60b67b7 100644 --- a/cpukit/rtems/include/rtems/rtems/eventmp.h +++ b/cpukit/rtems/include/rtems/rtems/eventmp.h @@ -1,16 +1,21 @@ /** * @file rtems/rtems/eventmp.h * - * This include file contains all the constants and structures associated - * with the Multiprocessing Support in the Event Manager. + * @defgroup ClassicEventMP Event MP Support + * + * @ingroup ClassicRTEMS + * @brief Event Manager MP Support + * + * This include file contains all the constants and structures associated + * with the Multiprocessing Support in the Event Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_EVENTMP_H diff --git a/cpukit/rtems/include/rtems/rtems/eventset.h b/cpukit/rtems/include/rtems/rtems/eventset.h index 632e217c79..4d2bff8a89 100644 --- a/cpukit/rtems/include/rtems/rtems/eventset.h +++ b/cpukit/rtems/include/rtems/rtems/eventset.h @@ -1,19 +1,22 @@ /** * @file rtems/rtems/eventset.h * - * @brief Information Related to the Event Sets Handler + * @defgroup ClassicEventSet Event Set * - * This include file contains the information pertaining to the - * Event Sets Handler. This handler provides methods for the manipulation - * of event sets which will be sent and received by tasks. + * @ingroup ClassicRTEMS + * @brief Event Sets Handler + * + * This include file contains the information pertaining to the + * Event Sets Handler. This handler provides methods for the manipulation + * of event sets which will be sent and received by tasks. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_EVENTSET_H diff --git a/cpukit/rtems/include/rtems/rtems/intr.h b/cpukit/rtems/include/rtems/rtems/intr.h index 66684fe327..ea6dc6b64a 100644 --- a/cpukit/rtems/include/rtems/rtems/intr.h +++ b/cpukit/rtems/include/rtems/rtems/intr.h @@ -1,18 +1,21 @@ /** * @file rtems/rtems/intr.h * - * @brief Header file for the Interrupt Manager. + * @defgroup ClassicINTR Interrupts * - * This include file contains all the constants and structures associated with - * the Interrupt Manager. + * @ingroup ClassicRTEMS + * @brief Header file for Interrupt Manager + * + * This include file contains all the constants and structures associated with + * the Interrupt Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_INTR_H @@ -63,17 +66,17 @@ typedef rtems_isr ( *rtems_isr_entry )( ); /** - * @brief RTEMS Interrupt Catch + * @brief RTEMS Interrupt Catch * - * This directive installs @a new_isr_handler as the RTEMS interrupt service - * routine for the interrupt vector with number @a vector. The previous RTEMS - * interrupt service routine is returned in @a old_isr_handler. + * This directive installs @a new_isr_handler as the RTEMS interrupt service + * routine for the interrupt vector with number @a vector. The previous RTEMS + * interrupt service routine is returned in @a old_isr_handler. * - * @param[in] new_isr_handler is the address of interrupt service routine - * @param[in] vector is the interrupt vector number - * @param[in] old_isr_handler address at which to store previous ISR address + * @param[in] new_isr_handler is the address of interrupt service routine + * @param[in] vector is the interrupt vector number + * @param[in] old_isr_handler address at which to store previous ISR address * - * @return RTEMS_SUCCESSFUL and *old_isr_handler filled with previous ISR + * @retval RTEMS_SUCCESSFUL and *old_isr_handler filled with previous ISR * address */ rtems_status_code rtems_interrupt_catch( diff --git a/cpukit/rtems/include/rtems/rtems/message.h b/cpukit/rtems/include/rtems/rtems/message.h index 9ad1e9b9ef..e8bbee8cc4 100644 --- a/cpukit/rtems/include/rtems/rtems/message.h +++ b/cpukit/rtems/include/rtems/rtems/message.h @@ -1,30 +1,33 @@ /** * @file rtems/rtems/message.h * - * @brief Constants and Structures Associated with the Message Queue Manager - * - * This include file contains all the constants and structures associated - * with the Message Queue Manager. This manager provides a mechanism for - * communication and synchronization between tasks using messages. - * - * Directives provided are: - * - * - create a queue - * - get ID of a queue - * - delete a queue - * - put a message at the rear of a queue - * - put a message at the front of a queue - * - broadcast N messages to a queue - * - receive message from a queue - * - flush all messages on a queue + * @defgroup ClassicMessageQueue Message Queues + * + * @ingroup ClassicRTEMS + * @brief Message Queue Manager + * + * This include file contains all the constants and structures associated + * with the Message Queue Manager. This manager provides a mechanism for + * communication and synchronization between tasks using messages. + * + * Directives provided are: + * + * - create a queue + * - get ID of a queue + * - delete a queue + * - put a message at the rear of a queue + * - put a message at the front of a queue + * - broadcast N messages to a queue + * - receive message from a queue + * - flush all messages on a queue */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_MESSAGE_H @@ -106,25 +109,25 @@ RTEMS_MESSAGE_EXTERN Objects_Information _Message_queue_Information; void _Message_queue_Manager_initialization(void); /** - * @brief RTEMS Create Message Queue - * - * This routine implements the rtems_message_queue_create directive. The - * message queue will have the @a name. If the @a attribute_set indicates - * that the message queue is to be limited in the number of messages - * that can be outstanding, then @a count indicates the maximum number of - * messages that will be held. It returns the id of the created - * message queue in @a id. - * - * @param[in] name is the user defined queue name - * @param[in] count is the maximum message and reserved buffer count - * @param[in] max_message_size is the maximum size of each message - * @param[in] attribute_set is the process method - * @param[in] id is the pointer to queue - * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the @a id will - * be filled in with the queue id. + * @brief RTEMS Create Message Queue + * + * This routine implements the rtems_message_queue_create directive. The + * message queue will have the @a name. If the @a attribute_set indicates + * that the message queue is to be limited in the number of messages + * that can be outstanding, then @a count indicates the maximum number of + * messages that will be held. It returns the id of the created + * message queue in @a id. + * + * @param[in] name is the user defined queue name + * @param[in] count is the maximum message and reserved buffer count + * @param[in] max_message_size is the maximum size of each message + * @param[in] attribute_set is the process method + * @param[in] id is the pointer to queue + * + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the @a id will + * be filled in with the queue id. */ rtems_status_code rtems_message_queue_create( rtems_name name, @@ -135,22 +138,22 @@ rtems_status_code rtems_message_queue_create( ); /** - * @brief RTEMS Message Queue Name to Id - * - * This routine implements the rtems_message_queue_ident directive. - * This directive returns the message queue ID associated with NAME. - * If more than one message queue is named name, then the message - * queue to which the ID belongs is arbitrary. node indicates the - * extent of the search for the ID of the message queue named name. - * The search can be limited to a particular node or allowed to - * encompass all nodes. - * - * @param[in] name is the user defined message queue name - * @param[in] node is the node(s) to be searched - * @param[in] id is the pointer to message queue id - * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * *id filled with the message queue id + * @brief RTEMS Message Queue Name to Id + * + * This routine implements the rtems_message_queue_ident directive. + * This directive returns the message queue ID associated with NAME. + * If more than one message queue is named name, then the message + * queue to which the ID belongs is arbitrary. node indicates the + * extent of the search for the ID of the message queue named name. + * The search can be limited to a particular node or allowed to + * encompass all nodes. + * + * @param[in] name is the user defined message queue name + * @param[in] node is the node(s) to be searched + * @param[in] id is the pointer to message queue id + * + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and + * *id filled with the message queue id */ rtems_status_code rtems_message_queue_ident( rtems_name name, @@ -159,14 +162,14 @@ rtems_status_code rtems_message_queue_ident( ); /** - * @brief RTEMS Delete Message Queue + * @brief RTEMS Delete Message Queue * - * This routine implements the rtems_message_queue_delete directive. The - * message queue indicated by ID is deleted. + * This routine implements the rtems_message_queue_delete directive. The + * message queue indicated by ID is deleted. * - * @param[in] id is the queue id + * @param[in] id is the queue id * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_message_queue_delete( rtems_id id @@ -194,19 +197,19 @@ rtems_status_code rtems_message_queue_send( ); /** - * @brief RTEMS Urgent Message Queue + * @brief RTEMS Urgent Message Queue * - * This routine implements the rtems_message_queue_urgent directive. - * This directive has the same behavior as rtems_message_queue_send - * except that if no tasks are waiting, the message buffer will - * be placed at the FRONT of the chain of pending messages rather - * than at the REAR. + * This routine implements the rtems_message_queue_urgent directive. + * This directive has the same behavior as rtems_message_queue_send + * except that if no tasks are waiting, the message buffer will + * be placed at the FRONT of the chain of pending messages rather + * than at the REAR. * - * @param[in] id is the pointer to message queue - * @param[in] buffer is the pointer to message buffer - * @param[in] size is the size of message to send urgently + * @param[in] id is the pointer to message queue + * @param[in] buffer is the pointer to message buffer + * @param[in] size is the size of message to send urgently * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_message_queue_urgent( rtems_id id, @@ -215,20 +218,20 @@ rtems_status_code rtems_message_queue_urgent( ); /** - * @brief RTEMS Broadcast Message Queue + * @brief RTEMS Broadcast Message Queue * - * This routine implements the rtems_message_queue_broadcast directive. - * This directive sends the message buffer to all of the tasks blocked - * waiting for a message on the message queue indicated by ID. - * If no tasks are waiting, then the message buffer will not be queued. + * This routine implements the rtems_message_queue_broadcast directive. + * This directive sends the message buffer to all of the tasks blocked + * waiting for a message on the message queue indicated by ID. + * If no tasks are waiting, then the message buffer will not be queued. * - * @param[in] id is the pointer to message queue - * @param[in] buffer is the pointer to message buffer - * @param[in] size is the size of message to broadcast - * @param[in] count pointer to area to store number of threads made ready + * @param[in] id is the pointer to message queue + * @param[in] buffer is the pointer to message buffer + * @param[in] size is the size of message to broadcast + * @param[in] count pointer to area to store number of threads made ready * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * *count filled in with number of threads made ready + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and + * *count filled in with number of threads made ready */ rtems_status_code rtems_message_queue_broadcast( rtems_id id, @@ -238,25 +241,25 @@ rtems_status_code rtems_message_queue_broadcast( ); /** - * @brief RTEMS Message Queue Receive - * - * This routine implements the rtems_message_queue_receive directive. - * This directive is invoked when the calling task wishes to receive - * a message from the message queue indicated by ID. The received - * message is to be placed in buffer. If no messages are outstanding - * and the option_set indicates that the task is willing to block, - * then the task will be blocked until a message arrives or until, - * optionally, timeout clock ticks have passed. - * - * @param[in] id is the queue id - * @param[in] buffer is the pointer to message buffer - * @param[in] size is the size of message receive - * @param[in] option_set is the options on receive - * @param[in] timeout is the number of ticks to wait - * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @brief RTEMS Message Queue Receive + * + * This routine implements the rtems_message_queue_receive directive. + * This directive is invoked when the calling task wishes to receive + * a message from the message queue indicated by ID. The received + * message is to be placed in buffer. If no messages are outstanding + * and the option_set indicates that the task is willing to block, + * then the task will be blocked until a message arrives or until, + * optionally, timeout clock ticks have passed. + * + * @param[in] id is the queue id + * @param[in] buffer is the pointer to message buffer + * @param[in] size is the size of message receive + * @param[in] option_set is the options on receive + * @param[in] timeout is the number of ticks to wait + * + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_message_queue_receive( rtems_id id, @@ -315,24 +318,24 @@ rtems_status_code _Message_queue_Submit( ); /** - * @brief Message Queue Allocate + * @brief Message Queue Allocate * - * This function allocates a message queue control block from - * the inactive chain of free message queue control blocks. + * This function allocates a message queue control block from + * the inactive chain of free message queue control blocks. * - * @return the_message_queue filled in if successful, NULL otherwise + * @retval the_message_queue filled in if successful, NULL otherwise */ Message_queue_Control *_Message_queue_Allocate (void); /** - * @brief Message queue Translate Core Message Queue Return Code + * @brief Message queue Translate Core Message Queue Return Code * - * This function returns a RTEMS status code based on - * @a the_message_queue_status. + * This function returns a RTEMS status code based on + * @a the_message_queue_status. * - * @param[in] the_message_queue_status is the status code to translate + * @param[in] the_message_queue_status is the status code to translate * - * @return translated RTEMS status code + * @retval translated RTEMS status code */ rtems_status_code _Message_queue_Translate_core_message_queue_return_code ( uint32_t the_message_queue_status diff --git a/cpukit/rtems/include/rtems/rtems/modes.h b/cpukit/rtems/include/rtems/rtems/modes.h index 6ac7d15773..9a4bf73f91 100644 --- a/cpukit/rtems/include/rtems/rtems/modes.h +++ b/cpukit/rtems/include/rtems/rtems/modes.h @@ -1,18 +1,21 @@ /** * @file rtems/rtems/modes.h * - * @brief Constants and Structures Associated with the RTEMS thread and RTEMS_ASR modes + * @defgroup ClassicModes Modes * - * This include file contains all constants and structures associated - * with the RTEMS thread and RTEMS_ASR modes. + * @ingroup ClassicRTEMS + * @brief RTEMS thread and RTEMS_ASR modes + * + * This include file contains all constants and structures associated + * with the RTEMS thread and RTEMS_ASR modes. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_MODES_H @@ -84,14 +87,14 @@ typedef uint32_t Modes_Control; #define RTEMS_NO_ASR 0x00000400 /** - * @brief RTEMS_INTERRUPT_LEVEL + * @brief RTEMS_INTERRUPT_LEVEL * - * This function returns the processor dependent interrupt - * level which corresponds to the requested interrupt level. + * This function returns the processor dependent interrupt + * level which corresponds to the requested interrupt level. * - * @note RTEMS supports 256 interrupt levels using the least - * significant eight bits of MODES.CONTROL. On any - * particular CPU, fewer than 256 levels may be supported. + * @note RTEMS supports 256 interrupt levels using the least + * significant eight bits of MODES.CONTROL. On any + * particular CPU, fewer than 256 levels may be supported. */ #define RTEMS_INTERRUPT_LEVEL( _mode_set ) \ ( (_mode_set) & RTEMS_INTERRUPT_MASK ) @@ -104,15 +107,15 @@ typedef uint32_t Modes_Control; extern const uint32_t rtems_interrupt_mask; /** - * @brief Body for RTEMS_INTERRUPT_LEVEL Macro + * @brief Body for RTEMS_INTERRUPT_LEVEL Macro * - * @param[in] level is the desired interrupt level + * @param[in] level is the desired interrupt level * - * @return This methods returns a mode with the desired interrupt - * @a level in the proper bitfield location. + * @retval This methods returns a mode with the desired interrupt + * @a level in the proper bitfield location. * - * @note This variable is used by bindings from languages other than - * C and C++. + * @note This variable is used by bindings from languages other than + * C and C++. */ Modes_Control rtems_interrupt_level_body( uint32_t level diff --git a/cpukit/rtems/include/rtems/rtems/mp.h b/cpukit/rtems/include/rtems/rtems/mp.h index f7b5f20c62..fc59e74493 100644 --- a/cpukit/rtems/include/rtems/rtems/mp.h +++ b/cpukit/rtems/include/rtems/rtems/mp.h @@ -1,16 +1,21 @@ /** * @file rtems/rtems/mp.h * - * This include file contains all the constants and structures associated - * with the Multiprocessing Manager. + * @defgroup ClassicMP Multiprocessing + * + * @ingroup ClassicRTEMS + * @brief Multiprocessing Manager + * + * This include file contains all the constants and structures associated + * with the Multiprocessing Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_MP_H diff --git a/cpukit/rtems/include/rtems/rtems/msgmp.h b/cpukit/rtems/include/rtems/rtems/msgmp.h index f512eaeda7..f01a687ae3 100644 --- a/cpukit/rtems/include/rtems/rtems/msgmp.h +++ b/cpukit/rtems/include/rtems/rtems/msgmp.h @@ -1,16 +1,18 @@ /** * @file rtems/rtems/msgmp.h * - * This include file contains all the constants and structures associated - * with the Multiprocessing Support in the Message Manager. + * @brief Message Manager MP Support + * + * This include file contains all the constants and structures associated + * with the Multiprocessing Support in the Message Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_MSGMP_H @@ -34,7 +36,7 @@ extern "C" { * * This encapsulates functionality which XXX */ -/**{*/ +/*{*/ /** * The following enumerated type defines the list of @@ -119,10 +121,10 @@ void _Message_queue_MP_Send_response_packet ( /** * - @brief * _Message_queue_MP_Process_packet + * @brief _Message_queue_MP_Process_packet * - * This routine performs the actions specific to this package for - * the request from another node. + * This routine performs the actions specific to this package for + * the request from another node. */ void _Message_queue_MP_Process_packet ( rtems_packet_prefix *the_packet_prefix diff --git a/cpukit/rtems/include/rtems/rtems/object.h b/cpukit/rtems/include/rtems/rtems/object.h index 7baa80c652..bd80cc00da 100644 --- a/cpukit/rtems/include/rtems/rtems/object.h +++ b/cpukit/rtems/include/rtems/rtems/object.h @@ -1,15 +1,20 @@ /** * @file rtems/rtems/object.h * + * @defgroup ClassicClassInfo Object Class Information + * + * @ingroup ClassicRTEMS + * @brief Classic API interfaces to Object Services + * * This include file defines Classic API interfaces to Object Services. */ -/* COPYRIGHT (c) 1989-2011. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_OBJECT_H @@ -51,59 +56,59 @@ typedef struct { } rtems_object_api_class_information; /** - * @brief Build Object Id + * @brief Build Object Id * - * This function returns an object id composed of the - * specified @a api, @a class, @a node, - * and @a index. + * This function returns an object id composed of the + * specified @a api, @a class, @a node, + * and @a index. * - * @param[in] _api indicates the api to use for the Id - * @param[in] _class indicates the class to use for the Id - * @param[in] _node indicates the node to use for the Id - * @param[in] _index indicates the index to use for the Id + * @param[in] _api indicates the api to use for the Id + * @param[in] _class indicates the class to use for the Id + * @param[in] _node indicates the node to use for the Id + * @param[in] _index indicates the index to use for the Id * - * @return This method returns an object Id built from the - * specified values. + * @retval This method returns an object Id built from the + * specified values. * - * @note A body is also provided. + * @note A body is also provided. */ #define rtems_build_id( _api, _class, _node, _index ) \ _Objects_Build_id( _api, _class, _node, _index ) /** - * @brief Build Thirty-Two Bit Object Name + * @brief Build Thirty-Two Bit Object Name * - * RTEMS Object Helper -- Build an Object Id + * RTEMS Object Helper -- Build an Object Id * - * This function returns an object name composed of the four characters - * C1, C2, C3, and C4. + * This function returns an object name composed of the four characters + * C1, C2, C3, and C4. * - * @param[in] _C1 is the first character of the name - * @param[in] _C2 is the second character of the name - * @param[in] _C3 is the third character of the name - * @param[in] _C4 is the fourth character of the name + * @param[in] _C1 is the first character of the name + * @param[in] _C2 is the second character of the name + * @param[in] _C3 is the third character of the name + * @param[in] _C4 is the fourth character of the name * - * @note This must be implemented as a macro for use in - * Configuration Tables. A body is also provided. + * @note This must be implemented as a macro for use in + * Configuration Tables. A body is also provided. * */ #define rtems_build_name( _C1, _C2, _C3, _C4 ) \ _Objects_Build_name( _C1, _C2, _C3, _C4 ) /** - * @brief Obtain Name of Object + * @brief Obtain Name of Object * - * This directive returns the name associated with the specified - * object ID. + * This directive returns the name associated with the specified + * object ID. * - * @param[in] id is the Id of the object to obtain the name of. - * @param[out] name will be set to the name of the object + * @param[in] id is the Id of the object to obtain the name of. + * @param[out] name will be set to the name of the object * - * @note The object must be have a name of the 32-bit form. + * @note The object must be have a name of the 32-bit form. * - * @return @a *name will contain user defined object name - * @return @a RTEMS_SUCCESSFUL - if successful - * @return error code - if unsuccessful + * @retval @a *name will contain user defined object name + * @retval @a RTEMS_SUCCESSFUL - if successful + * @retval error code - if unsuccessful */ rtems_status_code rtems_object_get_classic_name( rtems_id id, @@ -111,18 +116,18 @@ rtems_status_code rtems_object_get_classic_name( ); /** - * @brief Obtain Object Name as String + * @brief Obtain Object Name as String * - * This directive returns the name associated with the specified - * object ID. + * This directive returns the name associated with the specified + * object ID. * - * @param[in] id is the Id of the object to obtain the name of - * @param[in] length is the length of the output name buffer - * @param[out] name will be set to the name of the object + * @param[in] id is the Id of the object to obtain the name of + * @param[in] length is the length of the output name buffer + * @param[out] name will be set to the name of the object * - * @return @a *name will contain user defined object name - * @return @a name - if successful - * @return @a NULL - if unsuccessful + * @retval @a *name will contain user defined object name + * @retval @a name - if successful + * @retval @a NULL - if unsuccessful */ char *rtems_object_get_name( rtems_id id, @@ -131,20 +136,20 @@ char *rtems_object_get_name( ); /** - * @brief Set Name of Object + * @brief Set Name of Object * - * This method allows the caller to set the name of an - * object. This can be used to set the name of objects - * which do not have a naming scheme per their API. + * This method allows the caller to set the name of an + * object. This can be used to set the name of objects + * which do not have a naming scheme per their API. * - * RTEMS Object Helper -- Set Name of Object as String + * RTEMS Object Helper -- Set Name of Object as String * - * @param[in] id is the Id of the object to obtain the name of - * @param[out] name will be set to the name of the object + * @param[in] id is the Id of the object to obtain the name of + * @param[out] name will be set to the name of the object * - * @return @a *name will contain user defined object name - * @return @a RTEMS_SUCCESSFUL - if successful - * @return error code - if unsuccessful + * @retval @a *name will contain user defined object name + * @retval @a RTEMS_SUCCESSFUL - if successful + * @retval error code - if unsuccessful */ rtems_status_code rtems_object_set_name( rtems_id id, @@ -152,131 +157,131 @@ rtems_status_code rtems_object_set_name( ); /** - * @brief Get API Portion of Object Id + * @brief Get API Portion of Object Id * - * RTEMS Object Helper -- Extract API From Id + * RTEMS Object Helper -- Extract API From Id * - * This function returns the API portion of the Id. + * This function returns the API portion of the Id. * - * @param[in] _id is the Id of the object to obtain the API from + * @param[in] _id is the Id of the object to obtain the API from * - * @return This method returns the API portion of the provided - * @a _id. + * @retval This method returns the API portion of the provided + * @a _id. * - * @note This method does NOT validate the @a _id provided. + * @note This method does NOT validate the @a _id provided. * - * @note A body is also provided. + * @note A body is also provided. */ #define rtems_object_id_get_api( _id ) \ _Objects_Get_API( _id ) /** - * @brief Get Class Portion of Object Id + * @brief Get Class Portion of Object Id * - * This function returns the class portion of the @a _id ID. + * This function returns the class portion of the @a _id ID. * - * @param[in] _id is the Id of the object to obtain the class from + * @param[in] _id is the Id of the object to obtain the class from * - * @return This method returns the class portion of the provided - * @a _id. + * @retval This method returns the class portion of the provided + * @a _id. * - * @note This method does NOT validate the @a _id provided. + * @note This method does NOT validate the @a _id provided. * - * @note A body is also provided. + * @note A body is also provided. */ #define rtems_object_id_get_class( _id ) \ _Objects_Get_class( _id ) /** - * @brief Get Node Portion of Object Id + * @brief Get Node Portion of Object Id * - * This function returns the node portion of the ID. + * This function returns the node portion of the ID. * - * @param[in] _id is the Id of the object to obtain the node from + * @param[in] _id is the Id of the object to obtain the node from * - * @return This method returns the node portion of the provided + * @retval This method returns the node portion of the provided * @a _id. * - * @note This method does NOT validate the @a _id provided. + * @note This method does NOT validate the @a _id provided. * - * @note A body is also provided. + * @note A body is also provided. */ #define rtems_object_id_get_node( _id ) \ _Objects_Get_node( _id ) /** - * @brief Get Index Portion of Object Id + * @brief Get Index Portion of Object Id * - * This function returns the index portion of the ID. + * This function returns the index portion of the ID. * - * @param[in] _id is the Id of the object to obtain the index from + * @param[in] _id is the Id of the object to obtain the index from * - * @return This method returns the index portion of the provided - * @a _id. + * @retval This method returns the index portion of the provided + * @a _id. * - * @note This method does NOT validate the @a _id provided. + * @note This method does NOT validate the @a _id provided. * - * @note A body is also provided. + * @note A body is also provided. */ #define rtems_object_id_get_index( _id ) \ _Objects_Get_index( _id ) /** - * @brief Get Lowest Valid API Index + * @brief Get Lowest Valid API Index * - * This method returns the lowest valid value for the API - * portion of an RTEMS object Id. + * This method returns the lowest valid value for the API + * portion of an RTEMS object Id. * - * @return This method returns the least valid value for - * the API portion of an RTEMS object Id. + * @retval This method returns the least valid value for + * the API portion of an RTEMS object Id. * - * @note A body is also provided. + * @note A body is also provided. */ #define rtems_object_id_api_minimum() \ OBJECTS_INTERNAL_API /** - * @brief Get Highest Valid API Index + * @brief Get Highest Valid API Index * - * This method returns the highest valid value for the API - * portion of an RTEMS object Id. + * This method returns the highest valid value for the API + * portion of an RTEMS object Id. * - * @return This method returns the greatest valid value for - * the API portion of an RTEMS object Id. + * @retval This method returns the greatest valid value for + * the API portion of an RTEMS object Id. * - * @note A body is also provided. + * @note A body is also provided. */ #define rtems_object_id_api_maximum() \ OBJECTS_APIS_LAST /** - * @brief Get Lowest Valid Class Value + * @brief Get Lowest Valid Class Value * - * This method returns the lowest valid value Class for the - * specified @a api. Each API supports a different number - * of object classes. + * This method returns the lowest valid value Class for the + * specified @a api. Each API supports a different number + * of object classes. * - * @param[in] api is the API to obtain the minimum class of + * @param[in] api is the API to obtain the minimum class of * - * @return This method returns the least valid value for - * class number for the specified @a api. - * RTEMS Object Helper -- Get Least Valid Class for an API + * @retval This method returns the least valid value for + * class number for the specified @a api. + * RTEMS Object Helper -- Get Least Valid Class for an API */ int rtems_object_api_minimum_class( int api ); /** - * @brief Get Highest Valid Class Value + * @brief Get Highest Valid Class Value * - * This method returns the highest valid value Class for the - * specified @a api. Each API supports a different number - * of object classes. + * This method returns the highest valid value Class for the + * specified @a api. Each API supports a different number + * of object classes. * - * @param[in] api is the API to obtain the maximum class of + * @param[in] api is the API to obtain the maximum class of * - * @return This method returns the greatet valid value for - * class number for the specified @a api. + * @retval This method returns the greatet valid value for + * class number for the specified @a api. */ int rtems_object_api_maximum_class( int api @@ -284,49 +289,49 @@ int rtems_object_api_maximum_class( /** - * @brief Get Highest Valid Class Value + * @brief Get Highest Valid Class Value * - * This method returns the lowest valid value Class for the - * specified @a api. Each API supports a different number - * of object classes. + * This method returns the lowest valid value Class for the + * specified @a api. Each API supports a different number + * of object classes. * - * @param[in] api is the API to obtain the maximum class of + * @param[in] api is the API to obtain the maximum class of * - * @return This method returns the least valid value for - * class number for the specified @a api. + * @retval This method returns the least valid value for + * class number for the specified @a api. */ int rtems_object_id_api_maximum_class( int api ); /** - * @brief Get API Name + * @brief Get API Name * - * This method returns a string containing the name of the - * specified @a api. + * This method returns a string containing the name of the + * specified @a api. * - * @param[in] api is the API to obtain the name of + * @param[in] api is the API to obtain the name of * - * @return If successful, this method returns the name of - * the specified @a api. Otherwise, it returns - * the string "BAD API" + * @retval If successful, this method returns the name of + * the specified @a api. Otherwise, it returns + * the string "BAD API" */ const char *rtems_object_get_api_name( int api ); /** - * @brief Get Class Name + * @brief Get Class Name * - * This method returns a string containing the name of the - * @a class from the specified @a api. + * This method returns a string containing the name of the + * @a class from the specified @a api. * - * @param[in] the_api is the API for the class - * @param[in] the_class is the class to obtain the name of + * @param[in] the_api is the API for the class + * @param[in] the_class is the class to obtain the name of * - * @return If successful, this method returns the name of - * the specified @a class. Otherwise, it returns - * the string "BAD CLASS" + * @retval If successful, this method returns the name of + * the specified @a class. Otherwise, it returns + * the string "BAD CLASS" */ const char *rtems_object_get_api_class_name( int the_api, @@ -334,18 +339,18 @@ const char *rtems_object_get_api_class_name( ); /** - * @brief Get Class Information + * @brief Get Class Information * - * This method returns a string containing the name of the - * @a the_class from the specified @a api. + * This method returns a string containing the name of the + * @a the_class from the specified @a api. * - * @param[in] the_api is the API for the class - * @param[in] the_class is the class to obtain information about - * @param[in] info points to the information structure to fill in + * @param[in] the_api is the API for the class + * @param[in] the_class is the class to obtain information about + * @param[in] info points to the information structure to fill in * - * @return If successful, this method returns the name of - * RTEMS_SUCCESSFUL with @a *info filled in. Otherwise, - * a status is returned to indicate the error. + * @retval If successful, this method returns the name of + * RTEMS_SUCCESSFUL with @a *info filled in. Otherwise, + * a status is returned to indicate the error. * */ rtems_status_code rtems_object_get_class_information( diff --git a/cpukit/rtems/include/rtems/rtems/options.h b/cpukit/rtems/include/rtems/rtems/options.h index 6b30cc3044..29c0351a34 100644 --- a/cpukit/rtems/include/rtems/rtems/options.h +++ b/cpukit/rtems/include/rtems/rtems/options.h @@ -1,18 +1,21 @@ /** * @file rtems/rtems/options.h * - * @brief Information Which Defines the Options Available on Many Directives. + * @defgroup ClassicOptions Classic API Options * - * This include file contains information which defines the - * options available on many directives. + * @ingroup ClassicRTEMS + * @brief Options Available on Many Directives + * + * This include file contains information which defines the + * options available on many directives. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_OPTIONS_H @@ -23,9 +26,13 @@ extern "C" { #endif /** - * @defgroup ClassicOptions Classic API Options + * @defgroup ClassicOptions Classic API Options + * + * @ingroup ClassicRTEMS * - * This encapsulates functionality which XXX + * This encapsulates functionality related to the options argument + * to Classic API blocking operations. The primary option is whether + * or not a task is willing to wait for the operation to complete. */ /**@{*/ diff --git a/cpukit/rtems/include/rtems/rtems/part.h b/cpukit/rtems/include/rtems/rtems/part.h index ff1cedd823..c864bebc5f 100644 --- a/cpukit/rtems/include/rtems/rtems/part.h +++ b/cpukit/rtems/include/rtems/rtems/part.h @@ -1,40 +1,43 @@ /** * @file rtems/rtems/part.h * - * @brief Constants and Structures Associated with the Partition Manager + * @defgroup ClassicPart Partitions * - * This include file contains all the constants and structures associated - * with the Partition Manager. This manager provides facilities to - * dynamically allocate memory in fixed-sized units which are returned - * as buffers. + * @ingroup ClassicRTEMS + * @brief Partition Manager * - * Directives provided are: + * This include file contains all the constants and structures associated + * with the Partition Manager. This manager provides facilities to + * dynamically allocate memory in fixed-sized units which are returned + * as buffers. * - * - create a partition - * - get an ID of a partition - * - delete a partition - * - get a buffer from a partition - * - return a buffer to a partition + * Directives provided are: + * + * - create a partition + * - get an ID of a partition + * - delete a partition + * - get a buffer from a partition + * - return a buffer to a partition */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_PART_H #define _RTEMS_RTEMS_PART_H /** - * This constant is defined to extern most of the time when using - * this header file. However by defining it to nothing, the data - * declared in this header file can be instantiated. This is done - * in a single per manager file. + * This constant is defined to extern most of the time when using + * this header file. However by defining it to nothing, the data + * declared in this header file can be instantiated. This is done + * in a single per manager file. * - * Partition Manager -- Instantiate Data + * Partition Manager -- Instantiate Data */ #ifndef RTEMS_PART_EXTERN #define RTEMS_PART_EXTERN extern @@ -117,22 +120,22 @@ rtems_status_code rtems_partition_create( ); /** - * @brief RTEMS Partition Ident - * - * This routine implements the rtems_partition_ident directive. - * This directive returns the partition ID associated with name. - * If more than one partition is named name, then the partition - * to which the ID belongs is arbitrary. node indicates the - * extent of the search for the ID of the partition named name. - * The search can be limited to a particular node or allowed to - * encompass all nodes. - * - * @param[in] name is the user defined partition name - * @param[in] node is(are) the node(s) to be searched - * @param[in] id is the pointer to partition id - * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * *id filled in with the partition id + * @brief RTEMS Partition Ident + * + * This routine implements the rtems_partition_ident directive. + * This directive returns the partition ID associated with name. + * If more than one partition is named name, then the partition + * to which the ID belongs is arbitrary. node indicates the + * extent of the search for the ID of the partition named name. + * The search can be limited to a particular node or allowed to + * encompass all nodes. + * + * @param[in] name is the user defined partition name + * @param[in] node is(are) the node(s) to be searched + * @param[in] id is the pointer to partition id + * + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and + * *id filled in with the partition id */ rtems_status_code rtems_partition_ident( rtems_name name, @@ -141,33 +144,33 @@ rtems_status_code rtems_partition_ident( ); /** - * @brief RTEMS Delete Partition + * @brief RTEMS Delete Partition * - * This routine implements the rtems_partition_delete directive. The - * partition indicated by ID is deleted, provided that none of its buffers - * are still allocated. + * This routine implements the rtems_partition_delete directive. The + * partition indicated by ID is deleted, provided that none of its buffers + * are still allocated. * - * @param[in] id is the partition id + * @param[in] id is the partition id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_partition_delete( rtems_id id ); /** - * @brief RTEMS Get Partition Buffer + * @brief RTEMS Get Partition Buffer * - * This routine implements the rtems_partition_get_buffer directive. It - * attempts to allocate a buffer from the partition associated with ID. - * If a buffer is allocated, its address is returned in buffer. + * This routine implements the rtems_partition_get_buffer directive. It + * attempts to allocate a buffer from the partition associated with ID. + * If a buffer is allocated, its address is returned in buffer. * - * @param[in] id is the partition id - * @param[out] buffer is the pointer to buffer address + * @param[in] id is the partition id + * @param[out] buffer is the pointer to buffer address * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_partition_get_buffer( rtems_id id, diff --git a/cpukit/rtems/include/rtems/rtems/partmp.h b/cpukit/rtems/include/rtems/rtems/partmp.h index fee58e9038..3d3f47fe52 100644 --- a/cpukit/rtems/include/rtems/rtems/partmp.h +++ b/cpukit/rtems/include/rtems/rtems/partmp.h @@ -1,16 +1,18 @@ /** * @file rtems/rtems/partmp.h * - * This include file contains all the constants and structures associated - * with the Multiprocessing Support in the Partition Manager. + * @brief MP Support in Partition Manager + * + * This include file contains all the constants and structures associated + * with the Multiprocessing Support in the Partition Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_PARTMP_H @@ -34,7 +36,7 @@ extern "C" { * * This encapsulates functionality which XXX */ -/**{*/ +/*{*/ /** * The following enumerated type defines the list of diff --git a/cpukit/rtems/include/rtems/rtems/ratemon.h b/cpukit/rtems/include/rtems/rtems/ratemon.h index 2ea3d23a13..634889aeeb 100644 --- a/cpukit/rtems/include/rtems/rtems/ratemon.h +++ b/cpukit/rtems/include/rtems/rtems/ratemon.h @@ -1,28 +1,31 @@ /** * @file rtems/rtems/ratemon.h * - * @brief Constants, Structures, and Prototypes Associated to the Classic API Rate Monotonic Manager. + * @defgroup ClassicRateMon Rate Monotonic Scheduler * - * This include file contains all the constants, structures, and - * prototypes associated with the Rate Monotonic Manager. This manager - * provides facilities to implement threads which execute in a periodic - * fashion. + * @ingroup ClassicRTEMS + * @brief Classic API Rate Monotonic Manager. * - * Directives provided are: + * This include file contains all the constants, structures, and + * prototypes associated with the Rate Monotonic Manager. This manager + * provides facilities to implement threads which execute in a periodic + * fashion. * - * - create a rate monotonic timer - * - cancel a period - * - delete a rate monotonic timer - * - conclude current and start the next period - * - obtain status information on a period + * Directives provided are: + * + * - create a rate monotonic timer + * - cancel a period + * - delete a rate monotonic timer + * - conclude current and start the next period + * - obtain status information on a period */ -/* COPYRIGHT (c) 1989-2009. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2009. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_RATEMON_H @@ -293,19 +296,19 @@ rtems_status_code rtems_rate_monotonic_create( ); /** - * @brief RTEMS Rate Monotonic Name to Id + * @brief RTEMS Rate Monotonic Name to Id * - * This routine implements the rtems_rate_monotonic_ident directive. - * It returns the period ID associated with name. If more than one period - * is named name, then the period to which the ID belongs is arbitrary. + * This routine implements the rtems_rate_monotonic_ident directive. + * It returns the period ID associated with name. If more than one period + * is named name, then the period to which the ID belongs is arbitrary. * - * @param[in] name is the user defined period name - * @param[in] id is the pointer to period id + * @param[in] name is the user defined period name + * @param[in] id is the pointer to period id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the id will - * be filled in with the region id. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the id will + * be filled in with the region id. */ rtems_status_code rtems_rate_monotonic_ident( rtems_name name, @@ -313,16 +316,16 @@ rtems_status_code rtems_rate_monotonic_ident( ); /** - * @brief RTEMS Rate Monotonic Cancel + * @brief RTEMS Rate Monotonic Cancel * - * This routine implements the rtems_rate_monotonic_cancel directive. This - * directive stops the period associated with ID from continuing to - * run. + * This routine implements the rtems_rate_monotonic_cancel directive. This + * directive stops the period associated with ID from continuing to + * run. * - * @param[in] id is the rate monotonic id + * @param[in] id is the rate monotonic id * - * @return RTEMS_SUCCESSFUL if successful and caller is not the owning thread - * or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful and caller is not the owning thread + * or error code if unsuccessful * */ rtems_status_code rtems_rate_monotonic_cancel( @@ -330,33 +333,33 @@ rtems_status_code rtems_rate_monotonic_cancel( ); /** - * @brief RTEMS Delete Rate Monotonic + * @brief RTEMS Delete Rate Monotonic * - * This routine implements the rtems_rate_monotonic_delete directive. The - * period indicated by ID is deleted. + * This routine implements the rtems_rate_monotonic_delete directive. The + * period indicated by ID is deleted. * - * @param[in] id is the rate monotonic id + * @param[in] id is the rate monotonic id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_rate_monotonic_delete( rtems_id id ); /** - * @brief RTEMS Rate Monotonic Get Status + * @brief RTEMS Rate Monotonic Get Status * - * This routine implements the rtems_rate_monotonic_get_status directive. - * Information about the period indicated by ID is returned. + * This routine implements the rtems_rate_monotonic_get_status directive. + * Information about the period indicated by ID is returned. * - * @param[in] id is the rate monotonic id - * @param[in] status is the pointer to status control block + * @param[in] id is the rate monotonic id + * @param[in] status is the pointer to status control block * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. * */ rtems_status_code rtems_rate_monotonic_get_status( @@ -365,15 +368,15 @@ rtems_status_code rtems_rate_monotonic_get_status( ); /** - * @brief RTEMS Rate Monotonic Get Statistics + * @brief RTEMS Rate Monotonic Get Statistics * - * This routine implements the rtems_rate_monotonic_get_statistics directive. - * Statistics gathered from the use of this period are returned. + * This routine implements the rtems_rate_monotonic_get_statistics directive. + * Statistics gathered from the use of this period are returned. * - * @param[in] id is the rate monotonic id - * @param[in] statistics is the pointer to statistics control block + * @param[in] id is the rate monotonic id + * @param[in] statistics is the pointer to statistics control block * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_rate_monotonic_get_statistics( rtems_id id, @@ -423,17 +426,17 @@ void rtems_rate_monotonic_report_statistics_with_plugin( void rtems_rate_monotonic_report_statistics( void ); /** - * @brief RTEMS Rate Monotonic Period + * @brief RTEMS Rate Monotonic Period * - * This routine implements the rtems_rate_monotonic_period directive. When - * length is non-zero, this directive initiates the period associated with - * ID from continuing for a period of length. If length is zero, then - * result is set to indicate the current state of the period. + * This routine implements the rtems_rate_monotonic_period directive. When + * length is non-zero, this directive initiates the period associated with + * ID from continuing for a period of length. If length is zero, then + * result is set to indicate the current state of the period. * - * @param[in] id is the rate monotonic id - * @param[in] lenght is the length of period (in ticks) + * @param[in] id is the rate monotonic id + * @param[in] length is the length of period (in ticks) * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_rate_monotonic_period( rtems_id id, @@ -441,16 +444,16 @@ rtems_status_code rtems_rate_monotonic_period( ); /** - * @brief Rate Monotonic Timeout + * @brief Rate Monotonic Timeout * - * This routine is invoked when the period represented - * by ID expires. If the thread which owns this period is blocked - * waiting for the period to expire, then it is readied and the - * period is restarted. If the owning thread is not waiting for the - * period to expire, then the period is placed in the EXPIRED - * state and not restarted. + * This routine is invoked when the period represented + * by ID expires. If the thread which owns this period is blocked + * waiting for the period to expire, then it is readied and the + * period is restarted. If the owning thread is not waiting for the + * period to expire, then the period is placed in the EXPIRED + * state and not restarted. * - * @param[in] id is the period id + * @param[in] id is the period id */ void _Rate_monotonic_Timeout( rtems_id id, @@ -458,19 +461,19 @@ void _Rate_monotonic_Timeout( ); /** - * @brief _Rate_monotonic_Get_status( + * @brief _Rate_monotonic_Get_status( * - * This routine is invoked to compute the elapsed wall time and cpu - * time for a period. + * This routine is invoked to compute the elapsed wall time and cpu + * time for a period. * - * @param[in] the_period points to the period being operated upon. - * @param[out] wall_since_last_period is set to the wall time elapsed - * since the period was initiated. - * @param[out] cpu_since_last_period is set to the cpu time used by the - * owning thread since the period was initiated. + * @param[in] the_period points to the period being operated upon. + * @param[out] wall_since_last_period is set to the wall time elapsed + * since the period was initiated. + * @param[out] cpu_since_last_period is set to the cpu time used by the + * owning thread since the period was initiated. * - * @return This routine returns true if the status can be determined - * and false otherwise. + * @retval This routine returns true if the status can be determined + * and false otherwise. */ bool _Rate_monotonic_Get_status( Rate_monotonic_Control *the_period, diff --git a/cpukit/rtems/include/rtems/rtems/region.h b/cpukit/rtems/include/rtems/rtems/region.h index 73d66d290d..a99a497b8d 100644 --- a/cpukit/rtems/include/rtems/rtems/region.h +++ b/cpukit/rtems/include/rtems/rtems/region.h @@ -1,27 +1,30 @@ /** * @file rtems/rtems/region.h * - * @brief Constants and Structures Associated with the Region Manager + * @defgroup ClassicRegion Regions * - * This include file contains all the constants and structures associated - * with the Region Manager. This manager provides facilities to dynamically - * allocate memory in variable sized units which are returned as segments. + * @ingroup ClassicRTEMS + * @brief Region Manager * - * Directives provided are: + * This include file contains all the constants and structures associated + * with the Region Manager. This manager provides facilities to dynamically + * allocate memory in variable sized units which are returned as segments. * - * - create a region - * - get an ID of a region - * - delete a region - * - get a segment from a region - * - return a segment to a region + * Directives provided are: + * + * - create a region + * - get an ID of a region + * - delete a region + * - get a segment from a region + * - return a segment to a region */ -/* COPYRIGHT (c) 1989-2009. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2009. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_REGION_H @@ -119,20 +122,20 @@ rtems_status_code rtems_region_create( ); /** - * @brief RTEMS Extend Region + * @brief RTEMS Extend Region * - * This routine implements the rtems_region_extend directive. The - * region will have the name name. The memory area managed by - * the region will be attempted to be grown by length bytes using - * the memory starting at starting_address. + * This routine implements the rtems_region_extend directive. The + * region will have the name name. The memory area managed by + * the region will be attempted to be grown by length bytes using + * the memory starting at starting_address. * - * @param[in] id is the id of region to grow - * @param[in] starting_address starting address of memory area for extension - * @param[in] length is the physical length in bytes to grow the region + * @param[in] id is the id of region to grow + * @param[in] starting_address starting address of memory area for extension + * @param[in] length is the physical length in bytes to grow the region * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_region_extend( rtems_id id, @@ -141,20 +144,20 @@ rtems_status_code rtems_region_extend( ); /** - * @brief RTEMS Region Name to Id + * @brief RTEMS Region Name to Id * - * This routine implements the rtems_region_ident directive. - * This directive returns the region ID associated with name. - * If more than one region is named name, then the region - * to which the ID belongs is arbitrary. + * This routine implements the rtems_region_ident directive. + * This directive returns the region ID associated with name. + * If more than one region is named name, then the region + * to which the ID belongs is arbitrary. * - * @param[in] name is the user defined region name - * @param[in] id is the pointer to region id + * @param[in] name is the user defined region name + * @param[in] id is the pointer to region id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the id will - * be filled in with the region id. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the id will + * be filled in with the region id. */ rtems_status_code rtems_region_ident( rtems_name name, @@ -162,17 +165,17 @@ rtems_status_code rtems_region_ident( ); /** - * @brief RTEMS Get Region Information + * @brief RTEMS Get Region Information * - * This routine implements the rtems_region_get_information directive. - * This directive returns information about the heap associated with - * this region. + * This routine implements the rtems_region_get_information directive. + * This directive returns information about the heap associated with + * this region. * - * @param[in] id is the region id - * @param[in] the_info is the pointer to region information block + * @param[in] id is the region id + * @param[in] the_info is the pointer to region information block * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * *id filled with the region information block + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and + * *id filled with the region information block */ rtems_status_code rtems_region_get_information( rtems_id id, @@ -180,20 +183,20 @@ rtems_status_code rtems_region_get_information( ); /** - * @brief RTEMS Get Region Free Information + * @brief RTEMS Get Region Free Information * - * This routine implements the rtems_region_get_free_information directive. - * This directive returns information about the free blocks in the - * heap associated with this region. Information about the used blocks - * will be returned as zero. + * This routine implements the rtems_region_get_free_information directive. + * This directive returns information about the free blocks in the + * heap associated with this region. Information about the used blocks + * will be returned as zero. * - * @param[in] id is the region id - * @param[in] the_info is the pointer to region information block + * @param[in] id is the region id + * @param[in] the_info is the pointer to region information block * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the the_info will - * be filled in with the region information block. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the the_info will + * be filled in with the region information block. */ rtems_status_code rtems_region_get_free_information( rtems_id id, @@ -201,43 +204,43 @@ rtems_status_code rtems_region_get_free_information( ); /** - * @brief RTEMS Delete Region + * @brief RTEMS Delete Region * - * This routine implements the rtems_region_delete directive. The - * region indicated by ID is deleted, provided that none of its segments are - * still allocated. + * This routine implements the rtems_region_delete directive. The + * region indicated by ID is deleted, provided that none of its segments are + * still allocated. * - * @param[in] id is the region id + * @param[in] id is the region id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_region_delete( rtems_id id ); /** - * @brief RTEMS Get Region Segment - * - * This routine implements the rtems_region_get_segment directive. It - * attempts to allocate a segment from the region associated with @a id. - * If a segment of the requested @a size size can be allocated, its address - * is returned in @a segment. If no segment is available, then the task - * may return immediately or block waiting for a segment with an optional - * timeout of @a timeout clock ticks. Whether the task blocks or returns - * immediately is based on the no_wait option in the @a option_set. - * - * @param[in] id is the region id - * @param[in] size is the segment size in bytes - * @param[in] option_set is the wait option - * @param[in] timeout is the number of ticks to wait (0 means wait forever) - * @param[in] segment is the pointer to segment address - * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the segment will - * be filled in with the segment address. + * @brief RTEMS Get Region Segment + * + * This routine implements the rtems_region_get_segment directive. It + * attempts to allocate a segment from the region associated with @a id. + * If a segment of the requested @a size size can be allocated, its address + * is returned in @a segment. If no segment is available, then the task + * may return immediately or block waiting for a segment with an optional + * timeout of @a timeout clock ticks. Whether the task blocks or returns + * immediately is based on the no_wait option in the @a option_set. + * + * @param[in] id is the region id + * @param[in] size is the segment size in bytes + * @param[in] option_set is the wait option + * @param[in] timeout is the number of ticks to wait (0 means wait forever) + * @param[in] segment is the pointer to segment address + * + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the segment will + * be filled in with the segment address. */ rtems_status_code rtems_region_get_segment( rtems_id id, @@ -248,19 +251,19 @@ rtems_status_code rtems_region_get_segment( ); /** - * @brief RTEMS Get Region Segment Size + * @brief RTEMS Get Region Segment Size * - * This routine implements the rtems_region_get_segment_size directive. It - * returns the size in bytes of the specified user memory area. + * This routine implements the rtems_region_get_segment_size directive. It + * returns the size in bytes of the specified user memory area. * - * @param[in] id is the region id - * @param[in] segment is the segment address - * @param[in] size is the pointer to segment size in bytes + * @param[in] id is the region id + * @param[in] segment is the segment address + * @param[in] size is the pointer to segment size in bytes * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the size will - * be filled in with the segment size in bytes. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the size will + * be filled in with the segment size in bytes. */ rtems_status_code rtems_region_get_segment_size( rtems_id id, @@ -269,20 +272,20 @@ rtems_status_code rtems_region_get_segment_size( ); /** - * @brief RTEMS Return Region Segment + * @brief RTEMS Return Region Segment * - * This routine implements the rtems_region_return_segment directive. It - * frees the segment to the region associated with ID. The segment must - * have been previously allocated from the same region. If freeing the - * segment results in enough memory being available to satisfy the - * rtems_region_get_segment of the first blocked task, then that task and as - * many subsequent tasks as possible will be unblocked with their requests - * satisfied. + * This routine implements the rtems_region_return_segment directive. It + * frees the segment to the region associated with ID. The segment must + * have been previously allocated from the same region. If freeing the + * segment results in enough memory being available to satisfy the + * rtems_region_get_segment of the first blocked task, then that task and as + * many subsequent tasks as possible will be unblocked with their requests + * satisfied. * - * @param[in] id is the region id - * @param[in] segment is the pointer to segment address + * @param[in] id is the region id + * @param[in] segment is the pointer to segment address * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_region_return_segment( rtems_id id, @@ -290,27 +293,27 @@ rtems_status_code rtems_region_return_segment( ); /** - * @brief Resize RTEMS Region Segment - * - * This routine implements the rtems_region_resize_segment directive. It - * tries to resize segment in the region associated with 'id' to the new size - * 'size' in place. The first 'size' or old size bytes of the segment - * (whatever is less) are guaranteed to remain unmodified. The segment must - * have been previously allocated from the same region. If resizing the - * segment results in enough memory being available to satisfy the - * rtems_region_get_segment of the first blocked task, then that task and as - * many subsequent tasks as possible will be unblocked with their requests - * satisfied. - * - * @param[in] id is the region id - * @param[in] segmet is the pointer to segment address - * @param[in] size is the new required size - * @return RTEMS_SUCCESSFUL if operation successful, RTEMS_UNSATISFIED if the - * the segment can't be resized in place or any other code atfailure - * - * @note On RTEMS_SUCCESSFUL or RTEMS_UNSATISFIED exit it returns into the - * 'old_size' the old size in bytes of the user memory area of the - * specified segment. + * @brief Resize RTEMS Region Segment + * + * This routine implements the rtems_region_resize_segment directive. It + * tries to resize segment in the region associated with 'id' to the new size + * 'size' in place. The first 'size' or old size bytes of the segment + * (whatever is less) are guaranteed to remain unmodified. The segment must + * have been previously allocated from the same region. If resizing the + * segment results in enough memory being available to satisfy the + * rtems_region_get_segment of the first blocked task, then that task and as + * many subsequent tasks as possible will be unblocked with their requests + * satisfied. + * + * @param[in] id is the region id + * @param[in] segment is the pointer to segment address + * @param[in] size is the new required size + * @retval RTEMS_SUCCESSFUL if operation successful, RTEMS_UNSATISFIED if the + * the segment can't be resized in place or any other code at failure + * + * @note On RTEMS_SUCCESSFUL or RTEMS_UNSATISFIED exit it returns into the + * 'old_size' the old size in bytes of the user memory area of the + * specified segment. */ rtems_status_code rtems_region_resize_segment( rtems_id id, diff --git a/cpukit/rtems/include/rtems/rtems/regionmp.h b/cpukit/rtems/include/rtems/rtems/regionmp.h index f4adc2bda1..4ec1eb10c8 100644 --- a/cpukit/rtems/include/rtems/rtems/regionmp.h +++ b/cpukit/rtems/include/rtems/rtems/regionmp.h @@ -1,16 +1,21 @@ /** * @file rtems/rtems/regionmp.h * - * This include file contains all the constants and structures associated - * with the Multiprocessing Support in the Region Manager. + * @defgroup ClassicRegionMP Region MP Support + * + * @ingroup ClassicMP + * @brief Multiprocessing Support in Region Manager + * + * This include file contains all the constants and structures associated + * with the Multiprocessing Support in the Region Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_REGIONMP_H diff --git a/cpukit/rtems/include/rtems/rtems/rtemsapi.h b/cpukit/rtems/include/rtems/rtems/rtemsapi.h index 5d74fa6790..039436ded1 100644 --- a/cpukit/rtems/include/rtems/rtems/rtemsapi.h +++ b/cpukit/rtems/include/rtems/rtems/rtemsapi.h @@ -1,15 +1,22 @@ /** * @file rtems/rtems/rtemsapi.h * - * RTEMS API Support + * @defgroup ClassicAPI RTEMS API Support + * + * @ingroup ClassicRTEMS + * @brief RTEMS API Support + * + * This routine initializes the RTEMS API by invoking the initialization + * routine for each RTEMS manager with the appropriate parameters + * from the configuration_table. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_RTEMSAPI_H diff --git a/cpukit/rtems/include/rtems/rtems/sem.h b/cpukit/rtems/include/rtems/rtems/sem.h index ea0aea32ca..dafd1eac0d 100644 --- a/cpukit/rtems/include/rtems/rtems/sem.h +++ b/cpukit/rtems/include/rtems/rtems/sem.h @@ -1,40 +1,46 @@ /** * @file rtems/rtems/sem.h * - * This include file contains all the constants and structures associated - * with the Semaphore Manager. This manager utilizes standard Dijkstra - * counting semaphores to provide synchronization and mutual exclusion - * capabilities. - * - * Directives provided are: - * - * - create a semaphore - * - get an ID of a semaphore - * - delete a semaphore - * - acquire a semaphore - * - release a semaphore + * @brief Semaphore Manager + * + * @defgroup ClassicSem Semaphores + * + * @ingroup ClassicRTEMS + * + * This include file contains all the constants and structures associated + * with the Semaphore Manager. This manager utilizes standard Dijkstra + * counting semaphores to provide synchronization and mutual exclusion + * capabilities. + * + * Directives provided are: + * + * - create a semaphore + * - get an ID of a semaphore + * - delete a semaphore + * - acquire a semaphore + * - release a semaphore */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_SEM_H #define _RTEMS_RTEMS_SEM_H /** - * @brief Instantiate Semaphore Data + * @brief Instantiate Semaphore Data * - * Semaphore Manager -- Data Instantiation + * Semaphore Manager -- Data Instantiation * - * This constant is defined to extern most of the time when using - * this header file. However by defining it to nothing, the data - * declared in this header file can be instantiated. This is done - * in a single per manager file. + * This constant is defined to extern most of the time when using + * this header file. However by defining it to nothing, the data + * declared in this header file can be instantiated. This is done + * in a single per manager file. * */ #ifndef RTEMS_SEM_EXTERN @@ -135,22 +141,22 @@ rtems_status_code rtems_semaphore_create( ); /** - * @brief RTEMS Semaphore Name to Id - * - * This routine implements the rtems_semaphore_ident directive. - * This directive returns the semaphore ID associated with name. - * If more than one semaphore is named name, then the semaphore - * to which the ID belongs is arbitrary. node indicates the - * extent of the search for the ID of the semaphore named name. - * The search can be limited to a particular node or allowed to - * encompass all nodes. - * - * @param[in] name is the user defined semaphore name - * @param[in] node is(are) the node(s) to be searched - * @param[in] id is the pointer to semaphore id - * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * *id filled in with the semaphore id + * @brief RTEMS Semaphore Name to Id + * + * This routine implements the rtems_semaphore_ident directive. + * This directive returns the semaphore ID associated with name. + * If more than one semaphore is named name, then the semaphore + * to which the ID belongs is arbitrary. node indicates the + * extent of the search for the ID of the semaphore named name. + * The search can be limited to a particular node or allowed to + * encompass all nodes. + * + * @param[in] name is the user defined semaphore name + * @param[in] node is(are) the node(s) to be searched + * @param[in] id is the pointer to semaphore id + * + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and + * *id filled in with the semaphore id */ rtems_status_code rtems_semaphore_ident( rtems_name name, @@ -159,39 +165,39 @@ rtems_status_code rtems_semaphore_ident( ); /** - * @brief RTEMS Delete Semaphore + * @brief RTEMS Delete Semaphore * - * This routine implements the rtems_semaphore_delete directive. The - * semaphore indicated by ID is deleted. + * This routine implements the rtems_semaphore_delete directive. The + * semaphore indicated by ID is deleted. * - * @param[in] id is the semaphore id + * @param[in] id is the semaphore id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_semaphore_delete( rtems_id id ); /** - * @brief RTEMS Obtain Semaphore - * - * This routine implements the rtems_semaphore_obtain directive. It - * attempts to obtain a unit from the semaphore associated with ID. - * If a unit can be allocated, the calling task will return immediately. - * If no unit is available, then the task may return immediately or - * block waiting for a unit with an optional timeout of timeout - * clock ticks. Whether the task blocks or returns immediately - * is based on the RTEMS_NO_WAIT option in the option_set. - * - * @param[in] id is the semaphore id - * @param[in] option_set is the wait option - * @param[in] timeout is the number of ticks to wait (0 means wait forever) - * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @brief RTEMS Obtain Semaphore + * + * This routine implements the rtems_semaphore_obtain directive. It + * attempts to obtain a unit from the semaphore associated with ID. + * If a unit can be allocated, the calling task will return immediately. + * If no unit is available, then the task may return immediately or + * block waiting for a unit with an optional timeout of timeout + * clock ticks. Whether the task blocks or returns immediately + * is based on the RTEMS_NO_WAIT option in the option_set. + * + * @param[in] id is the semaphore id + * @param[in] option_set is the wait option + * @param[in] timeout is the number of ticks to wait (0 means wait forever) + * + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_semaphore_obtain( rtems_id id, @@ -215,18 +221,18 @@ rtems_status_code rtems_semaphore_release( ); /** - * @brief RTEMS Semaphore Flush + * @brief RTEMS Semaphore Flush * - * DESCRIPTION: - * This package is the implementation of the flush directive - * of the Semaphore Manager. + * DESCRIPTION: + * This package is the implementation of the flush directive + * of the Semaphore Manager. * - * This directive allows a thread to flush the threads - * pending on the semaphore. + * This directive allows a thread to flush the threads + * pending on the semaphore. * - * @param[in] id is the semaphore id + * @param[in] id is the semaphore id * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_semaphore_flush( rtems_id id @@ -246,28 +252,28 @@ bool _Semaphore_Seize( ); /** - * @brief Semaphore Translate Core Mutex Return Code + * @brief Semaphore Translate Core Mutex Return Code * - * This function returns a RTEMS status code based on the mutex - * status code specified. + * This function returns a RTEMS status code based on the mutex + * status code specified. * - * @param[in] the_mutex_status is the mutex status code to translate + * @param[in] the_mutex_status is the mutex status code to translate * - * @return translated RTEMS status code + * @retval translated RTEMS status code */ rtems_status_code _Semaphore_Translate_core_mutex_return_code ( uint32_t the_mutex_status ); /** - * @brief Semaphore Translate Core Semaphore Return Code + * @brief Semaphore Translate Core Semaphore Return Code * - * This function returns a RTEMS status code based on the semaphore - * status code specified. + * This function returns a RTEMS status code based on the semaphore + * status code specified. * - * @param[in] status is the semaphore status code to translate + * @param[in] the_mutex_status is the semaphore status code to translate * - * @return translated RTEMS status code + * @retval translated RTEMS status code */ rtems_status_code _Semaphore_Translate_core_semaphore_return_code ( uint32_t the_mutex_status diff --git a/cpukit/rtems/include/rtems/rtems/semmp.h b/cpukit/rtems/include/rtems/rtems/semmp.h index d592d33b3a..d52176de7d 100644 --- a/cpukit/rtems/include/rtems/rtems/semmp.h +++ b/cpukit/rtems/include/rtems/rtems/semmp.h @@ -1,16 +1,21 @@ /** * @file rtems/rtems/semmp.h * - * This include file contains all the constants and structures associated - * with the Multiprocessing Support in the Semaphore Manager. + * @defgroup ClassicSEM Semaphore MP Support + * + * @ingroup ClassicRTEMS + * @brief Semaphore Manager MP Support + * + * This include file contains all the constants and structures associated + * with the Multiprocessing Support in the Semaphore Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_SEMMP_H @@ -142,12 +147,12 @@ Semaphore_MP_Packet *_Semaphore_MP_Get_packet ( void ); /** * @brief Semaphore Core Mutex MP Support * - * This function processes the global actions necessary for remote - * accesses to a global semaphore based on a core mutex. This function - * is called by the core. + * This function processes the global actions necessary for remote + * accesses to a global semaphore based on a core mutex. This function + * is called by the core. * - * @param[in] the_thread the remote thread the semaphore was surrendered to - * @param[in] id is the id of the surrendered semaphore + * @param[in] the_thread the remote thread the semaphore was surrendered to + * @param[in] id is the id of the surrendered semaphore */ void _Semaphore_Core_mutex_mp_support ( Thread_Control *the_thread, @@ -155,14 +160,14 @@ void _Semaphore_Core_mutex_mp_support ( ); /** - * @brief Semaphore Core MP Support + * @brief Semaphore Core MP Support * - * This function processes the global actions necessary for remote - * accesses to a global semaphore based on a core semaphore. This function - * is called by the core. + * This function processes the global actions necessary for remote + * accesses to a global semaphore based on a core semaphore. This function + * is called by the core. * - * @param[in] the_thread the remote thread the semaphore was surrendered to - * @param[in] id is the id of the surrendered semaphore + * @param[in] the_thread the remote thread the semaphore was surrendered to + * @param[in] id is the id of the surrendered semaphore */ void _Semaphore_Core_semaphore_mp_support ( Thread_Control *the_thread, diff --git a/cpukit/rtems/include/rtems/rtems/signal.h b/cpukit/rtems/include/rtems/rtems/signal.h index 6e242544a3..18f31b5ff5 100644 --- a/cpukit/rtems/include/rtems/rtems/signal.h +++ b/cpukit/rtems/include/rtems/rtems/signal.h @@ -1,22 +1,27 @@ /** * @file rtems/rtems/signal.h * - * This include file contains all the constants and structures associated - * with the Signal Manager. This manager provides capabilities required - * for asynchronous communication between tasks via signal sets. + * @defgroup ClassicSignal Signals * - * Directives provided are: + * @ingroup ClassicRTEMS + * @brief Signal Manager * - * + establish an asynchronous signal routine - * + send a signal set to a task + * This include file contains all the constants and structures associated + * with the Signal Manager. This manager provides capabilities required + * for asynchronous communication between tasks via signal sets. + * + * Directives provided are: + * + * + establish an asynchronous signal routine + * + send a signal set to a task */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_SIGNAL_H @@ -50,18 +55,18 @@ extern "C" { void _Signal_Manager_initialization( void ); /** - * @brief RTEMS Catch Signal + * @brief RTEMS Catch Signal * - * This routine implements the rtems_signal_catch directive. This directive - * is used to establish asr_handler as the Asynchronous Signal Routine - * (RTEMS_ASR) for the calling task. The asr_handler will execute with a - * mode of mode_set. + * This routine implements the rtems_signal_catch directive. This directive + * is used to establish asr_handler as the Asynchronous Signal Routine + * (RTEMS_ASR) for the calling task. The asr_handler will execute with a + * mode of mode_set. * - * @param[in] asr_handler is the address of asynchronous signal routine (asr) - * ( NULL indicates asr is invalid ) - * @param[in] mode_set is the mode value for asr + * @param[in] asr_handler is the address of asynchronous signal routine (asr) + * ( NULL indicates asr is invalid ) + * @param[in] mode_set is the mode value for asr * - * @return RTEMS_SUCCESSFUL + * @retval RTEMS_SUCCESSFUL */ rtems_status_code rtems_signal_catch( rtems_asr_entry asr_handler, @@ -69,15 +74,15 @@ rtems_status_code rtems_signal_catch( ); /** - * @brief RTEMS Send Signal + * @brief RTEMS Send Signal * - * This routine implements the rtems_signal_send directive. This directive - * sends the signal_set to the task specified by ID. + * This routine implements the rtems_signal_send directive. This directive + * sends the signal_set to the task specified by ID. * - * @param[in] id is the thread thread id - * @param[in] signal_set is the signal set + * @param[in] id is the thread thread id + * @param[in] signal_set is the signal set * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_signal_send( rtems_id id, diff --git a/cpukit/rtems/include/rtems/rtems/signalmp.h b/cpukit/rtems/include/rtems/rtems/signalmp.h index 2b373a92ed..82a7e07ef8 100644 --- a/cpukit/rtems/include/rtems/rtems/signalmp.h +++ b/cpukit/rtems/include/rtems/rtems/signalmp.h @@ -1,16 +1,18 @@ /** * @file rtems/rtems/signalmp.h * - * This include file contains all the constants and structures associated - * with the Multiprocessing Support in the Signal Manager. + * @brief Signal MP Support + * + * This include file contains all the constants and structures associated + * with the Multiprocessing Support in the Signal Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_SIGNALMP_H @@ -33,7 +35,7 @@ extern "C" { * * This encapsulates functionality which XXX */ -/**{*/ +/*{*/ /** * The following enumerated type defines the list of diff --git a/cpukit/rtems/include/rtems/rtems/smp.h b/cpukit/rtems/include/rtems/rtems/smp.h index cf2ae8e30b..e62084ce86 100644 --- a/cpukit/rtems/include/rtems/rtems/smp.h +++ b/cpukit/rtems/include/rtems/rtems/smp.h @@ -1,19 +1,21 @@ /** * @file rtems/rtems/smp.h * - * This include file provides the application interface - * to SMP information and services. + * @defgroup ClassicSMP Classic API SMP Services * - * Most of the SMP interface is hidden from the application - * and exists between the BSP and RTEMS. + * @ingroup ClassicRTEMS + * @brief SMP information and services. + * + * Most of the SMP interface is hidden from the application + * and exists between the BSP and RTEMS. */ -/* COPYRIGHT (c) 1989-2011. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_SMP_H @@ -37,35 +39,35 @@ extern "C" { extern uint32_t rtems_configuration_smp_maximum_processors; /** - * @brief Obtain Number of Cores in System + * @brief Obtain Number of Cores in System * - * This method returns the number of CPU cores that are currently in - * the system. This will always be less than or equal to the number - * of maximum number of cores which were configured. + * This method returns the number of CPU cores that are currently in + * the system. This will always be less than or equal to the number + * of maximum number of cores which were configured. * - * @return This method returns the number of cores in this system. + * @retval This method returns the number of cores in this system. */ #define rtems_smp_get_number_of_processors() \ (_SMP_Processor_count) /** - * @brief Obtain Maximum Cores Configured + * @brief Obtain Maximum Cores Configured * - * This method returns the number of CPU cores that were configured - * in the system. The actual number of cores will always be less than - * or equal to the number of maximum number of cores which were configured. + * This method returns the number of CPU cores that were configured + * in the system. The actual number of cores will always be less than + * or equal to the number of maximum number of cores which were configured. * - * @return This method returns the number of cores configured. + * @retval This method returns the number of cores configured. */ #define rtems_configuration_get_smp_maximum_processors() \ (rtems_configuration_smp_maximum_processors) /** - * @brief Obtain Current Core Number + * @brief Obtain Current Core Number * - * This method returns the id of the current CPU core. + * This method returns the id of the current CPU core. * - * @return This method returns the id of the current CPU core. + * @retval This method returns the id of the current CPU core. */ #define rtems_smp_get_current_processor() \ bsp_smp_processor_id() diff --git a/cpukit/rtems/include/rtems/rtems/status.h b/cpukit/rtems/include/rtems/rtems/status.h index 98923a0d53..9732d290f0 100644 --- a/cpukit/rtems/include/rtems/rtems/status.h +++ b/cpukit/rtems/include/rtems/rtems/status.h @@ -1,18 +1,21 @@ /** * @file rtems/rtems/status.h * - * @brief Status Codes Returned from the Executive Directives + * @defgroup ClassicStatus Status Codes * - * This include file contains the status codes returned from the - * executive directives. + * @ingroup ClassicRTEMS + * @brief Status Codes Returned from Executive Directives + * + * This include file contains the status codes returned from the + * executive directives. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_STATUS_H diff --git a/cpukit/rtems/include/rtems/rtems/support.h b/cpukit/rtems/include/rtems/rtems/support.h index 30716de72f..c9fbbdc480 100644 --- a/cpukit/rtems/include/rtems/rtems/support.h +++ b/cpukit/rtems/include/rtems/rtems/support.h @@ -1,19 +1,18 @@ /** * @file * - * @ingroup ClassicRTEMS - * - * @ingroup ClassicRTEMSWorkspace + * @defgroup ClassicRTEMSWorkspace Workspace * + * @ingroup ClassicRTEMS * @brief Classic API support. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_SUPPORT_H @@ -27,9 +26,8 @@ extern "C" { /** * @addtogroup ClassicRTEMS - * - * @{ */ +/**@{**/ /** * @brief Returns the number of micro seconds for the milli seconds value @a _ms. @@ -58,9 +56,8 @@ extern "C" { * @ingroup ClassicRTEMS * * Workspace definitions. - * - * @{ */ +/**@{**/ /** * @brief Gets Workspace Information diff --git a/cpukit/rtems/include/rtems/rtems/taskmp.h b/cpukit/rtems/include/rtems/rtems/taskmp.h index 7bf4c1bf2e..01a283b2f5 100644 --- a/cpukit/rtems/include/rtems/rtems/taskmp.h +++ b/cpukit/rtems/include/rtems/rtems/taskmp.h @@ -1,16 +1,21 @@ /** * @file rtems/rtems/taskmp.h * - * This include file contains all the constants and structures associated - * with the multiprocessing support in the task manager. + * @defgroup ClassicTaskMP Task MP Support + * + * @ingroup ClassicRTEMS + * @brief Task Manager MP Support + * + * This include file contains all the constants and structures associated + * with the multiprocessing support in the task manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_TASKMP_H diff --git a/cpukit/rtems/include/rtems/rtems/tasks.h b/cpukit/rtems/include/rtems/rtems/tasks.h index 607f87ca57..3be3aebe7c 100644 --- a/cpukit/rtems/include/rtems/rtems/tasks.h +++ b/cpukit/rtems/include/rtems/rtems/tasks.h @@ -1,34 +1,39 @@ /** * @file rtems/rtems/tasks.h * - * This include file contains all constants and structures associated - * with RTEMS tasks. This manager provides a comprehensive set of directives - * to create, delete, and administer tasks. - * - * Directives provided are: - * - * - create a task - * - get an ID of a task - * - start a task - * - restart a task - * - delete a task - * - suspend a task - * - resume a task - * - set a task's priority - * - change the current task's mode - * - get a task notepad entry - * - set a task notepad entry - * - wake up after interval - * - wake up when specified + * @defgroup ClassicTasks Tasks + * + * @ingroup ClassicRTEMS + * @brief RTEMS Tasks + * + * This include file contains all constants and structures associated + * with RTEMS tasks. This manager provides a comprehensive set of directives + * to create, delete, and administer tasks. + * + * Directives provided are: + * + * - create a task + * - get an ID of a task + * - start a task + * - restart a task + * - delete a task + * - suspend a task + * - resume a task + * - set a task's priority + * - change the current task's mode + * - get a task notepad entry + * - set a task notepad entry + * - wake up after interval + * - wake up when specified */ /* - * COPYRIGHT (c) 1989-2011. - * On-Line Applications Research Corporation (OAR). + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_TASKS_H @@ -249,24 +254,24 @@ extern void (*_RTEMS_tasks_Initialize_user_tasks_p)(void); void _RTEMS_tasks_Manager_initialization(void); /** - * @brief RTEMS Task Create + * @brief RTEMS Task Create * - * This routine implements the rtems_task_create directive. The task - * will have the name name. The attribute_set can be used to indicate - * that the task will be globally accessible or utilize floating point. - * The task's stack will be stack_size bytes. The task will begin - * execution with initial_priority and initial_modes. It returns the - * id of the created task in ID. + * This routine implements the rtems_task_create directive. The task + * will have the name name. The attribute_set can be used to indicate + * that the task will be globally accessible or utilize floating point. + * The task's stack will be stack_size bytes. The task will begin + * execution with initial_priority and initial_modes. It returns the + * id of the created task in ID. * - * @param[in] name is the user defined thread name - * @param[in] initial_priority is the thread priority - * @param[in] stack_size is the stack size in bytes - * @param[in] initial_modes is the initial thread mode - * @param[in] attribute_set is the thread attributes - * @param[in] id is the pointer to thread id + * @param[in] name is the user defined thread name + * @param[in] initial_priority is the thread priority + * @param[in] stack_size is the stack size in bytes + * @param[in] initial_modes is the initial thread mode + * @param[in] attribute_set is the thread attributes + * @param[in] id is the pointer to thread id * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful - * and *id thread id filled in + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * and *id thread id filled in */ rtems_status_code rtems_task_create( rtems_name name, @@ -278,24 +283,24 @@ rtems_status_code rtems_task_create( ); /** - * @brief RTEMS Task Name to Id + * @brief RTEMS Task Name to Id * - * This routine implements the rtems_task_ident directive. - * This directive returns the task ID associated with name. - * If more than one task is named name, then the task to - * which the ID belongs is arbitrary. node indicates the - * extent of the search for the ID of the task named name. - * The search can be limited to a particular node or allowed to - * encompass all nodes. + * This routine implements the rtems_task_ident directive. + * This directive returns the task ID associated with name. + * If more than one task is named name, then the task to + * which the ID belongs is arbitrary. node indicates the + * extent of the search for the ID of the task named name. + * The search can be limited to a particular node or allowed to + * encompass all nodes. * - * @param[in] name is the user defined thread name - * @param[in] node is(are) the node(s) to be searched - * @param[in] id is the pointer to thread id + * @param[in] name is the user defined thread name + * @param[in] node is(are) the node(s) to be searched + * @param[in] id is the pointer to thread id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. If successful, the id will - * be filled in with the thread id. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. If successful, the id will + * be filled in with the thread id. */ rtems_status_code rtems_task_ident( rtems_name name, @@ -304,35 +309,35 @@ rtems_status_code rtems_task_ident( ); /** - * @brief RTEMS Delete Task + * @brief RTEMS Delete Task * - * This routine implements the rtems_task_delete directive. The - * task indicated by ID is deleted. The executive halts execution - * of the thread and frees the thread control block. + * This routine implements the rtems_task_delete directive. The + * task indicated by ID is deleted. The executive halts execution + * of the thread and frees the thread control block. * - * @param[in] id is the thread id + * @param[in] id is the thread id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error and id is not the requesting thread. Status code is - * returned indicating the source of the error. Nothing - * is returned if id is the requesting thread (always succeeds). + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error and id is not the requesting thread. Status code is + * returned indicating the source of the error. Nothing + * is returned if id is the requesting thread (always succeeds). */ rtems_status_code rtems_task_delete( rtems_id id ); /** - * @brief RTEMS Get Task Node + * @brief RTEMS Get Task Node * - * This routine implements the rtems_task_get_note directive. The - * value of the indicated notepad for the task associated with ID - * is returned in note. + * This routine implements the rtems_task_get_note directive. The + * value of the indicated notepad for the task associated with ID + * is returned in note. * - * @param[in] id is the thread id - * @param[in] notepad is the notepad number - * @param[out] note is the pointer to note + * @param[in] id is the thread id + * @param[in] notepad is the notepad number + * @param[out] note is the pointer to note * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_task_get_note( rtems_id id, @@ -341,19 +346,19 @@ rtems_status_code rtems_task_get_note( ); /** - * @brief RTEMS Set Task Note + * @brief RTEMS Set Task Note * - * This routine implements the rtems_task_set_note directive. The - * value of the indicated notepad for the task associated with ID - * is returned in note. + * This routine implements the rtems_task_set_note directive. The + * value of the indicated notepad for the task associated with ID + * is returned in note. * - * @param[in] id is the thread id - * @param[in] notepad is the notepad number - * @param[in] note is the note value + * @param[in] id is the thread id + * @param[in] notepad is the notepad number + * @param[in] note is the note value * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @return This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_task_set_note( rtems_id id, @@ -362,19 +367,19 @@ rtems_status_code rtems_task_set_note( ); /** - * @brief RTEMS Task Mode + * @brief RTEMS Task Mode * - * This routine implements the rtems_task_mode directive. The current - * values of the modes indicated by mask of the calling task are changed - * to that indicated in mode_set. The former mode of the task is - * returned in mode_set. + * This routine implements the rtems_task_mode directive. The current + * values of the modes indicated by mask of the calling task are changed + * to that indicated in mode_set. The former mode of the task is + * returned in mode_set. * - * @param[in] mode_set is the new mode - * @param[in] mask is the mask - * @param[in] previous_mode_set is the address of previous mode set + * @param[in] mode_set is the new mode + * @param[in] mask is the mask + * @param[in] previous_mode_set is the address of previous mode set * - * @return RTEMS_SUCCESSFUL and previous_mode_set filled in with the - * previous mode set + * @retval RTEMS_SUCCESSFUL and previous_mode_set filled in with the + * previous mode set */ rtems_status_code rtems_task_mode( rtems_mode mode_set, @@ -383,16 +388,16 @@ rtems_status_code rtems_task_mode( ); /** - * @brief RTEMS Task Restart + * @brief RTEMS Task Restart * - * This routine implements the rtems_task_restart directive. The - * task associated with ID is restarted at its initial entry - * point with the new argument. + * This routine implements the rtems_task_restart directive. The + * task associated with ID is restarted at its initial entry + * point with the new argument. * - * @param[in] id is the thread id - * @param[in] arg is the thread argument + * @param[in] id is the thread id + * @param[in] arg is the thread argument * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_task_restart( rtems_id id, @@ -400,52 +405,52 @@ rtems_status_code rtems_task_restart( ); /** - * @brief RTEMS Suspend Task + * @brief RTEMS Suspend Task * - * This routine implements the rtems_task_suspend directive. The - * SUSPENDED state is set for task associated with ID. Note that the - * suspended state can be in addition to other waiting states. + * This routine implements the rtems_task_suspend directive. The + * SUSPENDED state is set for task associated with ID. Note that the + * suspended state can be in addition to other waiting states. * - * @param[in] id is the thread id + * @param[in] id is the thread id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_task_suspend( rtems_id id ); /** - * @brief RTEMS Resume Task + * @brief RTEMS Resume Task * - * This routine implements the rtems_task_resume Directive. The - * SUSPENDED state is cleared for task associated with ID. + * This routine implements the rtems_task_resume Directive. The + * SUSPENDED state is cleared for task associated with ID. * - * @param[in] id is the thread id + * @param[in] id is the thread id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_task_resume( rtems_id id ); /** - * @brief RTEMS Set Task Priority + * @brief RTEMS Set Task Priority * - * This routine implements the rtems_task_set_priority directive. The - * current priority of the task associated with ID is set to - * new_priority. The former priority of that task is returned - * in old_priority. + * This routine implements the rtems_task_set_priority directive. The + * current priority of the task associated with ID is set to + * new_priority. The former priority of that task is returned + * in old_priority. * - * @param[in] id is the thread to extract - * @param[in] new_priority is the thread to extract - * @param[in] old_priority is the thread to extract + * @param[in] id is the thread to extract + * @param[in] new_priority is the thread to extract + * @param[in] old_priority is the thread to extract * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * and *old_priority filled in with the previous previous priority + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and + * and *old_priority filled in with the previous previous priority */ rtems_status_code rtems_task_set_priority( rtems_id id, @@ -469,29 +474,29 @@ rtems_status_code rtems_task_start( ); /** - * @brief RTEMS Task Wake When + * @brief RTEMS Task Wake When * - * This routine implements the rtems_task_wake_when directive. The - * calling task is blocked until the current time of day is - * equal to that indicated by time_buffer. + * This routine implements the rtems_task_wake_when directive. The + * calling task is blocked until the current time of day is + * equal to that indicated by time_buffer. * - * @param[in] time_buffer is the pointer to the time and date structure + * @param[in] time_buffer is the pointer to the time and date structure * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_task_wake_when( rtems_time_of_day *time_buffer ); /** - * @brief RTEMS Task Wake After + * @brief RTEMS Task Wake After * - * This routine implements the rtems_task_wake_after directive. The - * calling task is blocked until the indicated number of clock - * ticks have occurred. + * This routine implements the rtems_task_wake_after directive. The + * calling task is blocked until the indicated number of clock + * ticks have occurred. * - * @param[in] ticks is the number of ticks to wait - * @return RTEMS_SUCCESSFUL + * @param[in] ticks is the number of ticks to wait + * @retval RTEMS_SUCCESSFUL */ rtems_status_code rtems_task_wake_after( rtems_interval ticks diff --git a/cpukit/rtems/include/rtems/rtems/timer.h b/cpukit/rtems/include/rtems/rtems/timer.h index 29c9f092ec..f27f958d9a 100644 --- a/cpukit/rtems/include/rtems/rtems/timer.h +++ b/cpukit/rtems/include/rtems/rtems/timer.h @@ -1,38 +1,41 @@ /** * @file rtems/rtems/timer.h * - * @brief Constants, Structures, and Prototypes Associated with the Timer Manager - * - * This include file contains all the constants, structures, and - * prototypes associated with the Timer Manager. This manager provides - * facilities to configure, initiate, cancel, and delete timers which will - * fire at specified intervals of time. - * - * Directives provided are: - * - * - create a timer - * - get an ID of a timer - * - delete a timer - * - set timer to fire in context of clock tick - * - after a number of ticks have passed - * - when a specified date and time has been reached - * - initiate the timer server task - * - set timer to fire in context of the timer server task - * - after a number of ticks have passed - * - when a specified date and time has been reached - * - reset a timer - * - cancel a time + * @defgroup ClassicTimer Timers + * + * @ingroup ClassicRTEMS + * @brief Instantiate RTEMS Timer Data + * + * This include file contains all the constants, structures, and + * prototypes associated with the Timer Manager. This manager provides + * facilities to configure, initiate, cancel, and delete timers which will + * fire at specified intervals of time. + * + * Directives provided are: + * + * - create a timer + * - get an ID of a timer + * - delete a timer + * - set timer to fire in context of clock tick + * - after a number of ticks have passed + * - when a specified date and time has been reached + * - initiate the timer server task + * - set timer to fire in context of the timer server task + * - after a number of ticks have passed + * - when a specified date and time has been reached + * - reset a timer + * - cancel a time */ /* - * COPYRIGHT (c) 1989-2011. - * On-Line Applications Research Corporation (OAR). + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). * - * Copyright (c) 2009 embedded brains GmbH. + * Copyright (c) 2009 embedded brains GmbH. * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_TIMER_H @@ -231,16 +234,16 @@ RTEMS_TIMER_EXTERN Objects_Information _Timer_Information; void _Timer_Manager_initialization(void); /** - * @brief RTEMS Create Timer + * @brief RTEMS Create Timer * - * This routine implements the rtems_timer_create directive. The - * timer will have the name name. It returns the id of the - * created timer in ID. + * This routine implements the rtems_timer_create directive. The + * timer will have the name name. It returns the id of the + * created timer in ID. * - * @param[in] name is the timer name - * @param[out] id is the pointer to timer id + * @param[in] name is the timer name + * @param[out] id is the pointer to timer id * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful */ rtems_status_code rtems_timer_create( rtems_name name, @@ -248,18 +251,18 @@ rtems_status_code rtems_timer_create( ); /** - * @brief RTEMS Timer Name to Id + * @brief RTEMS Timer Name to Id * - * This routine implements the rtems_timer_ident directive. - * This directive returns the timer ID associated with name. - * If more than one timer is named name, then the timer - * to which the ID belongs is arbitrary. + * This routine implements the rtems_timer_ident directive. + * This directive returns the timer ID associated with name. + * If more than one timer is named name, then the timer + * to which the ID belongs is arbitrary. * - * @param[in] name is the user defined message queue name - * @param[in] id is the pointer to timer id + * @param[in] name is the user defined message queue name + * @param[in] id is the pointer to timer id * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * id filled with the message queue id + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and + * id filled with the message queue id */ rtems_status_code rtems_timer_ident( rtems_name name, @@ -277,38 +280,38 @@ rtems_status_code rtems_timer_cancel( ); /** - * @brief RTEMS Delete Timer + * @brief RTEMS Delete Timer * - * This routine implements the rtems_timer_delete directive. The - * timer indicated by ID is deleted. + * This routine implements the rtems_timer_delete directive. The + * timer indicated by ID is deleted. * - * @param[in] id is the timer id + * @param[in] id is the timer id * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_timer_delete( rtems_id id ); /** - * @brief RTEMS Timer Fire After - * - * This routine implements the rtems_timer_fire_after directive. It - * initiates the timer associated with ID to fire in ticks clock ticks. - * When the timer fires, the routine will be invoked in the context - * of the rtems_clock_tick directive which is normally invoked as - * part of servicing a periodic interupt. - * - * @param[in] id is the timer id - * @param[in] ticks is the interval until routine is fired - * @param[in] routine is the routine to schedule - * @param[in] user_data is the passed as argument to routine when it is fired - * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @brief RTEMS Timer Fire After + * + * This routine implements the rtems_timer_fire_after directive. It + * initiates the timer associated with ID to fire in ticks clock ticks. + * When the timer fires, the routine will be invoked in the context + * of the rtems_clock_tick directive which is normally invoked as + * part of servicing a periodic interupt. + * + * @param[in] id is the timer id + * @param[in] ticks is the interval until routine is fired + * @param[in] routine is the routine to schedule + * @param[in] user_data is the passed as argument to routine when it is fired + * + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_timer_fire_after( rtems_id id, @@ -318,22 +321,22 @@ rtems_status_code rtems_timer_fire_after( ); /** - * @brief RTEMS Timer Server Fire After - * - * This routine implements the rtems_timer_server_fire_after directive. It - * initiates the timer associated with ID to fire in ticks clock - * ticks. When the timer fires, the routine will be invoked by the - * Timer Server in the context of a task NOT IN THE CONTEXT of the - * clock tick interrupt. - * - * @param[in] id is the timer id - * @param[in] ticks is the interval until routine is fired - * @param[in] routine is the routine to schedule - * @param[in] user_data is the passed as argument to routine when it is fired - * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @brief RTEMS Timer Server Fire After + * + * This routine implements the rtems_timer_server_fire_after directive. It + * initiates the timer associated with ID to fire in ticks clock + * ticks. When the timer fires, the routine will be invoked by the + * Timer Server in the context of a task NOT IN THE CONTEXT of the + * clock tick interrupt. + * + * @param[in] id is the timer id + * @param[in] ticks is the interval until routine is fired + * @param[in] routine is the routine to schedule + * @param[in] user_data is the passed as argument to routine when it is fired + * + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_timer_server_fire_after( rtems_id id, @@ -343,22 +346,22 @@ rtems_status_code rtems_timer_server_fire_after( ); /** - * @brief RTEMS Timer Fire When - * - * This routine implements the rtems_timer_fire_when directive. It - * initiates the timer associated with ID to fire at wall_time - * When the timer fires, the routine will be invoked in the context - * of the rtems_clock_tick directive which is normally invoked as - * part of servicing a periodic interupt. - * - * @param[in] id is the timer id - * @param[in] wall_time is the time of day to fire timer - * @param[in] routine is the routine to schedule - * @param[in] user_data is the passed as argument to routine when it is fired - * - * @return This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @brief RTEMS Timer Fire When + * + * This routine implements the rtems_timer_fire_when directive. It + * initiates the timer associated with ID to fire at wall_time + * When the timer fires, the routine will be invoked in the context + * of the rtems_clock_tick directive which is normally invoked as + * part of servicing a periodic interupt. + * + * @param[in] id is the timer id + * @param[in] wall_time is the time of day to fire timer + * @param[in] routine is the routine to schedule + * @param[in] user_data is the passed as argument to routine when it is fired + * + * @retval This method returns RTEMS_SUCCESSFUL if there was not an + * error. Otherwise, a status code is returned indicating the + * source of the error. */ rtems_status_code rtems_timer_fire_when( rtems_id id, @@ -435,16 +438,16 @@ typedef struct { } rtems_timer_information; /** - * @brief RTEMS Get Timer Information + * @brief RTEMS Get Timer Information * - * This routine implements the rtems_timer_get_information directive. - * This directive returns information about the timer. + * This routine implements the rtems_timer_get_information directive. + * This directive returns information about the timer. * - * @param[in] id is the timer id - * @param[in] the_info is the pointer to timer information block + * @param[in] id is the timer id + * @param[in] the_info is the pointer to timer information block * - * @return RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * *the_info region information block filled in + * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and + * *the_info region information block filled in */ rtems_status_code rtems_timer_get_information( rtems_id id, diff --git a/cpukit/rtems/include/rtems/rtems/types.h b/cpukit/rtems/include/rtems/rtems/types.h index 52afa2611a..f9861aab8e 100644 --- a/cpukit/rtems/include/rtems/rtems/types.h +++ b/cpukit/rtems/include/rtems/rtems/types.h @@ -1,17 +1,18 @@ /** * @file * - * @ingroup ClassicRTEMS + * @defgroup ClassicTypes Types * - * @brief Types used by the Classic API. + * @ingroup ClassicRTEMS + * @brief Types used by Classic API. */ -/* COPYRIGHT (c) 1989-2009. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2009. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_TYPES_H @@ -39,9 +40,8 @@ extern "C" { /** * @addtogroup ClassicRTEMS - * - * @{ */ +/**@{**/ #ifdef RTEMS_DEPRECATED_TYPES /** diff --git a/cpukit/rtems/inline/rtems/rtems/asr.inl b/cpukit/rtems/inline/rtems/rtems/asr.inl index 3aabaaae5b..9f42120018 100644 --- a/cpukit/rtems/inline/rtems/rtems/asr.inl +++ b/cpukit/rtems/inline/rtems/rtems/asr.inl @@ -1,16 +1,21 @@ /** * @file rtems/rtems/asr.inl * - * This include file contains the implemenation of all routines - * associated with the asynchronous signal handler which are inlined. + * @defgroup ClassicASR ASR Support + * + * @ingroup ClassicRTEMS + * @brief Asynchronous Signal Handler + * + * This include file contains the implemenation of all routines + * associated with the asynchronous signal handler which are inlined. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_ASR_H diff --git a/cpukit/rtems/inline/rtems/rtems/attr.inl b/cpukit/rtems/inline/rtems/rtems/attr.inl index 75d62ad601..126259a067 100644 --- a/cpukit/rtems/inline/rtems/rtems/attr.inl +++ b/cpukit/rtems/inline/rtems/rtems/attr.inl @@ -29,7 +29,7 @@ */ /** - * @brief Attributes_Set + * @brief Sets the requested new_attributes in the attribute_set passed in. * * This function sets the requested new_attributes in the attribute_set * passed in. The result is returned to the user. @@ -43,7 +43,8 @@ RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Set ( } /** - * @brief Attributes_Clear + * @brief Clears the requested new_attributes in the attribute_set + * passed in. * * This function clears the requested new_attributes in the attribute_set * passed in. The result is returned to the user. @@ -57,7 +58,8 @@ RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Clear ( } /** - * @brief Attributes_Is_floating_point + * @brief Checks if the floating point attribute is + * enabled in the attribute_set. * * This function returns TRUE if the floating point attribute is * enabled in the attribute_set and FALSE otherwise. @@ -71,7 +73,8 @@ RTEMS_INLINE_ROUTINE bool _Attributes_Is_floating_point( #if defined(RTEMS_MULTIPROCESSING) /** - * @brief Attributes_Is_global + * @brief Checks if the global object attribute is enabled in + * the attribute_set. * * This function returns TRUE if the global object attribute is * enabled in the attribute_set and FALSE otherwise. @@ -85,7 +88,7 @@ RTEMS_INLINE_ROUTINE bool _Attributes_Is_global( #endif /** - * @brief Attributes_Is_priority + * @brief Checks if the priority attribute is enabled in the attribute_set. * * This function returns TRUE if the priority attribute is * enabled in the attribute_set and FALSE otherwise. @@ -98,7 +101,8 @@ RTEMS_INLINE_ROUTINE bool _Attributes_Is_priority( } /** - * @brief Attributes_Is_binary_semaphore + * @brief Checks if the binary semaphore attribute is + * enabled in the attribute_set. * * This function returns TRUE if the binary semaphore attribute is * enabled in the attribute_set and FALSE otherwise. @@ -111,21 +115,23 @@ RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore( } /** - * @brief Attributes_Is_simple_binary_semaphore + * @brief Checks if the simple binary semaphore attribute is + * enabled in the attribute_set * * This function returns TRUE if the simple binary semaphore attribute is * enabled in the attribute_set and FALSE otherwise. */ RTEMS_INLINE_ROUTINE bool _Attributes_Is_simple_binary_semaphore( rtems_attribute attribute_set -) +) { return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_SIMPLE_BINARY_SEMAPHORE); -} +} /** - * @brief Attributes_Is_counting_semaphore + * @brief Checks if the counting semaphore attribute is + * enabled in the attribute_set * * This function returns TRUE if the counting semaphore attribute is * enabled in the attribute_set and FALSE otherwise. @@ -138,7 +144,8 @@ RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore( } /** - * @brief Attributes_Is_inherit_priority + * @brief Checks if the priority inheritance attribute + * is enabled in the attribute_set * * This function returns TRUE if the priority inheritance attribute * is enabled in the attribute_set and FALSE otherwise. @@ -151,7 +158,8 @@ RTEMS_INLINE_ROUTINE bool _Attributes_Is_inherit_priority( } /** - * @brief Attributes_Is_priority_ceiling + * @brief Checks if the priority ceiling attribute + * is enabled in the attribute_set * * This function returns TRUE if the priority ceiling attribute * is enabled in the attribute_set and FALSE otherwise. @@ -164,7 +172,8 @@ RTEMS_INLINE_ROUTINE bool _Attributes_Is_priority_ceiling( } /** - * @brief Attributes_Is_barrier_automatic + * @brief Checks if the barrier automatic release + * attribute is enabled in the attribute_set * * This function returns TRUE if the barrier automatic release * attribute is enabled in the attribute_set and FALSE otherwise. @@ -177,7 +186,8 @@ RTEMS_INLINE_ROUTINE bool _Attributes_Is_barrier_automatic( } /** - * @brief Attributes_Is_system_task + * @brief Checks if the system task attribute + * is enabled in the attribute_set. * * This function returns TRUE if the system task attribute * is enabled in the attribute_set and FALSE otherwise. diff --git a/cpukit/rtems/inline/rtems/rtems/barrier.inl b/cpukit/rtems/inline/rtems/rtems/barrier.inl index 08508b9665..0d0ee4cf88 100644 --- a/cpukit/rtems/inline/rtems/rtems/barrier.inl +++ b/cpukit/rtems/inline/rtems/rtems/barrier.inl @@ -1,17 +1,22 @@ /** * @file rtems/rtems/barrier.inl * + * @defgroup ClassicBarrier Barriers + * + * @ingroup ClassicRTEMS + * @brief Inline Implementation from Barrier Manager + * * This file contains the static inlin implementation of the inlined * routines from the Barrier Manager. */ /* - * COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). + * COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_BARRIER_H diff --git a/cpukit/rtems/inline/rtems/rtems/dpmem.inl b/cpukit/rtems/inline/rtems/rtems/dpmem.inl index c445603a9d..19a4addbca 100644 --- a/cpukit/rtems/inline/rtems/rtems/dpmem.inl +++ b/cpukit/rtems/inline/rtems/rtems/dpmem.inl @@ -26,7 +26,8 @@ */ /** - * @brief Dual_ported_memory_Allocate + * @brief Allocates a port control block from the inactive chain + * of free port control blocks. * * This routine allocates a port control block from the inactive chain * of free port control blocks. @@ -39,7 +40,8 @@ RTEMS_INLINE_ROUTINE Dual_ported_memory_Control } /** - * @brief Dual_ported_memory_Free + * @brief Frees a port control block to the inactive chain + * of free port control blocks. * * This routine frees a port control block to the inactive chain * of free port control blocks. @@ -52,7 +54,7 @@ RTEMS_INLINE_ROUTINE void _Dual_ported_memory_Free ( } /** - * @brief Dual_ported_memory_Get + * @brief Maps port IDs to port control blocks. * * This function maps port IDs to port control blocks. If ID * corresponds to a local port, then it returns the_port control @@ -71,7 +73,7 @@ RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Get ( } /** - * @brief Dual_ported_memory_Is_null + * @brief Checks if the_port is NULL. * * This function returns true if the_port is NULL and false otherwise. */ diff --git a/cpukit/rtems/inline/rtems/rtems/eventset.inl b/cpukit/rtems/inline/rtems/rtems/eventset.inl index 22919eaff5..ee9447caa2 100644 --- a/cpukit/rtems/inline/rtems/rtems/eventset.inl +++ b/cpukit/rtems/inline/rtems/rtems/eventset.inl @@ -27,7 +27,7 @@ */ /** - * @brief Event_sets_Is_empty + * @brief Checks if on events are posted in the event_set. * * This function returns TRUE if on events are posted in the event_set, * and FALSE otherwise. @@ -40,7 +40,7 @@ RTEMS_INLINE_ROUTINE bool _Event_sets_Is_empty( } /** - * @brief Event_sets_Post + * @brief Posts the given new_events into the event_set passed in. * * This routine posts the given new_events into the event_set * passed in. The result is returned to the user in event_set. @@ -54,7 +54,7 @@ RTEMS_INLINE_ROUTINE void _Event_sets_Post( } /** - * @brief Event_sets_Get + * @brief Returns the events in event_condition that are set in event_set. * * This function returns the events in event_condition which are * set in event_set. @@ -68,7 +68,7 @@ RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get( } /** - * @brief Event_sets_Clear + * @brief Removes the events in mask from the event_set passed in. * * This function removes the events in mask from the event_set * passed in. The result is returned to the user in event_set. diff --git a/cpukit/rtems/inline/rtems/rtems/message.inl b/cpukit/rtems/inline/rtems/rtems/message.inl index 06a596ecc7..16c15c75a9 100644 --- a/cpukit/rtems/inline/rtems/rtems/message.inl +++ b/cpukit/rtems/inline/rtems/rtems/message.inl @@ -28,7 +28,7 @@ */ /** - * @brief Message_queue_Is_null + * @brief Check whether message queue is null. * * This function places the_message at the rear of the outstanding * messages on the_message_queue. @@ -42,7 +42,8 @@ RTEMS_INLINE_ROUTINE bool _Message_queue_Is_null ( /** - * @brief Message_queue_Free + * @brief Deallocates a message queue control block into + * the inactive chain of free message queue control blocks. * * This routine deallocates a message queue control block into * the inactive chain of free message queue control blocks. @@ -55,7 +56,7 @@ RTEMS_INLINE_ROUTINE void _Message_queue_Free ( } /** - * @brief Message_queue_Get + * @brief Maps message queue IDs to message queue control blocks. * * This function maps message queue IDs to message queue control * blocks. If ID corresponds to a local message queue, then it diff --git a/cpukit/rtems/inline/rtems/rtems/modes.inl b/cpukit/rtems/inline/rtems/rtems/modes.inl index d1ad842c54..034032154e 100644 --- a/cpukit/rtems/inline/rtems/rtems/modes.inl +++ b/cpukit/rtems/inline/rtems/rtems/modes.inl @@ -26,7 +26,7 @@ */ /** - * @brief Modes_Mask_changed + * @brief Checks if any of the mode flags in mask are set in mode_set. * * This function returns TRUE if any of the mode flags in mask * are set in mode_set, and FALSE otherwise. @@ -40,7 +40,7 @@ RTEMS_INLINE_ROUTINE bool _Modes_Mask_changed ( } /** - * @brief Modes_Is_asr_disabled + * @brief Checks if mode_set says that Asynchronous Signal Processing is disabled. * * This function returns TRUE if mode_set indicates that Asynchronous * Signal Processing is disabled, and FALSE otherwise. @@ -53,7 +53,7 @@ RTEMS_INLINE_ROUTINE bool _Modes_Is_asr_disabled ( } /** - * @brief Modes_Is_preempt + * @brief Checks if mode_set indicates that preemption is enabled. * * This function returns TRUE if mode_set indicates that preemption * is enabled, and FALSE otherwise. @@ -66,7 +66,7 @@ RTEMS_INLINE_ROUTINE bool _Modes_Is_preempt ( } /** - * @brief Modes_Is_timeslice + * @brief Checks if mode_set indicates that timeslicing is enabled. * * This function returns TRUE if mode_set indicates that timeslicing * is enabled, and FALSE otherwise. @@ -79,7 +79,7 @@ RTEMS_INLINE_ROUTINE bool _Modes_Is_timeslice ( } /** - * @brief Modes_Get_interrupt_level + * @brief Gets the interrupt level portion of the mode_set. * * This function returns the interrupt level portion of the mode_set. */ @@ -91,7 +91,7 @@ RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level ( } /** - * @brief Modes_Set_interrupt_level + * @brief Sets the current interrupt level to that specified in the mode_set. * * This routine sets the current interrupt level to that specified * in the mode_set. @@ -104,7 +104,8 @@ RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level ( } /** - * @brief Modes_Change + * @brief Changes the modes in old_mode_set indicated by + * mask to the requested values in new_mode_set. * * This routine changes the modes in old_mode_set indicated by * mask to the requested values in new_mode_set. The resulting diff --git a/cpukit/rtems/inline/rtems/rtems/options.inl b/cpukit/rtems/inline/rtems/rtems/options.inl index 4341b14599..c3c0a5bf9e 100644 --- a/cpukit/rtems/inline/rtems/rtems/options.inl +++ b/cpukit/rtems/inline/rtems/rtems/options.inl @@ -28,7 +28,7 @@ */ /** - * @brief Options_Is_no_wait + * @brief Checks if the RTEMS_NO_WAIT option is enabled in option_set. * * This function returns TRUE if the RTEMS_NO_WAIT option is enabled in * option_set, and FALSE otherwise. @@ -41,7 +41,7 @@ RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait ( } /** - * @brief Options_Is_any + * @brief Checks if the RTEMS_EVENT_ANY option is enabled in OPTION_SET. * * This function returns TRUE if the RTEMS_EVENT_ANY option is enabled in * OPTION_SET, and FALSE otherwise. diff --git a/cpukit/rtems/inline/rtems/rtems/part.inl b/cpukit/rtems/inline/rtems/rtems/part.inl index 6f921a900e..355ed49377 100644 --- a/cpukit/rtems/inline/rtems/rtems/part.inl +++ b/cpukit/rtems/inline/rtems/rtems/part.inl @@ -26,7 +26,7 @@ */ /** - * @brief Partition_Allocate_buffer + * @brief Allocate a buffer from the_partition. * * This function attempts to allocate a buffer from the_partition. * If successful, it returns the address of the allocated buffer. @@ -40,7 +40,7 @@ RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer ( } /** - * @brief Partition_Free_buffer + * @brief Frees the_buffer to the_partition. * * This routine frees the_buffer to the_partition. */ @@ -53,7 +53,7 @@ RTEMS_INLINE_ROUTINE void _Partition_Free_buffer ( } /** - * @brief Partition_Is_buffer_on_boundary + * @brief Checks whether is on a valid buffer boundary for the_partition. * * This function returns TRUE if the_buffer is on a valid buffer * boundary for the_partition, and FALSE otherwise. @@ -74,7 +74,7 @@ RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_on_boundary ( } /** - * @brief Partition_Is_buffer_valid + * @brief Checks whether the_buffer is a valid buffer from the_partition. * * This function returns TRUE if the_buffer is a valid buffer from * the_partition, otherwise FALSE is returned. @@ -97,7 +97,7 @@ RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_valid ( } /** - * @brief Partition_Is_buffer_size_aligned + * @brief Checks if partition is buffer size aligned. * * This function returns TRUE if the use of the specified buffer_size * will result in the allocation of buffers whose first byte is @@ -111,7 +111,8 @@ RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned ( } /** - * @brief Partition_Allocate + * @brief Allocates a partition control block from the + * inactive chain of free partition control blocks. * * This function allocates a partition control block from * the inactive chain of free partition control blocks. @@ -122,7 +123,8 @@ RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void ) } /** - * @brief Partition_Free + * @brief Frees a partition control block to the + * inactive chain of free partition control blocks. * * This routine frees a partition control block to the * inactive chain of free partition control blocks. @@ -135,7 +137,7 @@ RTEMS_INLINE_ROUTINE void _Partition_Free ( } /** - * @brief Partition_Get + * @brief Maps partition IDs to partition control blocks. * * This function maps partition IDs to partition control blocks. * If ID corresponds to a local partition, then it returns @@ -155,7 +157,7 @@ RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get ( } /** - * @brief Partition_Is_null + * @brief Checks if the_partition is NULL. * * This function returns TRUE if the_partition is NULL * and FALSE otherwise. diff --git a/cpukit/rtems/inline/rtems/rtems/ratemon.inl b/cpukit/rtems/inline/rtems/rtems/ratemon.inl index 6c40998809..30b0361451 100644 --- a/cpukit/rtems/inline/rtems/rtems/ratemon.inl +++ b/cpukit/rtems/inline/rtems/rtems/ratemon.inl @@ -26,7 +26,8 @@ */ /** - * @brief Rate_monotonic_Allocate + * @brief Allocates a period control block from + * the inactive chain of free period control blocks. * * This function allocates a period control block from * the inactive chain of free period control blocks. @@ -38,7 +39,8 @@ RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Allocate( void ) } /** - * @brief Rate_monotonic_Free + * @brief Allocates a period control block from + * the inactive chain of free period control blocks. * * This routine allocates a period control block from * the inactive chain of free period control blocks. @@ -51,7 +53,7 @@ RTEMS_INLINE_ROUTINE void _Rate_monotonic_Free ( } /** - * @brief Rate_monotonic_Get + * @brief Maps period IDs to period control blocks. * * This function maps period IDs to period control blocks. * If ID corresponds to a local period, then it returns @@ -69,7 +71,7 @@ RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get ( } /** - * @brief Rate_monotonic_Is_active + * @brief Checks if the_period is in the ACTIVE state. * * This function returns TRUE if the_period is in the ACTIVE state, * and FALSE otherwise. @@ -82,7 +84,7 @@ RTEMS_INLINE_ROUTINE bool _Rate_monotonic_Is_active ( } /** - * @brief Rate_monotonic_Is_inactive + * @brief Checks if the_period is in the ACTIVE state. * * This function returns TRUE if the_period is in the ACTIVE state, * and FALSE otherwise. @@ -95,7 +97,7 @@ RTEMS_INLINE_ROUTINE bool _Rate_monotonic_Is_inactive ( } /** - * @brief Rate_monotonic_Is_expired + * @brief Checks if the_period is in the EXPIRED state. * * This function returns TRUE if the_period is in the EXPIRED state, * and FALSE otherwise. @@ -108,7 +110,7 @@ RTEMS_INLINE_ROUTINE bool _Rate_monotonic_Is_expired ( } /** - * @brief Rate_monotonic_Is_null + * @brief Checks if the_period is NULL. * * This function returns TRUE if the_period is NULL and FALSE otherwise. */ diff --git a/cpukit/rtems/inline/rtems/rtems/region.inl b/cpukit/rtems/inline/rtems/rtems/region.inl index 3319630dc9..30e482cdc0 100644 --- a/cpukit/rtems/inline/rtems/rtems/region.inl +++ b/cpukit/rtems/inline/rtems/rtems/region.inl @@ -1,16 +1,21 @@ /** * @file rtems/rtems/region.inl * - * This file contains the macro implementation of the inlined - * routines from the Region Manager. + * @addtogroup ClassicRegion + * + * @ingroup ClassicRTEMS + * @brief Macro Implementation from Region Manager + * + * This file contains the macro implementation of the inlined + * routines from the Region Manager. */ -/* COPYRIGHT (c) 1989-2008. - * On-Line Applications Research Corporation (OAR). +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_REGION_H diff --git a/cpukit/rtems/inline/rtems/rtems/sem.inl b/cpukit/rtems/inline/rtems/rtems/sem.inl index 7b6d0d928f..22699e67ba 100644 --- a/cpukit/rtems/inline/rtems/rtems/sem.inl +++ b/cpukit/rtems/inline/rtems/rtems/sem.inl @@ -26,7 +26,8 @@ */ /** - * @brief Semaphore_Allocate + * @brief Allocates a semaphore control block from + * the inactive chain of free semaphore control blocks. * * This function allocates a semaphore control block from * the inactive chain of free semaphore control blocks. @@ -37,7 +38,8 @@ RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Allocate( void ) } /** - * @brief Semaphore_Free + * @brief Frees a semaphore control block to the + * inactive chain of free semaphore control blocks. * * This routine frees a semaphore control block to the * inactive chain of free semaphore control blocks. @@ -50,7 +52,7 @@ RTEMS_INLINE_ROUTINE void _Semaphore_Free ( } /** - * @brief Semaphore_Get + * @brief Maps semaphore IDs to semaphore control blocks. * * This function maps semaphore IDs to semaphore control blocks. * If ID corresponds to a local semaphore, then it returns @@ -70,7 +72,7 @@ RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get ( } /** - * @brief Semaphore_Get (Interrupts disabled) + * @brief Maps semaphore IDs to semaphore control blocks. * * This function maps semaphore IDs to semaphore control blocks. * If ID corresponds to a local semaphore, then it returns @@ -91,7 +93,7 @@ RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get_interrupt_disable ( } /** - * @brief Semaphore_Is_null + * @brief Checks if the_semaphore is NULL. * * This function returns TRUE if the_semaphore is NULL and FALSE otherwise. */ diff --git a/cpukit/rtems/inline/rtems/rtems/status.inl b/cpukit/rtems/inline/rtems/rtems/status.inl index 1ad22fdfa7..caeb03da88 100644 --- a/cpukit/rtems/inline/rtems/rtems/status.inl +++ b/cpukit/rtems/inline/rtems/rtems/status.inl @@ -28,7 +28,7 @@ */ /** - * @brief rtems_is_status_successful + * @brief Checks if the status code is equal to RTEMS_SUCCESSFUL. * * This function returns TRUE if the status code is equal to RTEMS_SUCCESSFUL, * and FALSE otherwise. @@ -41,7 +41,7 @@ RTEMS_INLINE_ROUTINE bool rtems_is_status_successful( } /** - * @brief rtems_are_statuses_equal + * @brief Checks if the status code1 is equal to code2. * * This function returns TRUE if the status code1 is equal to code2, * and FALSE otherwise. diff --git a/cpukit/rtems/inline/rtems/rtems/support.inl b/cpukit/rtems/inline/rtems/rtems/support.inl index 117f9a9f0f..a302c45c0b 100644 --- a/cpukit/rtems/inline/rtems/rtems/support.inl +++ b/cpukit/rtems/inline/rtems/rtems/support.inl @@ -23,9 +23,8 @@ /** * @addtogroup ClassicRTEMS - * - * @{ */ +/**@{**/ /** * @brief Returns @c true if the name is valid, and @c false otherwise. diff --git a/cpukit/rtems/inline/rtems/rtems/tasks.inl b/cpukit/rtems/inline/rtems/rtems/tasks.inl index 193b0ad79c..3bf82121d7 100644 --- a/cpukit/rtems/inline/rtems/rtems/tasks.inl +++ b/cpukit/rtems/inline/rtems/rtems/tasks.inl @@ -26,7 +26,7 @@ */ /** - * @brief RTEMS_tasks_Allocate + * @brief Allocates a task control block. * * This function allocates a task control block from * the inactive chain of free task control blocks. @@ -37,7 +37,7 @@ RTEMS_INLINE_ROUTINE Thread_Control *_RTEMS_tasks_Allocate( void ) } /** - * @brief RTEMS_tasks_Free + * @brief Frees a task control block. * * This routine frees a task control block to the * inactive chain of free task control blocks. @@ -46,14 +46,14 @@ RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free ( Thread_Control *the_task ) { - _Objects_Free( + _Objects_Free( _Objects_Get_information_id( the_task->Object.id ), &the_task->Object ); } /** - * @brief RTEMS_tasks_Priority_to_Core + * @brief Converts an RTEMS API priority into a core priority. * * This function converts an RTEMS API priority into a core priority. */ @@ -65,7 +65,7 @@ RTEMS_INLINE_ROUTINE Priority_Control _RTEMS_tasks_Priority_to_Core( } /** - * @brief RTEMS_tasks_Priority_is_valid + * @brief Checks whether the priority is a valid user task. * * This function returns TRUE if the_priority is a valid user task priority * and FALSE otherwise. diff --git a/cpukit/rtems/inline/rtems/rtems/timer.inl b/cpukit/rtems/inline/rtems/rtems/timer.inl index 73f5221a86..f4067ae09a 100644 --- a/cpukit/rtems/inline/rtems/rtems/timer.inl +++ b/cpukit/rtems/inline/rtems/rtems/timer.inl @@ -1,17 +1,22 @@ /** * @file rtems/rtems/timer.inl * + * @defgroup ClassicTimer Timers + * + * @ingroup ClassicRTEMS + * @brief Inline Implementation from Timer Manager + * * This file contains the static inline implementation of the inlined routines * from the Timer Manager. */ /* - * COPYRIGHT (c) 1989-2011. - * On-Line Applications Research Corporation (OAR). + * COPYRIGHT (c) 1989-2011. + * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RTEMS_TIMER_H diff --git a/cpukit/rtems/mainpage.h b/cpukit/rtems/mainpage.h index 5aee1ccc46..b772b37892 100644 --- a/cpukit/rtems/mainpage.h +++ b/cpukit/rtems/mainpage.h @@ -391,11 +391,10 @@ * of RTEMS' concepts and features are interrelated. Experienced RTEMS users * will find that the manual organization facilitates its use as a reference * document. - * */ /** - * @addtogroup ClassicRTEMS + * @addtogroup ClassicAPI * * The facilities provided by RTEMS are built upon a foundation of very * powerful concepts. These concepts must be understood before the application diff --git a/cpukit/rtems/src/eventsurrender.c b/cpukit/rtems/src/eventsurrender.c index 05b8481a86..bfa29c425a 100644 --- a/cpukit/rtems/src/eventsurrender.c +++ b/cpukit/rtems/src/eventsurrender.c @@ -39,27 +39,28 @@ void _Event_Surrender( _ISR_Disable( level ); _Event_sets_Post( event_in, &event->pending_events ); pending_events = event->pending_events; - event_condition = the_thread->Wait.count; - - seized_events = _Event_sets_Get( pending_events, event_condition ); /* - * No events were seized in this operation + * At this point the event condition is a speculative quantity. Later state + * checks will show if the thread actually waits for an event. */ - if ( _Event_sets_Is_empty( seized_events ) ) { - _ISR_Enable( level ); - return; - } + event_condition = the_thread->Wait.count; - /* - * If we are in an ISR and sending to the current thread, then - * we have a critical section issue to deal with. - */ - if ( _ISR_Is_in_progress() && - _Thread_Is_executing( the_thread ) && - ((*sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) || - (*sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) { - if ( seized_events == event_condition || _Options_Is_any(option_set) ) { + seized_events = _Event_sets_Get( pending_events, event_condition ); + + if ( + !_Event_sets_Is_empty( seized_events ) + && ( seized_events == event_condition || _Options_Is_any( option_set ) ) + ) { + /* + * If we are sending to the executing thread, then we have a critical + * section issue to deal with. The entity sending to the executing thread + * can be either the executing thread or an ISR. In case it is the + * executing thread, then the blocking operation state is not equal to + * THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED. + */ + if ( _Thread_Is_executing( the_thread ) && + *sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) { event->pending_events = _Event_sets_Clear( pending_events, seized_events @@ -67,16 +68,7 @@ void _Event_Surrender( the_thread->Wait.count = 0; *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; *sync_state = THREAD_BLOCKING_OPERATION_SATISFIED; - } - _ISR_Enable( level ); - return; - } - - /* - * Otherwise, this is a normal send to another thread - */ - if ( _States_Are_set( the_thread->current_state, wait_state ) ) { - if ( seized_events == event_condition || _Options_Is_any( option_set ) ) { + } else if ( _States_Are_set( the_thread->current_state, wait_state ) ) { event->pending_events = _Event_sets_Clear( pending_events, seized_events diff --git a/cpukit/rtems/src/eventtimeout.c b/cpukit/rtems/src/eventtimeout.c index 58dee84b1b..31eb04311e 100644 --- a/cpukit/rtems/src/eventtimeout.c +++ b/cpukit/rtems/src/eventtimeout.c @@ -49,13 +49,18 @@ void _Event_Timeout( * a timeout is not allowed to occur. */ _ISR_Disable( level ); - #if defined(RTEMS_DEBUG) - if ( !the_thread->Wait.count ) { /* verify thread is waiting */ - _Thread_Unnest_dispatch(); - _ISR_Enable( level ); - return; - } - #endif + /* + * Verify that the thread is still waiting for the event condition. + * This test is necessary to avoid state corruption if the timeout + * happens after the event condition is satisfied in + * _Event_Surrender(). A satisfied event condition is indicated with + * count set to zero. + */ + if ( !the_thread->Wait.count ) { + _Thread_Unnest_dispatch(); + _ISR_Enable( level ); + return; + } the_thread->Wait.count = 0; if ( _Thread_Is_executing( the_thread ) ) { diff --git a/cpukit/rtems/src/msgqcreate.c b/cpukit/rtems/src/msgqcreate.c index e65dcacfe6..8a7abfa313 100644 --- a/cpukit/rtems/src/msgqcreate.c +++ b/cpukit/rtems/src/msgqcreate.c @@ -48,7 +48,6 @@ rtems_status_code rtems_message_queue_create( CORE_message_queue_Attributes the_msgq_attributes; #if defined(RTEMS_MULTIPROCESSING) bool is_global; - size_t max_packet_payload_size; #endif if ( !rtems_is_name_valid( name ) ) @@ -76,11 +75,14 @@ rtems_status_code rtems_message_queue_create( * It seems reasonable to create a que with a large max size, * and then just send smaller msgs from remote (or all) nodes. */ + if ( is_global ) { + size_t max_packet_payload_size = _MPCI_table->maximum_packet_size + - MESSAGE_QUEUE_MP_PACKET_SIZE; - max_packet_payload_size = _MPCI_table->maximum_packet_size - - MESSAGE_QUEUE_MP_PACKET_SIZE; - if ( is_global && max_packet_payload_size < max_message_size ) - return RTEMS_INVALID_SIZE; + if ( max_message_size > max_packet_payload_size ) { + return RTEMS_INVALID_SIZE; + } + } #endif #endif diff --git a/cpukit/sapi/Makefile.am b/cpukit/sapi/Makefile.am index 232028e63c..f9fd4f9696 100644 --- a/cpukit/sapi/Makefile.am +++ b/cpukit/sapi/Makefile.am @@ -38,7 +38,7 @@ libsapi_a_SOURCES = src/debug.c src/extension.c src/extensioncreate.c \ src/rtemsapi.c src/extensiondata.c src/getversionstring.c \ src/chainappendnotify.c src/chaingetnotify.c src/chaingetwait.c \ src/chainprependnotify.c src/rbheap.c src/interrdesc.c \ - src/fatal2.c + src/fatal2.c src/fatalsrcdesc.c libsapi_a_CPPFLAGS = $(AM_CPPFLAGS) include $(srcdir)/preinstall.am diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index 3939cf1e34..a5b7b7a4fe 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -1,28 +1,31 @@ /** - * @file rtems/confdefs.h + * @file * - * This include file contains the configuration table template that will - * be instantiated by an application based on the setting of a number - * of macros. The macros are documented in the Configuring a System - * chapter of the Classic API User's Guide + * @brief Configuration Table Template that will be Instantiated + * by an Application * - * The model is to estimate the memory required for each configured item - * and sum those estimates. The estimate can be too high or too low for - * a variety of reasons: + * This include file contains the configuration table template that will + * be instantiated by an application based on the setting of a number + * of macros. The macros are documented in the Configuring a System + * chapter of the Classic API User's Guide * - * Reasons estimate is too high: - * + FP contexts (not all tasks are FP) + * The model is to estimate the memory required for each configured item + * and sum those estimates. The estimate can be too high or too low for + * a variety of reasons: * - * Reasons estimate is too low: - * + stacks greater than minimum size - * + messages - * + application must account for device driver resources - * + application must account for add-on library resource requirements + * Reasons estimate is too high: + * + FP contexts (not all tasks are FP) * - * NOTE: Eventually this may be able to take into account some of - * the above. This procedure has evolved from just enough to - * support the RTEMS Test Suites into something that can be - * used remarkably reliably by most applications. + * Reasons estimate is too low: + * + stacks greater than minimum size + * + messages + * + application must account for device driver resources + * + application must account for add-on library resource requirements + * + * NOTE: Eventually this may be able to take into account some of + * the above. This procedure has evolved from just enough to + * support the RTEMS Test Suites into something that can be + * used remarkably reliably by most applications. */ /* @@ -58,8 +61,8 @@ extern rtems_driver_address_table Device_drivers[]; #endif /** - * This macro determines whether the RTEMS reentrancy support for - * the Newlib C Library is enabled. + * This macro determines whether the RTEMS reentrancy support for + * the Newlib C Library is enabled. */ #ifdef RTEMS_SCHEDSIM #undef RTEMS_NEWLIB @@ -107,62 +110,62 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This macro defines the number of POSIX file descriptors allocated - * and managed by libio. These are the "integer" file descriptors that - * are used by calls like open(2) and read(2). + * This macro defines the number of POSIX file descriptors allocated + * and managed by libio. These are the "integer" file descriptors that + * are used by calls like open(2) and read(2). */ #ifndef CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 3 #endif /** - * Semaphore count used by the IO library. + * Semaphore count used by the IO library. */ #define CONFIGURE_LIBIO_SEMAPHORES 1 #ifdef CONFIGURE_INIT /** - * When instantiating the configuration tables, this variable is - * initialized to specify the maximum number of file descriptors. + * When instantiating the configuration tables, this variable is + * initialized to specify the maximum number of file descriptors. */ uint32_t rtems_libio_number_iops = CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS; #endif /** - * This macro determines if termios is disabled by this application. - * This only means that resources will not be reserved. If you end - * up using termios, it will fail. + * This macro determines if termios is disabled by this application. + * This only means that resources will not be reserved. If you end + * up using termios, it will fail. */ #ifdef CONFIGURE_TERMIOS_DISABLED #define CONFIGURE_TERMIOS_SEMAPHORES 0 #else /** - * This macro specifies the number of serial or PTY ports that will - * use termios. + * This macro specifies the number of serial or PTY ports that will + * use termios. */ #ifndef CONFIGURE_NUMBER_OF_TERMIOS_PORTS #define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 1 #endif /** - * This macro reserves the number of semaphores required by termios - * based upon the number of communication ports that will use it. + * This macro reserves the number of semaphores required by termios + * based upon the number of communication ports that will use it. */ #define CONFIGURE_TERMIOS_SEMAPHORES \ ((CONFIGURE_NUMBER_OF_TERMIOS_PORTS * 4) + 1) #endif /** - * This macro specifies the number of PTYs that can be concurrently - * active. + * This macro specifies the number of PTYs that can be concurrently + * active. */ #ifndef CONFIGURE_MAXIMUM_PTYS #define CONFIGURE_MAXIMUM_PTYS 0 #endif /** - * This variable contains the maximum number of PTYs that can be - * concurrently active. + * This variable contains the maximum number of PTYs that can be + * concurrently active. */ #ifdef CONFIGURE_INIT int rtems_telnetd_maximum_ptys = CONFIGURE_MAXIMUM_PTYS; @@ -175,11 +178,11 @@ rtems_fs_init_functions_t rtems_fs_init_helper = * If configured for SMP, then we need to know the maximum CPU cores. */ #if !defined(CONFIGURE_SMP_APPLICATION) - #if !defined(CONFIGURE_SMP_MAXIMUM_PROCESSORS) + #if !defined(CONFIGURE_SMP_MAXIMUM_PROCESSORS) #define CONFIGURE_SMP_MAXIMUM_PROCESSORS 1 #endif #else - #if !defined(CONFIGURE_SMP_MAXIMUM_PROCESSORS) + #if !defined(CONFIGURE_SMP_MAXIMUM_PROCESSORS) #error "CONFIGURE_SMP_MAXIMUM_PROCESSORS not specified for SMP Application" #endif #endif @@ -259,7 +262,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #error "Configured filesystems but root filesystem was not IMFS!" #error "Filesystems could be disabled, DEVFS is root, or" #error " miniIMFS is root!" - #endif + #endif #endif /* @@ -285,10 +288,10 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #include <rtems/imfs.h> /** - * This specifies the number of bytes per block for files within the IMFS. - * There are a maximum number of blocks per file so this dictates the maximum - * size of a file. This has to be balanced with the unused portion of each - * block that might be wasted. + * This specifies the number of bytes per block for files within the IMFS. + * There are a maximum number of blocks per file so this dictates the maximum + * size of a file. This has to be balanced with the unused portion of each + * block that might be wasted. */ #ifndef CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK #define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK \ @@ -296,8 +299,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This defines the miniIMFS file system table entry. - */ + * This defines the miniIMFS file system table entry. + */ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_miniIMFS) && \ defined(CONFIGURE_FILESYSTEM_MINIIMFS) #define CONFIGURE_FILESYSTEM_ENTRY_miniIMFS \ @@ -306,7 +309,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * Internall it is called FIFOs not pipes + * Internall it is called FIFOs not pipes */ #if defined(CONFIGURE_PIPES_ENABLED) #define CONFIGURE_FIFOS_ENABLED @@ -314,8 +317,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifndef RTEMS_SCHEDSIM /** - * This defines the IMFS file system table entry. - */ + * This defines the IMFS file system table entry. + */ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS) && \ defined(CONFIGURE_FILESYSTEM_IMFS) #if defined(CONFIGURE_FIFOS_ENABLED) @@ -329,7 +332,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This sets up the resources for the PIPES/FIFOs + * This sets up the resources for the PIPES/FIFOs */ #if defined(CONFIGURE_FIFOS_ENABLED) #if !defined(CONFIGURE_MAXIMUM_FIFOS) && !defined(CONFIGURE_MAXIMUM_PIPES) @@ -352,7 +355,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = /** * DEVFS - */ + */ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS) && \ defined(CONFIGURE_FILESYSTEM_DEVFS) #include <rtems/devfs.h> @@ -363,9 +366,9 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifdef RTEMS_NETWORKING /** * FTPFS - */ + */ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS) && \ - defined(CONFIGURE_FILESYSTEM_FTPFS) + defined(CONFIGURE_FILESYSTEM_FTPFS) #include <rtems/ftpfs.h> #define CONFIGURE_FILESYSTEM_ENTRY_FTPFS \ { RTEMS_FILESYSTEM_TYPE_FTPFS, rtems_ftpfs_initialize } @@ -373,7 +376,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = /** * TFTPFS - */ + */ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS) && \ defined(CONFIGURE_FILESYSTEM_TFTPFS) #include <rtems/tftp.h> @@ -383,7 +386,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = /** * NFS - */ + */ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_NFS) && \ defined(CONFIGURE_FILESYSTEM_NFS) #include <librtemsNfs.h> @@ -394,7 +397,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = /** * DOSFS - */ + */ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS) && \ defined(CONFIGURE_FILESYSTEM_DOSFS) #include <rtems/dosfs.h> @@ -404,7 +407,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = /** * RFS - */ + */ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_RFS) && \ defined(CONFIGURE_FILESYSTEM_RFS) #include <rtems/rtems-rfs.h> @@ -415,13 +418,13 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifdef CONFIGURE_INIT /** - * DEVFS variables. + * DEVFS variables. * - * The number of individual devices that may be registered - * in the system or the CONFIGURE_MAXIMUM_DEVICES variable - * is defaulted to 4 when a filesystem is enabled, unless - * the bsp overwrides this. In which case the value is set - * to BSP_MAXIMUM_DEVICES. + * The number of individual devices that may be registered + * in the system or the CONFIGURE_MAXIMUM_DEVICES variable + * is defaulted to 4 when a filesystem is enabled, unless + * the bsp overwrides this. In which case the value is set + * to BSP_MAXIMUM_DEVICES. */ #ifdef CONFIGURE_FILESYSTEM_DEVFS #ifndef CONFIGURE_MAXIMUM_DEVICES @@ -529,7 +532,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This configures the stack checker user extension. + * This configures the stack checker user extension. */ #ifdef CONFIGURE_STACK_CHECKER_ENABLED #define CONFIGURE_STACK_CHECKER_EXTENSION 1 @@ -538,34 +541,34 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * @brief Maximum Priority configuration + * @brief Maximum priority configuration. * - * This configures the maximum priority value that - * a task may have. + * This configures the maximum priority value that + * a task may have. * - * The following applies to the data space requirements - * of the Priority Scheduler. + * The following applies to the data space requirements + * of the Priority Scheduler. * - * By reducing the number of priorities in a system, - * the amount of RAM required by RTEMS can be significantly - * reduced. RTEMS allocates a Chain_Control structure per - * priority and this structure contains 3 pointers. So - * the default is (256 * 12) = 3K on 32-bit architectures. + * By reducing the number of priorities in a system, + * the amount of RAM required by RTEMS can be significantly + * reduced. RTEMS allocates a Chain_Control structure per + * priority and this structure contains 3 pointers. So + * the default is (256 * 12) = 3K on 32-bit architectures. * - * This must be one less than a power of 2 between - * 4 and 256. Valid values along with the application - * priority levels and memory saved when pointers are - * 32-bits in size are: + * This must be one less than a power of 2 between + * 4 and 256. Valid values along with the application + * priority levels and memory saved when pointers are + * 32-bits in size are: * - * + 3, 2 application priorities, 3024 bytes saved - * + 7, 5 application priorities, 2976 bytes saved - * + 15, 13 application priorities, 2880 bytes saved - * + 31, 29 application priorities, 2688 bytes saved - * + 63, 61 application priorities, 2304 bytes saved - * + 127, 125 application priorities, 1536 bytes saved - * + 255, 253 application priorities, 0 bytes saved + * + 3, 2 application priorities, 3024 bytes saved + * + 7, 5 application priorities, 2976 bytes saved + * + 15, 13 application priorities, 2880 bytes saved + * + 31, 29 application priorities, 2688 bytes saved + * + 63, 61 application priorities, 2304 bytes saved + * + 127, 125 application priorities, 1536 bytes saved + * + 255, 253 application priorities, 0 bytes saved * - * It is specified in terms of Classic API priority values. + * It is specified in terms of Classic API priority values. */ #ifndef CONFIGURE_MAXIMUM_PRIORITY #define CONFIGURE_MAXIMUM_PRIORITY PRIORITY_DEFAULT_MAXIMUM @@ -574,7 +577,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = /* * Scheduler configuration. * - * The scheduler configuration allows an application to select the + * The scheduler configuration allows an application to select the * scheduling policy to use. The supported configurations are: * CONFIGURE_SCHEDULER_USER - user provided scheduler * CONFIGURE_SCHEDULER_PRIORITY - Deterministic Priority Scheduler @@ -582,13 +585,13 @@ rtems_fs_init_functions_t rtems_fs_init_helper = * CONFIGURE_SCHEDULER_SIMPLE_SMP - Simple SMP Priority Scheduler * CONFIGURE_SCHEDULER_EDF - EDF Scheduler * CONFIGURE_SCHEDULER_CBS - CBS Scheduler - * - * If no configuration is specified by the application, then + * + * If no configuration is specified by the application, then * CONFIGURE_SCHEDULER_PRIORITY is assumed to be the default. * * An application can define its own scheduling policy by defining * CONFIGURE_SCHEDULER_USER and the following: - * - CONFIGURE_SCHEDULER_ENTRY_POINTS + * - CONFIGURE_SCHEDULER_ENTRY_POINTS * - CONFIGURE_MEMORY_FOR_SCHEDULER - base memory * - CONFIGURE_MEMORY_PER_TASK_FOR_SCHEDULER - per task memory */ @@ -612,7 +615,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif #endif -/* +/* * If the Priority Scheduler is selected, then configure for it. */ #if defined(CONFIGURE_SCHEDULER_PRIORITY) @@ -630,7 +633,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = _Configure_From_workspace(sizeof(Scheduler_priority_Per_thread)) ) #endif -/* +/* * If the Simple Priority Scheduler is selected, then configure for it. */ #if defined(CONFIGURE_SCHEDULER_SIMPLE) @@ -705,7 +708,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = _Configure_From_workspace(sizeof(Scheduler_CBS_Per_thread))) #endif -/* +/* * Set up the scheduler entry points table. The scheduling code uses * this code to know which scheduler is configured by the user. */ @@ -726,12 +729,12 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * @brief Idle task body configuration + * @brief Idle task body configuration. * - * There is a default IDLE thread body provided by RTEMS which - * has the possibility of being CPU specific. There may be a - * BSP specific override of the RTEMS default body and in turn, - * the application may override and provide its own. + * There is a default IDLE thread body provided by RTEMS which + * has the possibility of being CPU specific. There may be a + * BSP specific override of the RTEMS default body and in turn, + * the application may override and provide its own. */ #ifndef CONFIGURE_IDLE_TASK_BODY #if defined(BSP_IDLE_TASK_BODY) @@ -752,7 +755,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * By default, use the minimum stack size requested by this port. + * By default, use the minimum stack size requested by this port. */ #ifndef CONFIGURE_MINIMUM_TASK_STACK_SIZE #define CONFIGURE_MINIMUM_TASK_STACK_SIZE CPU_STACK_MINIMUM_SIZE @@ -762,10 +765,10 @@ rtems_fs_init_functions_t rtems_fs_init_helper = (2 * CONFIGURE_MINIMUM_TASK_STACK_SIZE) /** - * @brief Idle task stack size configuration + * @brief Idle task stack size configuration. * - * By default, the IDLE task will have a stack of minimum size. - * The BSP or application may override this value. + * By default, the IDLE task will have a stack of minimum size. + * The BSP or application may override this value. */ #ifndef CONFIGURE_IDLE_TASK_STACK_SIZE #ifdef BSP_IDLE_TASK_STACK_SIZE @@ -779,10 +782,10 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * @brief Interrupt stack size configuration + * @brief Interrupt stack size configuration. * - * By default, the interrupt stack will be of minimum size. - * The BSP or application may override this value. + * By default, the interrupt stack will be of minimum size. + * The BSP or application may override this value. */ #ifndef CONFIGURE_INTERRUPT_STACK_SIZE #ifdef BSP_INTERRUPT_STACK_SIZE @@ -793,11 +796,11 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This reserves memory for the interrupt stack if it is to be allocated - * by RTEMS rather than the BSP. + * This reserves memory for the interrupt stack if it is to be allocated + * by RTEMS rather than the BSP. * - * @todo Try to get to the point where all BSPs support allocating the - * memory from the Workspace. + * @todo Try to get to the point where all BSPs support allocating the + * memory from the Workspace. */ #if (CPU_ALLOCATE_INTERRUPT_STACK == 0) #define CONFIGURE_INTERRUPT_STACK_MEMORY 0 @@ -807,7 +810,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * Configure the very much optional task stack allocator initialization + * Configure the very much optional task stack allocator initialization */ #ifndef CONFIGURE_TASK_STACK_ALLOCATOR_INIT #define CONFIGURE_TASK_STACK_ALLOCATOR_INIT NULL @@ -828,8 +831,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * Should the RTEMS Workspace and C Program Heap be cleared automatically - * at system start up? + * Should the RTEMS Workspace and C Program Heap be cleared automatically + * at system start up? */ #ifndef CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY #ifdef BSP_ZERO_WORKSPACE_AUTOMATICALLY @@ -848,17 +851,17 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifdef CONFIGURE_INIT /** - * By default, RTEMS uses separate heaps for the RTEMS Workspace and - * the C Program Heap. On many BSPs, these can be optionally - * combined provided one larger memory pool. This is particularly - * useful in combination with the unlimited objects configuration. + * By default, RTEMS uses separate heaps for the RTEMS Workspace and + * the C Program Heap. On many BSPs, these can be optionally + * combined provided one larger memory pool. This is particularly + * useful in combination with the unlimited objects configuration. */ #ifdef BSP_DEFAULT_UNIFIED_WORK_AREAS #ifndef CONFIGURE_UNIFIED_WORK_AREAS #define CONFIGURE_UNIFIED_WORK_AREAS #endif #endif - + #ifdef CONFIGURE_UNIFIED_WORK_AREAS Heap_Control *RTEMS_Malloc_Heap = &_Workspace_Area; #else @@ -869,8 +872,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifdef CONFIGURE_INIT /** - * This configures the malloc family statistics to be available. - * By default only function call counts are kept. + * This configures the malloc family statistics to be available. + * By default only function call counts are kept. */ rtems_malloc_statistics_functions_t *rtems_malloc_statistics_helpers = #ifndef CONFIGURE_MALLOC_STATISTICS @@ -882,10 +885,10 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifdef CONFIGURE_INIT /** - * This configures the sbrk() support for the malloc family. - * By default it is assumed that the BSP provides all available - * RAM to the malloc family implementation so sbrk()'ing to get - * more memory would always fail anyway. + * This configures the sbrk() support for the malloc family. + * By default it is assumed that the BSP provides all available + * RAM to the malloc family implementation so sbrk()'ing to get + * more memory would always fail anyway. */ const rtems_heap_extend_handler rtems_malloc_extend_handler = #ifdef CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK @@ -897,9 +900,9 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifdef CONFIGURE_INIT /** - * This configures the malloc family plugin which dirties memory - * allocated. This is helpful for finding unitialized data structure - * problems. + * This configures the malloc family plugin which dirties memory + * allocated. This is helpful for finding unitialized data structure + * problems. */ rtems_malloc_dirtier_t rtems_malloc_dirty_helper = #if defined(CONFIGURE_MALLOC_DIRTY) @@ -910,18 +913,18 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This is a helper macro used in calculations in this file. It is used - * to noted when an element is allocated from the RTEMS Workspace and adds - * a factor to account for heap overhead plus an alignment factor that - * may be applied. + * This is a helper macro used in calculations in this file. It is used + * to noted when an element is allocated from the RTEMS Workspace and adds + * a factor to account for heap overhead plus an alignment factor that + * may be applied. */ #define _Configure_From_workspace(_size) \ (ssize_t)((_size) + HEAP_BLOCK_HEADER_SIZE + CPU_HEAP_ALIGNMENT - 1) /** - * This is a helper macro used in stack space calculations in this file. It - * may be provided by the application in case a special task stack allocator - * is used. The default is allocation from the RTEMS Workspace. + * This is a helper macro used in stack space calculations in this file. It + * may be provided by the application in case a special task stack allocator + * is used. The default is allocation from the RTEMS Workspace. */ #ifdef CONFIGURE_TASK_STACK_FROM_ALLOCATOR #define _Configure_From_stackspace(_stack_size) \ @@ -932,18 +935,18 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * Do not use the unlimited bit as part of the multiplication - * for memory usage. + * Do not use the unlimited bit as part of the multiplication + * for memory usage. */ #define _Configure_Max_Objects(_max) \ rtems_resource_maximum_per_allocation(_max) /** - * This macro accounts for how memory for a set of configured objects is - * allocated from the Executive Workspace. + * This macro accounts for how memory for a set of configured objects is + * allocated from the Executive Workspace. * - * NOTE: It does NOT attempt to address the more complex case of unlimited - * objects. + * NOTE: It does NOT attempt to address the more complex case of unlimited + * objects. */ #define _Configure_Object_RAM(_number, _size) \ ( _Configure_From_workspace(_Configure_Max_Objects(_number) * (_size)) + \ @@ -1153,9 +1156,9 @@ rtems_fs_init_functions_t rtems_fs_init_helper = RTEMS_ARRAY_SIZE(Device_drivers) /** - * This specifies the maximum number of device drivers that - * can be installed in the system at one time. It must account - * for both the statically and dynamically installed drivers. + * This specifies the maximum number of device drivers that + * can be installed in the system at one time. It must account + * for both the statically and dynamically installed drivers. */ #ifndef CONFIGURE_MAXIMUM_DRIVERS #define CONFIGURE_MAXIMUM_DRIVERS CONFIGURE_NUMBER_OF_DRIVERS @@ -1482,10 +1485,10 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This macro calculates the memory required for task variables. + * This macro calculates the memory required for task variables. * - * @note Each task variable is individually allocated from the Workspace. - * Hence, we do the multiplication on the configured size. + * NOTE: Each task variable is individually allocated from the Workspace. + * Hence, we do the multiplication on the configured size. */ #ifndef CONFIGURE_MAXIMUM_TASK_VARIABLES #define CONFIGURE_MAXIMUM_TASK_VARIABLES 0 @@ -1659,8 +1662,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #include <rtems/posix/timer.h> /** - * Account for the object control structures plus the name - * of the object to be duplicated. + * Account for the object control structures plus the name + * of the object to be duplicated. */ #define _Configure_POSIX_Named_Object_RAM(_number, _size) \ _Configure_Object_RAM( (_number), _size ) + \ @@ -1853,15 +1856,15 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifdef CONFIGURE_GNAT_RTEMS /** - * The GNAT run-time needs something less than (10) POSIX mutexes. - * We may be able to get by with less but why bother. + * The GNAT run-time needs something less than (10) POSIX mutexes. + * We may be able to get by with less but why bother. */ #define CONFIGURE_GNAT_MUTEXES 10 /** - * This is the maximum number of Ada tasks which can be concurrently - * in existence. Twenty (20) are required to run all tests in the - * ACATS (formerly ACVC). + * This is the maximum number of Ada tasks which can be concurrently + * in existence. Twenty (20) are required to run all tests in the + * ACATS (formerly ACVC). */ #ifndef CONFIGURE_MAXIMUM_ADA_TASKS #define CONFIGURE_MAXIMUM_ADA_TASKS 20 @@ -1916,8 +1919,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifndef RTEMS_SCHEDSIM /** - * This macro specifies the amount of memory to be reserved for the - * Newlib C Library reentrancy structure -- if we are using newlib. + * This macro specifies the amount of memory to be reserved for the + * Newlib C Library reentrancy structure -- if we are using newlib. */ #if (defined(RTEMS_NEWLIB) && !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY)) @@ -1934,8 +1937,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This is so we can account for tasks with stacks greater than minimum - * size. This is in bytes. + * This is so we can account for tasks with stacks greater than minimum + * size. This is in bytes. */ #ifndef CONFIGURE_EXTRA_TASK_STACKS #define CONFIGURE_EXTRA_TASK_STACKS 0 @@ -1948,10 +1951,10 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifndef CONFIGURE_EXECUTIVE_RAM_SIZE /** - * Account for allocating the following per object - * + array of object control structures - * + local pointer table -- pointer per object plus a zero'th - * entry in the local pointer table. + * Account for allocating the following per object + * + array of object control structures + * + local pointer table -- pointer per object plus a zero'th + * entry in the local pointer table. */ #define CONFIGURE_MEMORY_FOR_TASKS(_tasks, _number_FP_tasks) \ @@ -1973,8 +1976,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = ) /** - * This defines the amount of memory configured for the multiprocessing - * support required by this application. + * This defines the amount of memory configured for the multiprocessing + * support required by this application. */ #ifdef CONFIGURE_MP_APPLICATION #define CONFIGURE_MEMORY_FOR_MP \ @@ -1988,44 +1991,44 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * The following macro is used to calculate the memory allocated by RTEMS - * for the message buffers associated with a particular message queue. - * There is a fixed amount of overhead per message. + * The following macro is used to calculate the memory allocated by RTEMS + * for the message buffers associated with a particular message queue. + * There is a fixed amount of overhead per message. */ #define CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(_messages, _size) \ _Configure_From_workspace( \ (_messages) * ((_size) + sizeof(CORE_message_queue_Buffer_control))) /** - * This macros is set to the amount of memory required for pending message - * buffers in bytes. It should be constructed by adding together a - * set of values determined by CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE. + * This macros is set to the amount of memory required for pending message + * buffers in bytes. It should be constructed by adding together a + * set of values determined by CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE. */ #ifndef CONFIGURE_MESSAGE_BUFFER_MEMORY #define CONFIGURE_MESSAGE_BUFFER_MEMORY 0 #endif /** - * This macro is available just in case the confdefs.h file underallocates - * memory for a particular application. This lets the user add some extra - * memory in case something broken and underestimates. + * This macro is available just in case the confdefs.h file underallocates + * memory for a particular application. This lets the user add some extra + * memory in case something broken and underestimates. * - * It is also possible for cases where confdefs.h overallocates memory, - * you could substract memory from the allocated. The estimate is just - * that, an estimate, and assumes worst case alignment and padding on - * each allocated element. So in some cases it could be too conservative. + * It is also possible for cases where confdefs.h overallocates memory, + * you could substract memory from the allocated. The estimate is just + * that, an estimate, and assumes worst case alignment and padding on + * each allocated element. So in some cases it could be too conservative. * - * @note Historically this was used for message buffers. + * NOTE: Historically this was used for message buffers. */ #ifndef CONFIGURE_MEMORY_OVERHEAD #define CONFIGURE_MEMORY_OVERHEAD 0 #endif /** - * On architectures that use Simple Vectored Interrupts, it is RTEMS - * responsibility to allocate the vector table. This avoids reserving - * the memory on architectures that use the Programmable Interrupt - * Controller Vectored Interrupts. + * On architectures that use Simple Vectored Interrupts, it is RTEMS + * responsibility to allocate the vector table. This avoids reserving + * the memory on architectures that use the Programmable Interrupt + * Controller Vectored Interrupts. */ #if (CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE) /* @@ -2047,15 +2050,15 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * RTEMS uses one instance of an internal mutex class. This accounts - * for that mutex + * RTEMS uses one instance of an internal mutex class. This accounts + * for that mutex */ #define CONFIGURE_API_MUTEX_MEMORY \ _Configure_Object_RAM(1, sizeof(API_Mutex_Control)) /** - * This calculates the amount of memory reserved for the IDLE tasks. - * In an SMP system, each CPU core has its own idle task. + * This calculates the amount of memory reserved for the IDLE tasks. + * In an SMP system, each CPU core has its own idle task. */ #if defined(RTEMS_SMP) #define CONFIGURE_IDLE_TASKS_COUNT CONFIGURE_SMP_MAXIMUM_PROCESSORS @@ -2064,14 +2067,14 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This defines the formula used to compute the amount of memory - * reserved for IDLE task control structures. + * This defines the formula used to compute the amount of memory + * reserved for IDLE task control structures. */ #define CONFIGURE_MEMORY_FOR_IDLE_TASK \ CONFIGURE_MEMORY_FOR_TASKS(CONFIGURE_IDLE_TASKS_COUNT, 0) /** - * This macro accounts for general RTEMS system overhead. + * This macro accounts for general RTEMS system overhead. */ #define CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD \ ( CONFIGURE_MEMORY_FOR_IDLE_TASK + /* IDLE and stack */ \ @@ -2082,8 +2085,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = ) /** - * This macro provides a summation of the various task and thread - * requirements. + * This macro provides a summation of the various task and thread + * requirements. */ #define CONFIGURE_TOTAL_TASKS_AND_THREADS \ (CONFIGURE_TASKS + \ @@ -2091,8 +2094,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = CONFIGURE_MAXIMUM_GOROUTINES) /** - * This macro reserves the memory required by the statically configured - * user extensions. + * This macro reserves the memory required by the statically configured + * user extensions. */ #define CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS \ (CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS == 0 ? 0 : \ @@ -2102,8 +2105,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = )) /** - * This macro provides a summation of the memory required by the - * Classic API as configured. + * This macro provides a summation of the memory required by the + * Classic API as configured. */ #define CONFIGURE_MEMORY_FOR_CLASSIC \ (CONFIGURE_MEMORY_FOR_TASK_VARIABLES(CONFIGURE_MAXIMUM_TASK_VARIABLES + \ @@ -2130,7 +2133,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This calculates the memory required for the executive workspace. + * This calculates the memory required for the executive workspace. */ #define CONFIGURE_EXECUTIVE_RAM_SIZE \ (( \ @@ -2152,8 +2155,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = */ /** - * This accounts for any extra memory required by the Classic API - * Initialization Task. + * This accounts for any extra memory required by the Classic API + * Initialization Task. */ #if (CONFIGURE_INIT_TASK_STACK_SIZE > CONFIGURE_MINIMUM_TASK_STACK_SIZE) #define CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART \ @@ -2163,8 +2166,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This accounts for any extra memory required by the POSIX API - * Initialization Thread. + * This accounts for any extra memory required by the POSIX API + * Initialization Thread. */ #if defined(RTEMS_POSIX_API) && \ (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE > \ @@ -2177,8 +2180,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #endif /** - * This macro provides a summation of the various initialization task - * and thread stack requirements. + * This macro provides a summation of the various initialization task + * and thread stack requirements. */ #define CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS \ (CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART + \ @@ -2238,7 +2241,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifdef CONFIGURE_INIT /** - * This is the Classic API Configuration Table. + * This is the Classic API Configuration Table. */ rtems_api_configuration_table Configuration_RTEMS_API = { CONFIGURE_TASKS, @@ -2257,7 +2260,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #ifdef RTEMS_POSIX_API /** - * This is the POSIX API Configuration Table. + * This is the POSIX API Configuration Table. */ posix_api_configuration_table Configuration_POSIX_API = { CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_ADA_TASKS + @@ -2282,29 +2285,31 @@ rtems_fs_init_functions_t rtems_fs_init_helper = }; #endif - /** This variable specifies the minimum stack size for tasks in an RTEMS - * application. + /** + * This variable specifies the minimum stack size for tasks in an RTEMS + * application. * - * @note This is left as a simple uint32_t so it can be externed as - * needed without requring being high enough logical to - * include the full configuration table. + * NOTE: This is left as a simple uint32_t so it can be externed as + * needed without requring being high enough logical to + * include the full configuration table. */ uint32_t rtems_minimum_stack_size = CONFIGURE_MINIMUM_TASK_STACK_SIZE; - /** This variable specifies the maximum priority value that - * a task may have. This must be a power of 2 between 4 - * and 256 and is specified in terms of Classic API - * priority values. + /** + * This variable specifies the maximum priority value that + * a task may have. This must be a power of 2 between 4 + * and 256 and is specified in terms of Classic API + * priority values. * - * @note This is left as a simple uint8_t so it can be externed as - * needed without requring being high enough logical to - * include the full configuration table. + * NOTE: This is left as a simple uint8_t so it can be externed as + * needed without requring being high enough logical to + * include the full configuration table. */ uint8_t rtems_maximum_priority = CONFIGURE_MAXIMUM_PRIORITY; /** - * This is the primary Configuration Table for this application. + * This is the primary Configuration Table for this application. */ const rtems_configuration_table Configuration = { CONFIGURE_EXECUTIVE_RAM_SIZE, /* required RTEMS workspace */ @@ -2347,8 +2352,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #if defined(RTEMS_SMP) /** - * Instantiate the variable which specifies the number of CPUs - * in an SMP configuration. + * Instantiate the variable which specifies the number of CPUs + * in an SMP configuration. */ #if defined(CONFIGURE_INIT) uint32_t rtems_configuration_smp_maximum_processors = \ @@ -2411,11 +2416,11 @@ rtems_fs_init_functions_t rtems_fs_init_helper = #if defined(CONFIGURE_CONFDEFS_DEBUG) && defined(CONFIGURE_INIT) /** - * This is a debug mechanism, so if you need to, the executable will - * have a structure with various partial values. Add to this as you - * need to. Viewing this structure in gdb combined with dumping - * the Configuration structures generated should help a lot in tracing - * down errors and analyzing where over and under allocations are. + * This is a debug mechanism, so if you need to, the executable will + * have a structure with various partial values. Add to this as you + * need to. Viewing this structure in gdb combined with dumping + * the Configuration structures generated should help a lot in tracing + * down errors and analyzing where over and under allocations are. */ typedef struct { uint32_t SYSTEM_OVERHEAD; diff --git a/cpukit/sapi/include/rtems/cbs.h b/cpukit/sapi/include/rtems/cbs.h index 9113204bdf..e0e619cdeb 100644 --- a/cpukit/sapi/include/rtems/cbs.h +++ b/cpukit/sapi/include/rtems/cbs.h @@ -1,8 +1,11 @@ /** - * @file rtems/cbs.h + * @file * - * This include file contains all the constants and structures associated - * with the CBS library in RTEMS. + * @brief Constants and Structures Associated + * with the CBS library in RTEMS + * + * This include file contains all the constants and structures associated + * with the CBS library in RTEMS. */ /* diff --git a/cpukit/sapi/include/rtems/chain.h b/cpukit/sapi/include/rtems/chain.h index 12d6e3b536..41b3154a11 100644 --- a/cpukit/sapi/include/rtems/chain.h +++ b/cpukit/sapi/include/rtems/chain.h @@ -1,9 +1,7 @@ /** * @file - * - * @ingroup ClassicChains - * - * @brief Chain API. + * + * @brief Chain API */ /* @@ -33,10 +31,9 @@ extern "C" { * * @ingroup ClassicRTEMS * - * @brief Chain API. - * - * @{ + * @brief Chain API */ +/**@{**/ typedef Chain_Node rtems_chain_node; @@ -60,9 +57,8 @@ typedef Chain_Control rtems_chain_control; /** * @addtogroup ClassicChains - * - * @{ */ +/**@{**/ /** * @brief Appends the @a node to the @a chain and sends the @a events to the diff --git a/cpukit/sapi/include/rtems/config.h b/cpukit/sapi/include/rtems/config.h index 983af84abf..58d2d92fb5 100644 --- a/cpukit/sapi/include/rtems/config.h +++ b/cpukit/sapi/include/rtems/config.h @@ -1,5 +1,7 @@ /** - * @file rtems/config.h + * @file + * + * @brief Table of User Defined Configuration Parameters * * This include file contains the table of user defined configuration * parameters. @@ -77,9 +79,10 @@ typedef struct { /** This is the maximum number of proxies. */ uint32_t maximum_proxies; - /** The MPCI Receive server is assumed to have a stack of at least - * minimum stack size. This field specifies the amount of extra - * stack this task will be given in bytes. + /** + * The MPCI Receive server is assumed to have a stack of at least + * minimum stack size. This field specifies the amount of extra + * stack this task will be given in bytes. */ uint32_t extra_mpci_receive_server_stack; @@ -91,14 +94,14 @@ typedef struct { /** * @brief Task stack allocator initialization hook. * - * @param[in] stack_space_size Size of the stack space in bytes. + * @param[in] stack_space_size is the size of the stack space in bytes. */ typedef void (*rtems_stack_allocate_init_hook)( size_t stack_space_size ); /** * @brief Task stack allocator hook. * - * @param[in] stack_size Size of the task stack in bytes. + * @param[in] stack_size is the Size of the task stack in bytes. * * @retval NULL Not enough memory. * @retval other Pointer to task stack. @@ -108,7 +111,7 @@ typedef void *(*rtems_stack_allocate_hook)( size_t stack_size ); /** * @brief Task stack deallocator hook. * - * @param[in] addr Pointer to previously allocated task stack. + * @param[in] addr is a pointer to previously allocated task stack. */ typedef void (*rtems_stack_free_hook)( void *addr ); @@ -124,49 +127,58 @@ typedef void (*rtems_stack_free_hook)( void *addr ); * + required number of each object type for each API configured */ typedef struct { - /** This field specifies the size in bytes of the RTEMS Workspace. + /** + * This field specifies the size in bytes of the RTEMS Workspace. */ uintptr_t work_space_size; - /** This field specifies the size in bytes of the RTEMS thread stack space. + /** + * This field specifies the size in bytes of the RTEMS thread stack space. */ uintptr_t stack_space_size; - /** This field specifies the maximum number of dynamically installed - * used extensions. + /** + * This field specifies the maximum number of dynamically installed + * used extensions. */ uint32_t maximum_extensions; - /** This field specifies the number of microseconds which elapse - * between clock ticks. This is the basis for RTEMS timing. + /** + * This field specifies the number of microseconds which elapse + * between clock ticks. This is the basis for RTEMS timing. */ uint32_t microseconds_per_tick; - /** This field specifies the number of nanoseconds which elapse - * between clock ticks. This value is derived from the - * microseconds_per_tick field and provided to avoid calculation at - * run-time. + /** + * This field specifies the number of nanoseconds which elapse + * between clock ticks. This value is derived from the + * microseconds_per_tick field and provided to avoid calculation at + * run-time. */ uint32_t nanoseconds_per_tick; - /** This field specifies the number of ticks in each task's timeslice. + /** + * This field specifies the number of ticks in each task's timeslice. */ uint32_t ticks_per_timeslice; - /** This element points to the BSP's optional idle task which may override - * the default one provided with RTEMS. + /** + * This element points to the BSP's optional idle task which may override + * the default one provided with RTEMS. */ Thread (*idle_task)( uintptr_t ); - /** This field specifies the size of the IDLE task's stack. If less than or - * equal to the minimum stack size, then the IDLE task will have the minimum - * stack size. + /** + * This field specifies the size of the IDLE task's stack. If less than or + * equal to the minimum stack size, then the IDLE task will have the minimum + * stack size. */ uint32_t idle_task_stack_size; - /** This field specifies the size of the interrupt stack. If less than or - * equal to the minimum stack size, then the interrupt stack will be of - * minimum stack size. + /** + * This field specifies the size of the interrupt stack. If less than or + * equal to the minimum stack size, then the interrupt stack will be of + * minimum stack size. */ uint32_t interrupt_stack_size; @@ -185,10 +197,11 @@ typedef struct { */ rtems_stack_free_hook stack_free_hook; - /** If this element is TRUE, then RTEMS will zero the Executive Workspace. - * When this element is FALSE, it is assumed that the BSP or invoking - * environment has ensured that memory was cleared before RTEMS was - * invoked. + /** + * If this element is TRUE, then RTEMS will zero the Executive Workspace. + * When this element is FALSE, it is assumed that the BSP or invoking + * environment has ensured that memory was cleared before RTEMS was + * invoked. */ bool do_zero_of_workspace; @@ -220,23 +233,23 @@ typedef struct { } rtems_configuration_table; /** - * This is the configuration table generated by confdefs.h. + * This is the configuration table generated by confdefs.h. */ extern const rtems_configuration_table Configuration; #if defined(RTEMS_MULTIPROCESSING) /** - * This points to the multiprocessing configuration table. + * This points to the multiprocessing configuration table. */ SAPI_EXTERN rtems_multiprocessing_table *_Configuration_MP_table; #endif #if defined(RTEMS_MULTIPROCESSING) /** - * @brief RTEMS Multiprocessing Configuration Table + * @brief RTEMS multiprocessing configuration table. * - * This is the RTEMS Multiprocessing Configuration Table expected to - * be generated by confdefs.h. + * This is the RTEMS Multiprocessing Configuration Table expected to + * be generated by confdefs.h. */ extern rtems_multiprocessing_table Multiprocessing_configuration; #endif @@ -292,7 +305,7 @@ extern const rtems_configuration_table Configuration; #define rtems_configuration_get_stack_free_hook() \ (Configuration.stack_free_hook) -/** + /** * This macro assists in accessing the field which indicates whether * RTEMS is responsible for zeroing the Executive Workspace. */ diff --git a/cpukit/sapi/include/rtems/extension.h b/cpukit/sapi/include/rtems/extension.h index 3d54092a8c..d4f7fde532 100644 --- a/cpukit/sapi/include/rtems/extension.h +++ b/cpukit/sapi/include/rtems/extension.h @@ -1,8 +1,6 @@ /** * @file - * - * @ingroup ClassicUserExtensions - * + * * @brief User Extensions API. */ @@ -39,7 +37,7 @@ typedef struct { } Extension_Control; /** - * @brief Initialize Extension Manager + * @brief Initialize extension manager. * * This routine initializes all extension manager related data structures. */ @@ -172,9 +170,8 @@ typedef User_extensions_routine * will operate correctly even if they utilize the C Library because the C * Library's task delete extension is invoked after that of the other * extensions. - * - * @{ */ +/**@{**/ typedef User_extensions_thread_create_extension rtems_task_create_extension; typedef User_extensions_thread_delete_extension rtems_task_delete_extension; diff --git a/cpukit/sapi/include/rtems/fatal.h b/cpukit/sapi/include/rtems/fatal.h index 64344b36b8..66236462d8 100644 --- a/cpukit/sapi/include/rtems/fatal.h +++ b/cpukit/sapi/include/rtems/fatal.h @@ -1,8 +1,6 @@ /** * @file * - * @ingroup ClassicFatal - * * @brief Fatal API. */ @@ -32,9 +30,8 @@ extern "C" { * * @brief The Fatal Manager provides functions for fatal system states and or * irrecoverable errors. - * - * @{ */ +/**@{**/ /** * @brief Exception frame. @@ -42,9 +39,9 @@ extern "C" { typedef CPU_Exception_frame rtems_exception_frame; /** - * @brief Prints the exception frame via printk(). + * @brief Prints the exception frame via printk(). * - * @see rtems_fatal() and RTEMS_FATAL_SOURCE_EXCEPTION. + * @see rtems_fatal() and RTEMS_FATAL_SOURCE_EXCEPTION. */ static inline void rtems_exception_frame_print( const rtems_exception_frame *frame @@ -57,9 +54,7 @@ static inline void rtems_exception_frame_print( * @brief Invokes the internal error handler with a source of * INTERNAL_ERROR_RTEMS_API and is internal set to false. * - * @param[in] the_error A 32-bit fatal error code. - * - * @return This function will not return. + * @param[in] the_error is a 32-bit fatal error code. * * @see _Internal_error_Occurred(). */ @@ -70,10 +65,8 @@ void rtems_fatal_error_occurred( /** * @brief Invokes the internal error handler with is internal set to false. * - * @param[in] source The fatal source. - * @param[in] error The fatal code. - * - * @return This function will not return. + * @param[in] source is the fatal source. + * @param[in] error is the fatal code. * * @see _Internal_error_Occurred(). */ @@ -83,12 +76,22 @@ void rtems_fatal( ) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; /** + * @brief Returns a description for a fatal source. + * + * @param[in] source is the fatal source. + * + * @retval description The fatal source description. + * @retval ? The passed fatal source is invalid. + */ +const char *rtems_fatal_source_description( rtems_fatal_source source ); + +/** * @brief Returns a description for an internal error code. * - * @param[in] error The error code. + * @param[in] error is the error code. * - * @return The error code description or "?" in case the passed error code is - * invalid. + * @retval description The error code description. + * @retval ? The passed error code is invalid. */ const char *rtems_internal_error_description( rtems_fatal_code error ); diff --git a/cpukit/sapi/include/rtems/init.h b/cpukit/sapi/include/rtems/init.h index 8b5fab91fd..ad9a144910 100644 --- a/cpukit/sapi/include/rtems/init.h +++ b/cpukit/sapi/include/rtems/init.h @@ -1,17 +1,19 @@ /** - * @file rtems/init.h + * @file * + * @brief Constants and Structures Associated + * with the Initialization Manager * - * This include file contains all the constants and structures associated - * with the Initialization Manager. This manager is responsible for - * initializing RTEMS, creating and starting all configured initialization - * tasks, invoking the initialization routine for each user-supplied device - * driver, and initializing the optional multiprocessor layer. + * This include file contains all the constants and structures associated + * with the Initialization Manager. This manager is responsible for + * initializing RTEMS, creating and starting all configured initialization + * tasks, invoking the initialization routine for each user-supplied device + * driver, and initializing the optional multiprocessor layer. * - * This manager provides directives to: + * This manager provides directives to: * - * + initialize the RTEMS executive - * + shutdown the RTEMS executive + * + initialize the RTEMS executive + * + shutdown the RTEMS executive */ /* @@ -36,64 +38,64 @@ extern "C" { #if defined(RTEMS_MULTIPROCESSING) /** - * The following defines the default Multiprocessing Configuration - * Table. This table is used in a single processor system. + * The following defines the default Multiprocessing Configuration + * Table. This table is used in a single processor system. */ extern const rtems_multiprocessing_table _Initialization_Default_multiprocessing_table; #endif /** - * @brief rtems_initialize_data_structures + * @brief RTEMS data structures initialization. * - * This routine implements the portion of the RTEMS initializatin process - * that involves initializing data structures to a state that scheduling - * can occur in a consistent manner. + * This routine implements the portion of the RTEMS initializatin process + * that involves initializing data structures to a state that scheduling + * can occur in a consistent manner. */ void rtems_initialize_data_structures(void); /** - * @brief rtems_initialize_before_drivers + * @brief RTEMS initialization before the device drivers are initialized. * - * This routine implements the portion of RTEMS initialization that - * is done immediately before device drivers are initialized. + * This routine implements the portion of RTEMS initialization that + * is done immediately before device drivers are initialized. */ void rtems_initialize_before_drivers(void); /** - * @brief rtems_initialize_device_drivers + * @brief RTEMS initialization that initializes all device drivers. * - * This routine implements the portion of RTEMS initialization that - * initializes all device drivers. + * This routine implements the portion of RTEMS initialization that + * initializes all device drivers. */ void rtems_initialize_device_drivers(void); /** - * @brief Starts the multitasking. + * @brief Starts the multitasking. * - * This directive initiates multitasking and performs a context switch to the - * first user application task and may enable interrupts as a side-effect of - * that context switch. The context switch saves the executing context. The - * application runs now. The directive rtems_shutdown_executive() will return - * to the saved context. The exit() function will use this directive. + * This directive initiates multitasking and performs a context switch to the + * first user application task and may enable interrupts as a side-effect of + * that context switch. The context switch saves the executing context. The + * application runs now. The directive rtems_shutdown_executive() will return + * to the saved context. The exit() function will use this directive. * - * After a return to the saved context a fatal system state is reached. The - * fatal source is RTEMS_FATAL_SOURCE_EXIT with a fatal code set to the value - * passed to rtems_shutdown_executive(). + * After a return to the saved context a fatal system state is reached. The + * fatal source is RTEMS_FATAL_SOURCE_EXIT with a fatal code set to the value + * passed to rtems_shutdown_executive(). * - * This directive does not return. + * This directive does not return. */ void rtems_initialize_start_multitasking(void) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; /** - * @brief Shutdown the RTEMS environment + * @brief Shutdown the RTEMS environment. * - * This routine implements the rtems_shutdown_executive directive. The - * invocation of this directive results in the RTEMS environment being - * shutdown and multitasking halted. From the application's perspective, - * invocation of this directive results in the rtems_initialize_executive - * directive exitting to the startup code which invoked it. + * This routine implements the rtems_shutdown_executive directive. The + * invocation of this directive results in the RTEMS environment being + * shutdown and multitasking halted. From the application's perspective, + * invocation of this directive results in the rtems_initialize_executive + * directive exitting to the startup code which invoked it. */ void rtems_shutdown_executive( uint32_t result diff --git a/cpukit/sapi/include/rtems/io.h b/cpukit/sapi/include/rtems/io.h index 2a268fa51e..e598ca3ffc 100644 --- a/cpukit/sapi/include/rtems/io.h +++ b/cpukit/sapi/include/rtems/io.h @@ -1,9 +1,7 @@ /** * @file * - * @ingroup ClassicIO - * - * @brief Classic Input/Output Manager API. + * @brief Classic Input/Output Manager API * * This file emulates the old Classic RTEMS IO manager directives * which register and lookup names using the in-memory filesystem. @@ -36,8 +34,8 @@ extern "C" { * * @ingroup ClassicRTEMS * - * @{ */ +/**@{**/ typedef uint32_t rtems_device_major_number; @@ -62,9 +60,8 @@ typedef struct { /** * @name Device Driver Maintainance - * - * @{ */ +/**@{**/ /** * @brief Returns @c RTEMS_IO_ERROR. @@ -103,13 +100,13 @@ rtems_status_code rtems_io_register_driver( ); /** - * @brief Unregister a Driver from the Device Driver Table. + * @brief Unregister a driver from the device driver table. * - * @param[in] major is the device major number. + * @param[in] major is the device major number. * - * @retval RTEMS_SUCCESSFUL Device driver successfully unregistered. - * @retval RTEMS_UNSATISFIED Invalid major number. - * @retval RTEMS_CALLED_FROM_ISR Called from interrupt context. + * @retval RTEMS_SUCCESSFUL Device driver successfully unregistered. + * @retval RTEMS_UNSATISFIED Invalid major number. + * @retval RTEMS_CALLED_FROM_ISR Called from interrupt context. */ rtems_status_code rtems_io_unregister_driver( rtems_device_major_number major @@ -133,15 +130,15 @@ rtems_status_code rtems_io_register_name( /** @} */ /** - * @brief IO Driver Initialization + * @brief IO driver initialization. * - * This routine is the initialization directive of the IO manager. + * This routine is the initialization directive of the IO manager. * - * @param[in] major is the device drive number - * @param[in] minor is the device number - * @param[in] argument is the pointer to the argument(s) + * @param[in] major is the device drive number + * @param[in] minor is the device number + * @param[in] argument is the pointer to the argument(s) * - * @return status code + * @return status code */ rtems_status_code rtems_io_initialize( rtems_device_major_number major, @@ -150,15 +147,15 @@ rtems_status_code rtems_io_initialize( ); /** - * @brief Opening for The IO Manager + * @brief Opening for the IO manager. * - * Opens a device driver with the number @a major. + * Opens a device driver with the number @a major. * - * @param[in] major is the device driver number. - * @param[in] minor is the device number. - * @param[in] argument is the pointer to the argument(s). + * @param[in] major is the device driver number. + * @param[in] minor is the device number. + * @param[in] argument is the pointer to the argument(s). * - * @return Status code. + * @return Status code. */ rtems_status_code rtems_io_open( rtems_device_major_number major, @@ -167,15 +164,15 @@ rtems_status_code rtems_io_open( ); /** - * @brief Closing for The IO Manager + * @brief Closing for the IO manager. * - * This routine is the close directive of the IO manager. + * This routine is the close directive of the IO manager. * - * @param[in] major is the device driver number. - * @param[in] minor is the device number. - * @param[in] argument is the pointer to the argument(s). + * @param[in] major is the device driver number. + * @param[in] minor is the device number. + * @param[in] argument is the pointer to the argument(s). * - * @return Status code. + * @return Status code. */ rtems_status_code rtems_io_close( rtems_device_major_number major, @@ -184,15 +181,15 @@ rtems_status_code rtems_io_close( ); /** - * @brief Reading for The IO Manager + * @brief Reading for the IO manager. * - * This routine is the read directive of the IO manager. + * This routine is the read directive of the IO manager. * - * @param[in] major is the device driver number. - * @param[in] minor is the device number. - * @param[in] argument is the pointer to the argument(s). + * @param[in] major is the device driver number. + * @param[in] minor is the device number. + * @param[in] argument is the pointer to the argument(s). * - * @return Status code. + * @return Status code. */ rtems_status_code rtems_io_read( rtems_device_major_number major, @@ -201,15 +198,15 @@ rtems_status_code rtems_io_read( ); /** - * @brief Writing for The IO Manager + * @brief Writing for the IO manager. * - * This routine is the write directive of the IO manager. + * This routine is the write directive of the IO manager. * - * @param[in] major is the device driver number. - * @param[in] minor is the device number. - * @param[in] argument is the pointer to the argument(s). + * @param[in] major is the device driver number. + * @param[in] minor is the device number. + * @param[in] argument is the pointer to the argument(s). * - * @return Status code. + * @return Status code. */ rtems_status_code rtems_io_write( rtems_device_major_number major, @@ -218,15 +215,15 @@ rtems_status_code rtems_io_write( ); /** - * @brief Control for The IO Manager + * @brief Control for the IO manager. * - * This routine is the control directive of the IO manager. + * This routine is the control directive of the IO manager. * - * @param[in] major is the device driver number. - * @param[in] minor is the device number. - * @param[in] argument is the pointer to the argument(s). + * @param[in] major is the device driver number. + * @param[in] minor is the device number. + * @param[in] argument is the pointer to the argument(s). * - * @return Status code. + * @return Status code. */ rtems_status_code rtems_io_control( rtems_device_major_number major, @@ -258,18 +255,18 @@ SAPI_IO_EXTERN uint32_t _IO_Number_of_drivers; SAPI_IO_EXTERN rtems_driver_address_table *_IO_Driver_address_table; /** - * @brief Initialization of Device Drivers + * @brief Initialization of device drivers. * - * @note The IO manager has been extended to support runtime driver - * registration. The driver table is now allocated in the - * workspace. + * NOTE: The IO manager has been extended to support runtime driver + * registration. The driver table is now allocated in the + * workspace. */ void _IO_Manager_initialization( void ); /** - * @brief Initialization of All Device Drivers + * @brief Initialization of all device drivers. * - * Initializes all device drivers. + * Initializes all device drivers. */ void _IO_Initialize_all_drivers( void ); diff --git a/cpukit/sapi/include/rtems/mptables.h b/cpukit/sapi/include/rtems/mptables.h index c46a367a33..fcef585461 100644 --- a/cpukit/sapi/include/rtems/mptables.h +++ b/cpukit/sapi/include/rtems/mptables.h @@ -1,5 +1,8 @@ /** - * @file rtems/mptables.h + * @file + * + * @brief Executive's Pre-Initialized Tables used in a + * Multiprocessor Configuration * * This include file contains the executive's pre-initialized tables * used in a multiprocessor configuration. diff --git a/cpukit/sapi/include/rtems/rbheap.h b/cpukit/sapi/include/rtems/rbheap.h index 39bbc69a3f..22a6cf08f3 100644 --- a/cpukit/sapi/include/rtems/rbheap.h +++ b/cpukit/sapi/include/rtems/rbheap.h @@ -2,8 +2,6 @@ * @file * * @brief Red-Black Tree Heap API - * - * @ingroup RBHeap */ /* @@ -34,6 +32,8 @@ extern "C" { /** * @defgroup RBHeap Red-Black Tree Heap * + * @ingroup ClassicRTEMS + * * @brief Red-Black Tree Heap API. * * The red-black tree heap provides a memory allocator suitable to implement @@ -45,9 +45,8 @@ extern "C" { * by other tasks. The allocated and free memory parts of the managed area are * called chunks. Each chunk needs a descriptor which is stored outside of the * managed area. - * - * @{ */ +/**@{*/ /** * @brief Red-black heap chunk descriptor. diff --git a/cpukit/sapi/include/rtems/rbtree.h b/cpukit/sapi/include/rtems/rbtree.h index 4d150deee7..03a55eb992 100644 --- a/cpukit/sapi/include/rtems/rbtree.h +++ b/cpukit/sapi/include/rtems/rbtree.h @@ -1,11 +1,12 @@ /** - * @file rtems/rbtree.h - * - * This include file contains all the constants and structures associated - * with the RBTree API in RTEMS. The rbtree is a Red Black Tree that - * is part of the Super Core. This is the published interface to that - * code. - * + * @file + * + * @brief Constants and Structures Associated with the RBTree API in RTEMS + * + * This include file contains all the constants and structures associated + * with the RBTree API in RTEMS. The rbtree is a Red Black Tree that + * is part of the Super Core. This is the published interface to that + * code. */ /* @@ -50,13 +51,13 @@ typedef RBTree_Control rtems_rbtree_control; typedef RBTree_Compare_function rtems_rbtree_compare_function; /** - * @brief RBTree initializer for an empty rbtree with designator @a name. + * @brief RBTree initializer for an empty rbtree with designator @a name. */ #define RTEMS_RBTREE_INITIALIZER_EMPTY(name) \ RBTREE_INITIALIZER_EMPTY(name) /** - * @brief RBTree definition for an empty rbtree with designator @a name. + * @brief RBTree definition for an empty rbtree with designator @a name. */ #define RTEMS_RBTREE_DEFINE_EMPTY(name) \ RBTREE_DEFINE_EMPTY(name) diff --git a/cpukit/sapi/include/rtems/sptables.h b/cpukit/sapi/include/rtems/sptables.h index d6480acdfe..f32729c7eb 100644 --- a/cpukit/sapi/include/rtems/sptables.h +++ b/cpukit/sapi/include/rtems/sptables.h @@ -1,8 +1,10 @@ /** - * @file rtems/sptables.h + * @file + * + * @brief Pre-Initialized Tables Used when in a Single Processor Configuration * - * This include file contains the executive's pre-initialized tables - * used when in a single processor configuration. + * This include file contains the executive's pre-initialized tables + * used when in a single processor configuration. */ /* diff --git a/cpukit/sapi/include/rtems/timespec.h b/cpukit/sapi/include/rtems/timespec.h index d502de3eac..b67e95c2d3 100644 --- a/cpukit/sapi/include/rtems/timespec.h +++ b/cpukit/sapi/include/rtems/timespec.h @@ -1,11 +1,9 @@ /** - * @file rtems/sapi/timespec.h + * @file * - * @ingroup + * @brief Timespec API * - * @brief Timespec API - * - * This include file contains API for manipulating timespecs. + * This include file contains API for manipulating timespecs. */ /* @@ -28,9 +26,10 @@ * @ingroup ClassicRTEMS * * @brief Timespec API + * + * @{ * */ -/**@{*/ #include <stdbool.h> /* bool */ #include <stdint.h> /* uint32_t */ @@ -42,11 +41,11 @@ extern "C" { #include <rtems/timespec.inl> +/** @} */ + #ifdef __cplusplus } #endif -/**@}*/ - #endif /* end of include file */ diff --git a/cpukit/sapi/inline/rtems/cbs.inl b/cpukit/sapi/inline/rtems/cbs.inl index d4fb6a8d9d..01d7779318 100644 --- a/cpukit/sapi/inline/rtems/cbs.inl +++ b/cpukit/sapi/inline/rtems/cbs.inl @@ -1,8 +1,10 @@ /** - * @file cbs.inl - * - * This include file contains all the constants and structures associated - * with the CBS library. + * @file + * + * @brief Constants and Structures Associated with the CBS Library + * + * This include file contains all the constants and structures associated + * with the CBS library. * */ @@ -22,11 +24,11 @@ #include <rtems/score/schedulercbs.h> /** - * @brief rtems cbs init + * @brief Initialize the CBS library. * - * Initializes the CBS library. + * Initializes the CBS library. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_initialize ( void ) { @@ -34,11 +36,11 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_initialize ( void ) } /** - * @brief rtems cbs cleanup + * @brief Cleanup resources associated to the CBS Library * - * Cleanup resources associated to the CBS Library. + * Cleanup resources associated to the CBS Library. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_cleanup ( void ) { @@ -46,11 +48,11 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_cleanup ( void ) } /** - * @brief rtems cbs create server + * @brief Create a new server with specified parameters. * - * Create a new server with specified parameters. + * Create a new server with specified parameters. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_create_server ( rtems_cbs_parameters *params, @@ -66,11 +68,11 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_create_server ( } /** - * @brief rtems cbs attach thread + * @brief Attach a task to an already existing server. * - * Attach a task to an already existing server. + * Attach a task to an already existing server. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_attach_thread ( rtems_cbs_server_id server_id, @@ -81,11 +83,11 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_attach_thread ( } /** - * @brief rtems cbs detach thread + * @brief Detach from the CBS server. * - * Detach from the CBS Server. + * Detach from the CBS Server. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_detach_thread ( rtems_cbs_server_id server_id, @@ -96,11 +98,11 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_detach_thread ( } /** - * @brief rtems cbs destroy server + * @brief Detach all tasks from a server and destroy it. * - * Detach all tasks from a server and destroy it. + * Detach all tasks from a server and destroy it. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_destroy_server ( rtems_cbs_server_id server_id @@ -110,12 +112,12 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_destroy_server ( } /** - * @brief rtems cbs get server id + * @brief Get CBS server id. * - * Get a thread server id, or RTEMS_CBS_E_NOT_FOUND if it is not - * attached to any server. + * Get a thread server id, or RTEMS_CBS_E_NOT_FOUND if it is not + * attached to any server. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_get_server_id ( rtems_id task_id, @@ -126,11 +128,11 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_get_server_id ( } /** - * @brief rtems cbs get parameters + * @brief Get CBS parameters. * - * Retrieve CBS scheduling parameters. + * Retrieve CBS scheduling parameters. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_get_parameters ( rtems_cbs_server_id server_id, @@ -141,11 +143,11 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_get_parameters ( } /** - * @brief rtems cbs set parameters + * @brief Set CBS parameters. * - * Change CBS scheduling parameters. + * Change CBS scheduling parameters. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_set_parameters ( rtems_cbs_server_id server_id, @@ -156,11 +158,11 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_set_parameters ( } /** - * @brief rtems cbs get execution time + * @brief Get the CBS get execution time. * - * Retrieve time info relative to the current server. + * Retrieve time info relative to the current server. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_get_execution_time ( rtems_cbs_server_id server_id, @@ -172,11 +174,11 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_get_execution_time ( } /** - * @brief rtems cbs get remaining budget + * @brief Get the remaining CBS budget. * - * Retrieve remaining budget for the current server instance. + * Retrieve remaining budget for the current server instance. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_get_remaining_budget ( rtems_cbs_server_id server_id, @@ -187,12 +189,12 @@ RTEMS_INLINE_ROUTINE int rtems_cbs_get_remaining_budget ( } /** - * @brief rtems cbs get approved budget + * @brief Get the approved CBS budget. * - * Retrieve the budget that has been approved for the subsequent - * server instances. + * Retrieve the budget that has been approved for the subsequent + * server instances. * - * @return status code. + * @return status code. */ RTEMS_INLINE_ROUTINE int rtems_cbs_get_approved_budget ( rtems_cbs_server_id server_id, diff --git a/cpukit/sapi/inline/rtems/chain.inl b/cpukit/sapi/inline/rtems/chain.inl index a1bfc2f32e..3fa03769ea 100644 --- a/cpukit/sapi/inline/rtems/chain.inl +++ b/cpukit/sapi/inline/rtems/chain.inl @@ -1,9 +1,7 @@ /** * @file * - * @ingroup ClassicChains - * - * @brief Chain API. + * @brief Chain API */ /* @@ -28,22 +26,21 @@ /** * @addtogroup ClassicChains - * - * @{ */ +/**@{**/ /** - * @brief Initialize a Chain Header + * @brief Initialize a chain Header. * - * This routine initializes @a the_chain structure to manage the - * contiguous array of @a number_nodes nodes which starts at - * @a starting_address. Each node is of @a node_size bytes. + * This routine initializes @a the_chain structure to manage the + * contiguous array of @a number_nodes nodes which starts at + * @a starting_address. Each node is of @a node_size bytes. * - * @param[in] the_chain specifies the chain to initialize - * @param[in] starting_address is the starting address of the array - * of elements - * @param[in] number_nodes is the number of nodes that will be in the chain - * @param[in] node_size is the size of each node + * @param[in] the_chain specifies the chain to initialize + * @param[in] starting_address is the starting address of the array + * of elements + * @param[in] number_nodes is the number of nodes that will be in the chain + * @param[in] node_size is the size of each node */ RTEMS_INLINE_ROUTINE void rtems_chain_initialize( rtems_chain_control *the_chain, @@ -56,11 +53,11 @@ RTEMS_INLINE_ROUTINE void rtems_chain_initialize( } /** - * @brief Initialize this Chain as Empty + * @brief Initialize this chain as empty. * - * This routine initializes the specified chain to contain zero nodes. + * This routine initializes the specified chain to contain zero nodes. * - * @param[in] the_chain is the chain to be initialized. + * @param[in] the_chain is the chain to be initialized. */ RTEMS_INLINE_ROUTINE void rtems_chain_initialize_empty( rtems_chain_control *the_chain @@ -70,12 +67,12 @@ RTEMS_INLINE_ROUTINE void rtems_chain_initialize_empty( } /** - * @brief Set off chain + * @brief Set off chain. * - * This function sets the next and previous fields of the @a node to NULL - * indicating the @a node is not part of a chain. + * This function sets the next and previous fields of the @a node to NULL + * indicating the @a node is not part of a chain. * - * @param[in] node the node set to off chain. + * @param[in] node the node set to off chain. */ RTEMS_INLINE_ROUTINE void rtems_chain_set_off_chain( rtems_chain_node *node @@ -85,14 +82,15 @@ RTEMS_INLINE_ROUTINE void rtems_chain_set_off_chain( } /** - * @brief Is the Node off Chain + * @brief Is the node off chain. * - * This function returns true if the @a node is not on a chain. A @a node is - * off chain if the next and previous fields are set to NULL. + * This function returns true if the @a node is not on a chain. A @a node is + * off chain if the next and previous fields are set to NULL. * - * @param[in] node is the node off chain. + * @param[in] node is the node off chain. * - * @return This function returns true if the @a node is off chain. + * @retval true The node is off chain. + * @retval false The node is not off chain. */ RTEMS_INLINE_ROUTINE bool rtems_chain_is_node_off_chain( const rtems_chain_node *node @@ -102,13 +100,14 @@ RTEMS_INLINE_ROUTINE bool rtems_chain_is_node_off_chain( } /** - * @brief Is the Chain Node Pointer NULL - * - * This function returns true if the_node is NULL and false otherwise. + * @brief Is the chain node pointer NULL. * - * @param[in] the_node is the node pointer to check. + * This function returns true if the_node is NULL and false otherwise. * - * @return This method returns true if the_node is NULL and false otherwise. + * @param[in] the_node is the node pointer to check. + * + * @retval true The chain node pointer is NULL. + * @retval false The chain node pointer is not NULL. */ RTEMS_INLINE_ROUTINE bool rtems_chain_is_null_node( const rtems_chain_node *the_node @@ -118,13 +117,13 @@ RTEMS_INLINE_ROUTINE bool rtems_chain_is_null_node( } /** - * @brief Return pointer to Chain Head + * @brief Return pointer to Chain Head * - * This function returns a pointer to the first node on the chain. + * This function returns a pointer to the first node on the chain. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the permanent node of the chain. + * @return This method returns the permanent node of the chain. */ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_head( rtems_chain_control *the_chain @@ -133,13 +132,14 @@ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_head( return _Chain_Head( the_chain ); } -/** @brief Return pointer to immutable Chain Head +/** + * @brief Return pointer to immutable Chain Head * - * This function returns a pointer to the head node on the chain. + * This function returns a pointer to the head node on the chain. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the permanent head node of the chain. + * @return This method returns the permanent head node of the chain. */ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_head( const rtems_chain_control *the_chain @@ -149,13 +149,13 @@ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_head( } /** - * @brief Return pointer to Chain Tail + * @brief Return pointer to Chain Tail * - * This function returns a pointer to the tail node on the chain. + * This function returns a pointer to the tail node on the chain. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the permanent tail node of the chain. + * @return This method returns the permanent tail node of the chain. */ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_tail( rtems_chain_control *the_chain @@ -164,13 +164,14 @@ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_tail( return _Chain_Tail( the_chain ); } -/** @brief Return pointer to immutable Chain Tail +/** + * @brief Return pointer to immutable Chain Tail * - * This function returns a pointer to the tail node on the chain. + * This function returns a pointer to the tail node on the chain. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the permanent tail node of the chain. + * @return This method returns the permanent tail node of the chain. */ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_tail( const rtems_chain_control *the_chain @@ -180,14 +181,14 @@ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_tail( } /** - * @brief Return pointer to Chain's First node after the permanent head. + * @brief Return pointer to Chain's First node after the permanent head. * - * This function returns a pointer to the first node on the chain after the - * head. + * This function returns a pointer to the first node on the chain after the + * head. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the first node of the chain. + * @return This method returns the first node of the chain. */ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_first( rtems_chain_control *the_chain @@ -196,14 +197,15 @@ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_first( return _Chain_First( the_chain ); } -/** @brief Return pointer to immutable Chain's First node +/** + * @brief Return pointer to immutable Chain's First node * - * This function returns a pointer to the first node on the chain after the - * head. + * This function returns a pointer to the first node on the chain after the + * head. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the first node of the chain. + * @return This method returns the first node of the chain. */ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_first( const rtems_chain_control *the_chain @@ -213,14 +215,14 @@ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_first( } /** - * @brief Return pointer to Chain's Last node before the permanent tail. + * @brief Return pointer to Chain's Last node before the permanent tail. * - * This function returns a pointer to the last node on the chain just before - * the tail. + * This function returns a pointer to the last node on the chain just before + * the tail. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the last node of the chain. + * @return This method returns the last node of the chain. */ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_last( rtems_chain_control *the_chain @@ -229,14 +231,15 @@ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_last( return _Chain_Last( the_chain ); } -/** @brief Return pointer to immutable Chain's Last node +/** + * @brief Return pointer to immutable Chain's Last node * - * This function returns a pointer to the last node on the chain just before - * the tail. + * This function returns a pointer to the last node on the chain just before + * the tail. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the last node of the chain. + * @return This method returns the last node of the chain. */ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_last( const rtems_chain_control *the_chain @@ -246,13 +249,13 @@ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_last( } /** - * @brief Return pointer the next node from this node + * @brief Return pointer the next node from this node * - * This function returns a pointer to the next node after this node. + * This function returns a pointer to the next node after this node. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the next node on the chain. + * @return This method returns the next node on the chain. */ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_next( rtems_chain_node *the_node @@ -261,13 +264,14 @@ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_next( return _Chain_Next( the_node ); } -/** @brief Return pointer the immutable next node from this node +/** + * @brief Return pointer the immutable next node from this node * - * This function returns a pointer to the next node after this node. + * This function returns a pointer to the next node after this node. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the next node on the chain. + * @return This method returns the next node on the chain. */ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_next( const rtems_chain_node *the_node @@ -277,13 +281,13 @@ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_next( } /** - * @brief Return pointer the previous node from this node + * @brief Return pointer the previous node from this node * - * This function returns a pointer to the previous node on this chain. + * This function returns a pointer to the previous node on this chain. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the previous node on the chain. + * @return This method returns the previous node on the chain. */ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_previous( rtems_chain_node *the_node @@ -292,13 +296,14 @@ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_previous( return _Chain_Previous( the_node ); } -/** @brief Return pointer the immutable previous node from this node +/** + * @brief Return pointer the immutable previous node from this node. * - * This function returns a pointer to the previous node on this chain. + * This function returns a pointer to the previous node on this chain. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the previous node on the chain. + * @return This method returns the previous node on the chain. */ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_previous( const rtems_chain_node *the_node @@ -308,16 +313,16 @@ RTEMS_INLINE_ROUTINE const rtems_chain_node *rtems_chain_immutable_previous( } /** - * @brief Are Two Nodes Equal + * @brief Are Two nodes equal. * - * This function returns true if @a left and @a right are equal, - * and false otherwise. + * This function returns true if @a left and @a right are equal, + * and false otherwise. * - * @param[in] left is the node on the left hand side of the comparison. - * @param[in] right is the node on the left hand side of the comparison. + * @param[in] left is the node on the left hand side of the comparison. + * @param[in] right is the node on the left hand side of the comparison. * - * @return This function returns true if @a left and @a right are equal, - * and false otherwise. + * @retval true @a left is equal to @a right. + * @retval false @a left is not equal to @a right */ RTEMS_INLINE_ROUTINE bool rtems_chain_are_nodes_equal( const rtems_chain_node *left, @@ -328,15 +333,15 @@ RTEMS_INLINE_ROUTINE bool rtems_chain_are_nodes_equal( } /** - * @brief Is the Chain Empty + * @brief Is the chain empty * - * This function returns true if there a no nodes on @a the_chain and - * false otherwise. + * This function returns true if there a no nodes on @a the_chain and + * false otherwise. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This function returns true if there a no nodes on @a the_chain and - * false otherwise. + * @retval true The chain is empty. + * @retval false The chain is not empty. */ RTEMS_INLINE_ROUTINE bool rtems_chain_is_empty( const rtems_chain_control *the_chain @@ -346,16 +351,16 @@ RTEMS_INLINE_ROUTINE bool rtems_chain_is_empty( } /** - * @brief Is this the First Node on the Chain + * @brief Is this the first node on the chain. * - * This function returns true if the_node is the first node on a chain and - * false otherwise. + * This function returns true if the_node is the first node on a chain and + * false otherwise. * - * @param[in] the_node is the node the caller wants to know if it is - * the first node on a chain. + * @param[in] the_node is the node the caller wants to know if it is + * the first node on a chain. * - * @return This function returns true if @a the_node is the first node on - * a chain and false otherwise. + * @retval true @a the_node is the first node on a chain. + * @retval false @a the_node is not the first node on a chain. */ RTEMS_INLINE_ROUTINE bool rtems_chain_is_first( const rtems_chain_node *the_node @@ -365,15 +370,15 @@ RTEMS_INLINE_ROUTINE bool rtems_chain_is_first( } /** - * @brief Is this the Last Node on the Chain + * @brief Is this the last node on the chain. * - * This function returns true if @a the_node is the last node on a chain and - * false otherwise. + * This function returns true if @a the_node is the last node on a chain and + * false otherwise. * - * @param[in] the_node is the node to check as the last node. + * @param[in] the_node is the node to check as the last node. * - * @return This function returns true if @a the_node is the last node on - * a chain and false otherwise. + * @retval true @a the_node is the last node on a chain. + * @retval false @a the_node is not the last node on a chain */ RTEMS_INLINE_ROUTINE bool rtems_chain_is_last( const rtems_chain_node *the_node @@ -383,15 +388,15 @@ RTEMS_INLINE_ROUTINE bool rtems_chain_is_last( } /** - * @brief Does this Chain have only One Node + * @brief Does this chain have only one node. * - * This function returns true if there is only one node on @a the_chain and - * false otherwise. + * This function returns true if there is only one node on @a the_chain and + * false otherwise. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This function returns true if there is only one node on - * @a the_chain and false otherwise. + * @retval true The chain has only one node. + * @retval false The chain has more than one nodes. */ RTEMS_INLINE_ROUTINE bool rtems_chain_has_only_one_node( const rtems_chain_control *the_chain @@ -401,16 +406,16 @@ RTEMS_INLINE_ROUTINE bool rtems_chain_has_only_one_node( } /** - * @brief Is this Node the Chain Head + * @brief Is this node the chain head. * - * This function returns true if @a the_node is the head of the_chain and - * false otherwise. + * This function returns true if @a the_node is the head of the_chain and + * false otherwise. * - * @param[in] the_chain is the chain to be operated upon. - * @param[in] the_node is the node to check for being the Chain Head. + * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_node is the node to check for being the Chain Head. * - * @return This function returns true if @a the_node is the head of - * @a the_chain and false otherwise. + * @retval true @a the_node is the head of @a the_chain. + * @retval false @a the_node is not the head of @a the_chain. */ RTEMS_INLINE_ROUTINE bool rtems_chain_is_head( const rtems_chain_control *the_chain, @@ -421,13 +426,16 @@ RTEMS_INLINE_ROUTINE bool rtems_chain_is_head( } /** - * @brief Is this Node the Chail Tail + * @brief Is this node the chain tail. * - * This function returns true if the_node is the tail of the_chain and - * false otherwise. + * This function returns true if the_node is the tail of the_chain and + * false otherwise. * - * @param[in] the_chain is the chain to be operated upon. - * @param[in] the_node is the node to check for being the Chain Tail. + * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_node is the node to check for being the Chain Tail. + * + * @retval true @a the_node is the tail of @a the_chain. + * @retval false @a the_node is not the tail of @a the_chain. */ RTEMS_INLINE_ROUTINE bool rtems_chain_is_tail( const rtems_chain_control *the_chain, @@ -438,13 +446,13 @@ RTEMS_INLINE_ROUTINE bool rtems_chain_is_tail( } /** - * @brief Extract the specified node from a chain + * @brief Extract the specified node from a chain. * - * This routine extracts @a the_node from the chain on which it resides. - * It disables interrupts to ensure the atomicity of the - * extract operation. + * This routine extracts @a the_node from the chain on which it resides. + * It disables interrupts to ensure the atomicity of the + * extract operation. * - * @arg the_node specifies the node to extract + * @arg the_node specifies the node to extract */ RTEMS_INLINE_ROUTINE void rtems_chain_extract( rtems_chain_node *the_node @@ -454,12 +462,12 @@ RTEMS_INLINE_ROUTINE void rtems_chain_extract( } /** - * @brief Extract the specified node from a chain (unprotected). + * @brief Extract the specified node from a chain (unprotected). * - * This routine extracts @a the_node from the chain on which it resides. + * This routine extracts @a the_node from the chain on which it resides. * - * @note It does NOT disable interrupts to ensure the atomicity of the - * append operation. + * NOTE: It does NOT disable interrupts to ensure the atomicity of the + * append operation. */ RTEMS_INLINE_ROUTINE void rtems_chain_extract_unprotected( rtems_chain_node *the_node @@ -469,16 +477,16 @@ RTEMS_INLINE_ROUTINE void rtems_chain_extract_unprotected( } /** - * @brief Obtain the first node on a chain + * @brief Obtain the first node on a chain. * - * This function removes the first node from @a the_chain and returns - * a pointer to that node. If @a the_chain is empty, then NULL is returned. + * This function removes the first node from @a the_chain and returns + * a pointer to that node. If @a the_chain is empty, then NULL is returned. * - * @return This method returns a pointer a node. If a node was removed, - * then a pointer to that node is returned. If @a the_chain was - * empty, then NULL is returned. + * @return This method returns a pointer a node. If a node was removed, + * then a pointer to that node is returned. If @a the_chain was + * empty, then NULL is returned. * - * @note It disables interrupts to ensure the atomicity of the get operation. + * NOTE: It disables interrupts to ensure the atomicity of the get operation. */ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get( rtems_chain_control *the_chain @@ -498,13 +506,13 @@ RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get_unprotected( } /** - * @brief Insert a node on a chain + * @brief Insert a node on a chain * - * This routine inserts @a the_node on a chain immediately following - * @a after_node. + * This routine inserts @a the_node on a chain immediately following + * @a after_node. * - * @note It disables interrupts to ensure the atomicity - * of the extract operation. + * NOTE: It disables interrupts to ensure the atomicity + * of the extract operation. */ RTEMS_INLINE_ROUTINE void rtems_chain_insert( rtems_chain_node *after_node, @@ -526,12 +534,12 @@ RTEMS_INLINE_ROUTINE void rtems_chain_insert_unprotected( } /** - * @brief Append a node on the end of a chain + * @brief Append a node on the end of a chain. * - * This routine appends @a the_node onto the end of @a the_chain. + * This routine appends @a the_node onto the end of @a the_chain. * - * @note It disables interrupts to ensure the atomicity of the - * append operation. + * NOTE: It disables interrupts to ensure the atomicity of the + * append operation. */ RTEMS_INLINE_ROUTINE void rtems_chain_append( rtems_chain_control *the_chain, @@ -542,12 +550,12 @@ RTEMS_INLINE_ROUTINE void rtems_chain_append( } /** - * @brief Append a node on the end of a chain (unprotected) + * @brief Append a node on the end of a chain (unprotected). * - * This routine appends @a the_node onto the end of @a the_chain. + * This routine appends @a the_node onto the end of @a the_chain. * - * @note It does NOT disable interrupts to ensure the atomicity of the - * append operation. + * NOTE: It does NOT disable interrupts to ensure the atomicity of the + * append operation. */ RTEMS_INLINE_ROUTINE void rtems_chain_append_unprotected( rtems_chain_control *the_chain, @@ -557,15 +565,16 @@ RTEMS_INLINE_ROUTINE void rtems_chain_append_unprotected( _Chain_Append_unprotected( the_chain, the_node ); } -/** @brief Prepend a Node +/** + * @brief Prepend a node. * - * This routine prepends the_node onto the front of the_chain. + * This routine prepends the_node onto the front of the_chain. * - * @param[in] the_chain is the chain to be operated upon. - * @param[in] the_node is the node to be prepended. + * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_node is the node to be prepended. * - * @note It disables interrupts to ensure the atomicity of the - * prepend operation. + * NOTE: It disables interrupts to ensure the atomicity of the + * prepend operation. */ RTEMS_INLINE_ROUTINE void rtems_chain_prepend( rtems_chain_control *the_chain, @@ -575,15 +584,16 @@ RTEMS_INLINE_ROUTINE void rtems_chain_prepend( _Chain_Prepend( the_chain, the_node ); } -/** @brief Prepend a Node (unprotected) +/** + * @brief Prepend a node (unprotected). * - * This routine prepends the_node onto the front of the_chain. + * This routine prepends the_node onto the front of the_chain. * - * @param[in] the_chain is the chain to be operated upon. - * @param[in] the_node is the node to be prepended. + * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_node is the node to be prepended. * - * @note It does NOT disable interrupts to ensure the atomicity of the - * prepend operation. + * NOTE: It does NOT disable interrupts to ensure the atomicity of the + * prepend operation. */ RTEMS_INLINE_ROUTINE void rtems_chain_prepend_unprotected( rtems_chain_control *the_chain, diff --git a/cpukit/sapi/inline/rtems/extension.inl b/cpukit/sapi/inline/rtems/extension.inl index 968b62b58e..0d0cfc2320 100644 --- a/cpukit/sapi/inline/rtems/extension.inl +++ b/cpukit/sapi/inline/rtems/extension.inl @@ -3,7 +3,7 @@ * * @ingroup ClassicUserExtensions * - * @brief User Extensions API. + * @brief User Extensions API */ /* diff --git a/cpukit/sapi/inline/rtems/rbtree.inl b/cpukit/sapi/inline/rtems/rbtree.inl index dc53fa0381..20e7aa3890 100644 --- a/cpukit/sapi/inline/rtems/rbtree.inl +++ b/cpukit/sapi/inline/rtems/rbtree.inl @@ -1,18 +1,20 @@ /** - * @file rtems/rbtree.inl + * @file + * + * @brief Constants and Structures Associated with the RBTree API in RTEMS * - * This include file contains all the constants and structures associated - * with the RBTree API in RTEMS. The rbtree is a Red Black Tree that - * is part of the Super Core. This is the published interface to that - * code. + * This include file contains all the constants and structures associated + * with the RBTree API in RTEMS. The rbtree is a Red Black Tree that + * is part of the Super Core. This is the published interface to that + * code. */ /* - * Copyright (c) 2010-2012 Gedare Bloom. + * Copyright (c) 2010-2012 Gedare Bloom. * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef _RTEMS_RBTREE_H @@ -25,11 +27,11 @@ #include <rtems/score/rbtree.inl> /** - * @brief Initialize a RBTree Header + * @brief Initialize a RBTree header. * - * This routine initializes @a the_rbtree structure to manage the - * contiguous array of @a number_nodes nodes which starts at - * @a starting_address. Each node is of @a node_size bytes. + * This routine initializes @a the_rbtree structure to manage the + * contiguous array of @a number_nodes nodes which starts at + * @a starting_address. Each node is of @a node_size bytes. */ RTEMS_INLINE_ROUTINE void rtems_rbtree_initialize( rtems_rbtree_control *the_rbtree, @@ -45,9 +47,9 @@ RTEMS_INLINE_ROUTINE void rtems_rbtree_initialize( } /** - * @brief Initialize this RBTree as Empty + * @brief Initialize this RBTree as Empty * - * This routine initializes @a the_rbtree to contain zero nodes. + * This routine initializes @a the_rbtree to contain zero nodes. */ RTEMS_INLINE_ROUTINE void rtems_rbtree_initialize_empty( rtems_rbtree_control *the_rbtree, @@ -59,10 +61,10 @@ RTEMS_INLINE_ROUTINE void rtems_rbtree_initialize_empty( } /** - * @brief Set off rbtree + * @brief Set off RBtree. * - * This function sets the next and previous fields of the @a node to NULL - * indicating the @a node is not part of any rbtree. + * This function sets the next and previous fields of the @a node to NULL + * indicating the @a node is not part of any rbtree. */ RTEMS_INLINE_ROUTINE void rtems_rbtree_set_off_rbtree( rtems_rbtree_node *node @@ -72,10 +74,10 @@ RTEMS_INLINE_ROUTINE void rtems_rbtree_set_off_rbtree( } /** - * @brief Is the Node off RBTree + * @brief Is the Node off RBTree. * - * This function returns true if the @a node is not on a rbtree. A @a node is - * off rbtree if the next and previous fields are set to NULL. + * This function returns true if the @a node is not on a rbtree. A @a node is + * off rbtree if the next and previous fields are set to NULL. */ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_node_off_rbtree( const rtems_rbtree_node *node @@ -85,9 +87,9 @@ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_node_off_rbtree( } /** - * @brief Is the RBTree Node Pointer NULL + * @brief Is the RBTree Node Pointer NULL. * - * This function returns true if @a the_node is NULL and false otherwise. + * This function returns true if @a the_node is NULL and false otherwise. */ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_null_node( const rtems_rbtree_node *the_node @@ -97,9 +99,9 @@ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_null_node( } /** - * @brief Return pointer to RBTree Root + * @brief Return pointer to RBTree root. * - * This function returns a pointer to the root node of @a the_rbtree. + * This function returns a pointer to the root node of @a the_rbtree. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_root( const rtems_rbtree_control *the_rbtree @@ -109,9 +111,9 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_root( } /** - * @brief Return pointer to RBTree Minimum + * @brief Return pointer to RBTree Minimum * - * This function returns a pointer to the minimum node of @a the_rbtree. + * This function returns a pointer to the minimum node of @a the_rbtree. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_min( const rtems_rbtree_control *the_rbtree @@ -121,9 +123,9 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_min( } /** - * @brief Return pointer to RBTree Maximum + * @brief Return pointer to RBTree maximum. * - * This function returns a pointer to the maximum node of @a the_rbtree. + * This function returns a pointer to the maximum node of @a the_rbtree. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_max( const rtems_rbtree_control *the_rbtree @@ -133,9 +135,9 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_max( } /** - * @brief Return pointer to the left child node from this node + * @brief Return pointer to the left child node from this node. * - * This function returns a pointer to the left child node of @a the_node. + * This function returns a pointer to the left child node of @a the_node. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_left( const rtems_rbtree_node *the_node @@ -145,9 +147,9 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_left( } /** - * @brief Return pointer to the right child node from this node + * @brief Return pointer to the right child node from this node. * - * This function returns a pointer to the right child node of @a the_node. + * This function returns a pointer to the right child node of @a the_node. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_right( const rtems_rbtree_node *the_node @@ -157,9 +159,9 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_right( } /** - * @brief Return pointer to the parent child node from this node + * @brief Return pointer to the parent child node from this node. * - * This function returns a pointer to the parent node of @a the_node. + * This function returns a pointer to the parent node of @a the_node. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_parent( const rtems_rbtree_node *the_node @@ -169,10 +171,10 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_parent( } /** - * @brief Are Two Nodes Equal + * @brief Are two nodes equal. * - * This function returns true if @a left and @a right are equal, - * and false otherwise. + * This function returns true if @a left and @a right are equal, + * and false otherwise. */ RTEMS_INLINE_ROUTINE bool rtems_rbtree_are_nodes_equal( const rtems_rbtree_node *left, @@ -183,10 +185,10 @@ RTEMS_INLINE_ROUTINE bool rtems_rbtree_are_nodes_equal( } /** - * @brief Is the RBTree Empty + * @brief Is the RBTree empty. * - * This function returns true if there a no nodes on @a the_rbtree and - * false otherwise. + * This function returns true if there a no nodes on @a the_rbtree and + * false otherwise. */ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_empty( const rtems_rbtree_control *the_rbtree @@ -196,10 +198,10 @@ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_empty( } /** - * @brief Is this the Minimum Node on the RBTree + * @brief Is this the minimum node on the RBTree. * - * This function returns true if @a the_node is the min node on @a the_rbtree - * and false otherwise. + * This function returns true if @a the_node is the min node on @a the_rbtree + * and false otherwise. */ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_min( const rtems_rbtree_control *the_rbtree, @@ -210,10 +212,10 @@ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_min( } /** - * @brief Is this the Maximum Node on the RBTree + * @brief Is this the maximum node on the RBTree. * - * This function returns true if @a the_node is the max node on @a the_rbtree - * and false otherwise. + * This function returns true if @a the_node is the max node on @a the_rbtree + * and false otherwise. */ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_max( const rtems_rbtree_control *the_rbtree, @@ -225,10 +227,10 @@ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_max( /** - * @brief Does this RBTree have only One Node + * @brief Does this RBTree have only one node. * - * This function returns true if there is only one node on @a the_rbtree and - * false otherwise. + * This function returns true if there is only one node on @a the_rbtree and + * false otherwise. */ RTEMS_INLINE_ROUTINE bool rtems_rbtree_has_only_one_node( const rtems_rbtree_control *the_rbtree @@ -238,10 +240,10 @@ RTEMS_INLINE_ROUTINE bool rtems_rbtree_has_only_one_node( } /** - * @brief Is this Node the RBTree Root + * @brief Is this node the RBTree root. * - * This function returns true if @a the_node is the root of @a the_rbtree and - * false otherwise. + * This function returns true if @a the_node is the root of @a the_rbtree and + * false otherwise. */ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_root( const rtems_rbtree_control *the_rbtree, @@ -255,25 +257,25 @@ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_root( * @copydoc _RBTree_Find_unprotected() */ RTEMS_INLINE_ROUTINE rtems_rbtree_node* rtems_rbtree_find_unprotected( - rtems_rbtree_control *the_rbtree, - rtems_rbtree_node *the_node + const rtems_rbtree_control *the_rbtree, + const rtems_rbtree_node *the_node ) { return _RBTree_Find_unprotected( the_rbtree, the_node ); } -/** @brief Find the node with given key in the tree +/** @brief Find the node with given key in the tree. * - * This function returns a pointer to the node having key equal to the key - * of @a the_node if it exists within @a the_rbtree, and NULL if not. - * @a the_node has to be made up before a search. + * This function returns a pointer to the node having key equal to the key + * of @a the_node if it exists within @a the_rbtree, and NULL if not. + * @a the_node has to be made up before a search. * - * @note If the tree is not unique and contains duplicate keys, the set - * of duplicate keys acts as FIFO. + * @note If the tree is not unique and contains duplicate keys, the set + * of duplicate keys acts as FIFO. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node* rtems_rbtree_find( - rtems_rbtree_control *the_rbtree, - rtems_rbtree_node *the_node + const rtems_rbtree_control *the_rbtree, + const rtems_rbtree_node *the_node ) { return _RBTree_Find( the_rbtree, the_node ); @@ -331,10 +333,10 @@ RTEMS_INLINE_ROUTINE void rtems_rbtree_extract_unprotected( } /** - * @brief Extract the specified node from a rbtree + * @brief Extract the specified node from a rbtree. * - * This routine extracts @a the_node from @a the_rbtree on which it resides. - * It disables interrupts to ensure the atomicity of the extract operation. + * This routine extracts @a the_node from @a the_rbtree on which it resides. + * It disables interrupts to ensure the atomicity of the extract operation. */ RTEMS_INLINE_ROUTINE void rtems_rbtree_extract( rtems_rbtree_control *the_rbtree, @@ -345,10 +347,10 @@ RTEMS_INLINE_ROUTINE void rtems_rbtree_extract( } /** - * @brief Obtain the min node on a rbtree + * @brief Obtain the min node on a rbtree. * - * This function removes the min node from @a the_rbtree and returns - * a pointer to that node. If @a the_rbtree is empty, then NULL is returned. + * This function removes the min node from @a the_rbtree and returns + * a pointer to that node. If @a the_rbtree is empty, then NULL is returned. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_min_unprotected( @@ -359,11 +361,11 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_min_unprotected( } /** - * @brief Obtain the min node on a rbtree + * @brief Obtain the min node on a rbtree. * - * This function removes the min node from @a the_rbtree and returns - * a pointer to that node. If @a the_rbtree is empty, then NULL is returned. - * It disables interrupts to ensure the atomicity of the get operation. + * This function removes the min node from @a the_rbtree and returns + * a pointer to that node. If @a the_rbtree is empty, then NULL is returned. + * It disables interrupts to ensure the atomicity of the get operation. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_min( rtems_rbtree_control *the_rbtree @@ -373,10 +375,10 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_min( } /** - * @brief Obtain the max node on a rbtree + * @brief Obtain the max node on a rbtree. * - * This function removes the max node from @a the_rbtree and returns - * a pointer to that node. If @a the_rbtree is empty, then NULL is returned. + * This function removes the max node from @a the_rbtree and returns + * a pointer to that node. If @a the_rbtree is empty, then NULL is returned. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_max_unprotected( @@ -387,11 +389,11 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_max_unprotected( } /** - * @brief Obtain the max node on a rbtree + * @brief Obtain the max node on a rbtree. * - * This function removes the max node from @a the_rbtree and returns - * a pointer to that node. If @a the_rbtree is empty, then NULL is returned. - * It disables interrupts to ensure the atomicity of the get operation. + * This function removes the max node from @a the_rbtree and returns + * a pointer to that node. If @a the_rbtree is empty, then NULL is returned. + * It disables interrupts to ensure the atomicity of the get operation. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_max( rtems_rbtree_control *the_rbtree @@ -401,11 +403,11 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_max( } /** - * @brief Peek at the min node on a rbtree + * @brief Peek at the min node on a rbtree. * - * This function returns a pointer to the min node from @a the_rbtree - * without changing the tree. If @a the_rbtree is empty, - * then NULL is returned. + * This function returns a pointer to the min node from @a the_rbtree + * without changing the tree. If @a the_rbtree is empty, + * then NULL is returned. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_peek_min( const rtems_rbtree_control *the_rbtree @@ -415,11 +417,11 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_peek_min( } /** - * @brief Peek at the max node on a rbtree + * @brief Peek at the max node on a rbtree. * - * This function returns a pointer to the max node from @a the_rbtree - * without changing the tree. If @a the_rbtree is empty, - * then NULL is returned. + * This function returns a pointer to the max node from @a the_rbtree + * without changing the tree. If @a the_rbtree is empty, + * then NULL is returned. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_peek_max( const rtems_rbtree_control *the_rbtree @@ -439,11 +441,11 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_control *rtems_rbtree_find_header_unprotected( } /** - * @brief Find the control header of the tree containing a given node. + * @brief Find the control header of the tree containing a given node. * - * This routine finds the rtems_rbtree_control structure of the tree - * containing @a the_node. - * It disables interrupts to ensure the atomicity of the find operation. + * This routine finds the rtems_rbtree_control structure of the tree + * containing @a the_node. + * It disables interrupts to ensure the atomicity of the find operation. */ RTEMS_INLINE_ROUTINE rtems_rbtree_control *rtems_rbtree_find_header( rtems_rbtree_node *the_node @@ -464,15 +466,15 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_insert_unprotected( } /** - * @brief Insert a node on a rbtree + * @brief Insert a node on a rbtree. * - * This routine inserts @a the_node on @a the_rbtree. - * It disables interrupts to ensure the atomicity of the insert operation. + * This routine inserts @a the_node on @a the_rbtree. + * It disables interrupts to ensure the atomicity of the insert operation. * - * @retval 0 Successfully inserted. - * @retval -1 NULL @a the_node. - * @retval RBTree_Node* if one with equal key to the key of @a the_node exists - * in an unique @a the_rbtree. + * @retval 0 Successfully inserted. + * @retval -1 NULL @a the_node. + * @retval RBTree_Node* if one with equal key to the key of @a the_node exists + * in an unique @a the_rbtree. */ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_insert( rtems_rbtree_control *the_rbtree, @@ -482,7 +484,8 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_insert( return _RBTree_Insert( the_rbtree, the_node ); } -/** @brief Determines whether the tree is unique +/** + * @brief Determines whether the tree is unique. */ RTEMS_INLINE_ROUTINE bool rtems_rbtree_is_unique( const rtems_rbtree_control *the_rbtree diff --git a/cpukit/sapi/inline/rtems/timespec.inl b/cpukit/sapi/inline/rtems/timespec.inl index 9874b65153..31d445c45d 100644 --- a/cpukit/sapi/inline/rtems/timespec.inl +++ b/cpukit/sapi/inline/rtems/timespec.inl @@ -1,9 +1,7 @@ /** - * @file rtems/sapi/timespec.inl + * @file * - * @ingroup - * - * @brief Timespec API. + * @brief Timespec API */ /* @@ -26,19 +24,18 @@ /** * @addtogroup TimespecAPI Timespec - * - * @{ */ +/**@{**/ /** - * @brief Is Timespec Valid + * @brief Is timespec valid * - * This method determines the validity of a timespec. + * This method determines the validity of a timespec. * - * @param[in] time is the timespec instance to validate. + * @param[in] time is the timespec instance to validate. * - * @return This method returns true if @a time is valid and - * false otherwise. + * @retval true The timespec is valid. + * @retval false The timespec is not valid. */ RTEMS_INLINE_ROUTINE bool rtems_timespec_is_valid( const struct timespec *time @@ -48,15 +45,16 @@ RTEMS_INLINE_ROUTINE bool rtems_timespec_is_valid( } /** - * @brief Timespec Less Than Operator + * @brief Timespec less than operator. * - * This method is the less than operator for timespecs. + * This method is the less than operator for timespecs. * - * @param[in] lhs is the left hand side timespec - * @param[in] rhs is the right hand side timespec + * @param[in] lhs is the left hand side timespec + * @param[in] rhs is the right hand side timespec * - * @return This method returns true if @a lhs is less than the @a rhs and - * false otherwise. + * @retval true @a lhs is less than @a rhs. + * @retval false @a lhs is not less than @a rhs. + * */ RTEMS_INLINE_ROUTINE bool rtems_timespec_less_than( const struct timespec *lhs, @@ -67,15 +65,15 @@ RTEMS_INLINE_ROUTINE bool rtems_timespec_less_than( } /** - * @brief Add to a Timespec + * @brief Add to a timespec. * - * This routine adds two timespecs. The second argument is added - * to the first. + * This routine adds two timespecs. The second argument is added + * to the first. * - * @param[in] time is the base time to be added to - * @param[in] add is the timespec to add to the first argument + * @param[in] time is the base time to be added to + * @param[in] add is the timespec to add to the first argument * - * @return This method returns the number of seconds @a time increased by. + * @return This method returns the number of seconds @a time increased by. */ RTEMS_INLINE_ROUTINE uint32_t rtems_timespec_add_to( struct timespec *time, @@ -86,14 +84,14 @@ RTEMS_INLINE_ROUTINE uint32_t rtems_timespec_add_to( } /** - * @brief Convert Timespec to Number of Ticks + * @brief Convert timespec to number of ticks. * - * This routine convert the @a time timespec to the corresponding number - * of clock ticks. + * This routine convert the @a time timespec to the corresponding number + * of clock ticks. * - * @param[in] time is the time to be converted + * @param[in] time is the time to be converted * - * @return This method returns the number of ticks computed. + * @return This method returns the number of ticks computed. */ RTEMS_INLINE_ROUTINE uint32_t rtems_timespec_to_ticks( const struct timespec *time @@ -103,13 +101,13 @@ RTEMS_INLINE_ROUTINE uint32_t rtems_timespec_to_ticks( } /** - * @brief Convert Ticks to Timespec + * @brief Convert ticks to timespec. * - * This routine converts the @a ticks value to the corresponding - * timespec format @a time. + * This routine converts the @a ticks value to the corresponding + * timespec format @a time. * - * @param[in] time is the timespec format time result - * @param[in] ticks is the number of ticks to convert + * @param[in] time is the timespec format time result + * @param[in] ticks is the number of ticks to convert */ RTEMS_INLINE_ROUTINE void rtems_timespec_from_ticks( @@ -121,16 +119,16 @@ RTEMS_INLINE_ROUTINE void rtems_timespec_from_ticks( } /** - * @brief Subtract Two Timespec + * @brief Subtract two timespec. * - * This routine subtracts two timespecs. @a result is set to - * @a end - @a start. + * This routine subtracts two timespecs. @a result is set to + * @a end - @a start. * - * @param[in] start is the starting time - * @param[in] end is the ending time - * @param[in] result is the difference between starting and ending time. + * @param[in] start is the starting time + * @param[in] end is the ending time + * @param[in] result is the difference between starting and ending time. * - * @return This method fills in @a result. + * @return This method fills in @a result. */ RTEMS_INLINE_ROUTINE void rtems_timespec_subtract( const struct timespec *start, @@ -142,17 +140,17 @@ RTEMS_INLINE_ROUTINE void rtems_timespec_subtract( } /** - * @brief Divide Timespec By Integer + * @brief Divide timespec by integer. * - * This routine divides a timespec by an integer value. The expected - * use is to assist in benchmark calculations where you typically - * divide a duration by a number of iterations. + * This routine divides a timespec by an integer value. The expected + * use is to assist in benchmark calculations where you typically + * divide a duration by a number of iterations. * - * @param[in] time is the total - * @param[in] iterations is the number of iterations - * @param[in] result is the average time. + * @param[in] time is the total + * @param[in] iterations is the number of iterations + * @param[in] result is the average time. * - * @return This method fills in @a result. + * @return This method fills in @a result. */ RTEMS_INLINE_ROUTINE void rtems_timespec_divide_by_integer( const struct timespec *time, @@ -164,17 +162,17 @@ RTEMS_INLINE_ROUTINE void rtems_timespec_divide_by_integer( } /** - * @brief Divide Timespec + * @brief Divide timespec. * - * This routine divides a timespec by another timespec. The - * intended use is for calculating percentages to three decimal points. + * This routine divides a timespec by another timespec. The + * intended use is for calculating percentages to three decimal points. * - * @param[in] lhs is the left hand number - * @param[in] rhs is the right hand number - * @param[in] ival_percentage is the integer portion of the average - * @param[in] fval_percentage is the thousandths of percentage + * @param[in] lhs is the left hand number + * @param[in] rhs is the right hand number + * @param[in] ival_percentage is the integer portion of the average + * @param[in] fval_percentage is the thousandths of percentage * - * @return This method fills in @a result. + * @return This method fills in @a result. */ RTEMS_INLINE_ROUTINE void rtems_timespec_divide( const struct timespec *lhs, @@ -187,14 +185,14 @@ RTEMS_INLINE_ROUTINE void rtems_timespec_divide( } /** - * @brief Set Timespec to Seconds Nanosecond + * @brief Set timespec to seconds nanosecond. * - * This method sets the timespec to the specified seconds and nanoseconds - * value. + * This method sets the timespec to the specified seconds and nanoseconds + * value. * - * @param[in] _time points to the timespec instance to validate. - * @param[in] _seconds is the seconds portion of the timespec - * @param[in] _nanoseconds is the nanoseconds portion of the timespec + * @param[in] _time points to the timespec instance to validate. + * @param[in] _seconds is the seconds portion of the timespec + * @param[in] _nanoseconds is the nanoseconds portion of the timespec */ RTEMS_INLINE_ROUTINE void rtems_timespec_set( struct timespec *_time, @@ -206,12 +204,12 @@ RTEMS_INLINE_ROUTINE void rtems_timespec_set( } /** - * @brief Zero Timespec + * @brief Zero timespec. * - * This method sets the timespec to zero. - * value. + * This method sets the timespec to zero. + * value. * - * @param[in] _time points to the timespec instance to zero. + * @param[in] _time points to the timespec instance to zero. */ RTEMS_INLINE_ROUTINE void rtems_timespec_zero( struct timespec *_time @@ -221,13 +219,13 @@ RTEMS_INLINE_ROUTINE void rtems_timespec_zero( } /** - * @brief Get Seconds Portion of Timespec + * @brief Get seconds portion of timespec. * - * This method returns the seconds portion of the specified timespec + * This method returns the seconds portion of the specified timespec * - * @param[in] _time points to the timespec + * @param[in] _time points to the timespec * - * @return The seconds portion of @a _time. + * @return The seconds portion of @a _time. */ RTEMS_INLINE_ROUTINE time_t rtems_timespec_get_seconds( struct timespec *_time @@ -237,13 +235,13 @@ RTEMS_INLINE_ROUTINE time_t rtems_timespec_get_seconds( } /** - * @brief Get Nanoseconds Portion of Timespec + * @brief Get nanoseconds portion of timespec. * - * This method returns the nanoseconds portion of the specified timespec + * This method returns the nanoseconds portion of the specified timespec * - * @param[in] _time points to the timespec + * @param[in] _time points to the timespec * - * @return The nanoseconds portion of @a _time. + * @return The nanoseconds portion of @a _time. */ RTEMS_INLINE_ROUTINE uint32_t rtems_timespec_get_nanoseconds( struct timespec *_time @@ -252,17 +250,16 @@ RTEMS_INLINE_ROUTINE uint32_t rtems_timespec_get_nanoseconds( return _Timespec_Get_nanoseconds( _time ); } - /** - * @brief Timespec Greater Than Operator + * @brief Timespec greater than operator. * - * This method is the greater than operator for timespecs. + * This method is the greater than operator for timespecs. * - * @param[in] lhs is the left hand side timespec - * @param[in] rhs is the right hand side timespec + * @param[in] _lhs is the left hand side timespec + * @param[in] _rhs is the right hand side timespec * - * @return This method returns true if @a lhs is greater than the @a rhs and - * false otherwise. + * @retval true @a _lhs is greater than @a _rhs. + * @retval false @a _lhs is not greater than @a _rhs. */ RTEMS_INLINE_ROUTINE bool rtems_timespec_greater_than( const struct timespec *_lhs, @@ -274,13 +271,13 @@ RTEMS_INLINE_ROUTINE bool rtems_timespec_greater_than( /** * @brief Timespec equal to Operator * - * This method is the is equal to than operator for timespecs. + * This method is the is equal to than operator for timespecs. * - * @param[in] lhs is the left hand side timespec - * @param[in] rhs is the right hand side timespec + * @param[in] lhs is the left hand side timespec + * @param[in] rhs is the right hand side timespec * - * @return This method returns true if @a lhs is equal to @a rhs and - * false otherwise. + * @retval true @a lhs is equal to @a rhs. + * @retval false @a lhs is not equal to @a rhs. */ RTEMS_INLINE_ROUTINE bool rtems_timespec_equal_to( const struct timespec *lhs, diff --git a/cpukit/sapi/src/fatalsrcdesc.c b/cpukit/sapi/src/fatalsrcdesc.c new file mode 100644 index 0000000000..fbe8485853 --- /dev/null +++ b/cpukit/sapi/src/fatalsrcdesc.c @@ -0,0 +1,53 @@ +/** + * @file + * + * @brief Implementation of rtems_fatal_source_description() + * + * @ingroup ClassicFatal + */ + +/* + * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#if HAVE_CONFIG_H + #include "config.h" +#endif + +#include <rtems/fatal.h> + +static const char *const fatal_source_desc [] = { + "INTERNAL_ERROR_CORE", + "INTERNAL_ERROR_RTEMS_API", + "INTERNAL_ERROR_POSIX_API", + "RTEMS_FATAL_SOURCE_BDBUF", + "RTEMS_FATAL_SOURCE_APPLICATION", + "RTEMS_FATAL_SOURCE_EXIT", + "RTEMS_FATAL_SOURCE_BSP_GENERIC", + "RTEMS_FATAL_SOURCE_BSP_SPECIFIC", + "RTEMS_FATAL_SOURCE_ASSERT", + "RTEMS_FATAL_SOURCE_STACK_CHECKER", + "RTEMS_FATAL_SOURCE_EXCEPTION" +}; + +const char *rtems_fatal_source_description( rtems_fatal_source source ) +{ + size_t i = source; + const char *desc = "?"; + + if ( i < RTEMS_ARRAY_SIZE( fatal_source_desc ) ) { + desc = fatal_source_desc [i]; + } + + return desc; +} diff --git a/cpukit/score/cpu/arm/Makefile.am b/cpukit/score/cpu/arm/Makefile.am index f0ddbd679b..56a5fdd465 100644 --- a/cpukit/score/cpu/arm/Makefile.am +++ b/cpukit/score/cpu/arm/Makefile.am @@ -6,6 +6,7 @@ include_rtems_scoredir = $(includedir)/rtems/score include_rtems_score_HEADERS = rtems/score/cpu.h include_rtems_score_HEADERS += rtems/score/cpu_asm.h include_rtems_score_HEADERS += rtems/score/arm.h +include_rtems_score_HEADERS += rtems/score/armv4.h include_rtems_score_HEADERS += rtems/score/armv7m.h include_rtems_score_HEADERS += rtems/score/types.h @@ -19,10 +20,12 @@ libscorecpu_a_SOURCES += arm_exc_interrupt.S libscorecpu_a_SOURCES += arm_exc_handler_low.S libscorecpu_a_SOURCES += arm_exc_handler_high.c libscorecpu_a_SOURCES += arm-exception-frame-print.c +libscorecpu_a_SOURCES += arm-exception-default.c +libscorecpu_a_SOURCES += armv4-exception-default.S libscorecpu_a_SOURCES += armv7m-context-initialize.c libscorecpu_a_SOURCES += armv7m-context-restore.c libscorecpu_a_SOURCES += armv7m-context-switch.c -libscorecpu_a_SOURCES += armv7m-exception-frame-print.c +libscorecpu_a_SOURCES += armv7m-exception-default.c libscorecpu_a_SOURCES += armv7m-exception-handler-get.c libscorecpu_a_SOURCES += armv7m-exception-handler-set.c libscorecpu_a_SOURCES += armv7m-exception-priority-get.c diff --git a/cpukit/score/cpu/arm/armv7m-exception-frame-print.c b/cpukit/score/cpu/arm/arm-exception-default.c index 86931b2b24..ec29f23431 100644 --- a/cpukit/score/cpu/arm/armv7m-exception-frame-print.c +++ b/cpukit/score/cpu/arm/arm-exception-default.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 embedded brains GmbH. All rights reserved. + * Copyright (c) 2013 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Obere Lagerstr. 30 @@ -17,12 +17,9 @@ #endif #include <rtems/score/cpu.h> +#include <rtems/fatal.h> -#ifdef ARM_MULTILIB_ARCH_V7M - -void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ) +void _ARM_Exception_default( CPU_Exception_frame *frame ) { - /* TODO */ + rtems_fatal( RTEMS_FATAL_SOURCE_EXCEPTION, (rtems_fatal_code) frame ); } - -#endif /* ARM_MULTILIB_ARCH_V7M */ diff --git a/cpukit/score/cpu/arm/arm-exception-frame-print.c b/cpukit/score/cpu/arm/arm-exception-frame-print.c index 4d89f69f76..53d31adb73 100644 --- a/cpukit/score/cpu/arm/arm-exception-frame-print.c +++ b/cpukit/score/cpu/arm/arm-exception-frame-print.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 embedded brains GmbH. All rights reserved. + * Copyright (c) 2012-2013 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Obere Lagerstr. 30 @@ -17,12 +17,46 @@ #endif #include <rtems/score/cpu.h> - -#ifdef ARM_MULTILIB_ARCH_V4 +#include <rtems/bspIo.h> void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ) { - /* TODO */ + printk( + "\n" + "R0 = 0x%08x R8 = 0x%08x\n" + "R1 = 0x%08x R9 = 0x%08x\n" + "R2 = 0x%08x R10 = 0x%08x\n" + "R3 = 0x%08x R11 = 0x%08x\n" + "R4 = 0x%08x R12 = 0x%08x\n" + "R5 = 0x%08x SP = 0x%08x\n" + "R6 = 0x%08x LR = 0x%08x\n" + "R7 = 0x%08x PC = 0x%08x\n" +#if defined(ARM_MULTILIB_ARCH_V4) + "CPSR = 0x%08x VEC = 0x%08x\n", +#elif defined(ARM_MULTILIB_ARCH_V7M) + "XPSR = 0x%08x VEC = 0x%08x\n", +#endif + frame->register_r0, + frame->register_r1, + frame->register_r2, + frame->register_r3, + frame->register_r4, + frame->register_r5, + frame->register_r6, + frame->register_r7, + frame->register_r8, + frame->register_r9, + frame->register_r10, + frame->register_r11, + frame->register_r12, + frame->register_sp, + frame->register_lr, + frame->register_pc, +#if defined(ARM_MULTILIB_ARCH_V4) + frame->register_cpsr, +#elif defined(ARM_MULTILIB_ARCH_V7M) + frame->register_xpsr, +#endif + frame->vector + ); } - -#endif /* ARM_MULTILIB_ARCH_V4 */ diff --git a/cpukit/score/cpu/arm/arm_exc_abort.S b/cpukit/score/cpu/arm/arm_exc_abort.S index 59ab5d2988..f4cf6724b8 100644 --- a/cpukit/score/cpu/arm/arm_exc_abort.S +++ b/cpukit/score/cpu/arm/arm_exc_abort.S @@ -28,13 +28,13 @@ #ifdef ARM_MULTILIB_ARCH_V4 -.extern rtems_fatal_error_occurred +.extern _ARM_Exception_default -.globl arm_exc_data_abort_set_handler -.globl arm_exc_data_abort +.globl _ARMV4_Exception_data_abort_set_handler +.globl _ARMV4_Exception_data_abort -.globl arm_exc_prefetch_abort_set_handler -.globl arm_exc_prefetch_abort +.globl _ARMV4_Exception_prefetch_abort_set_handler +.globl _ARMV4_Exception_prefetch_abort .section ".bss" @@ -50,7 +50,7 @@ prefetch_abort_handler: .thumb_func #endif -arm_exc_data_abort_set_handler: +_ARMV4_Exception_data_abort_set_handler: ldr r1, =data_abort_handler str r0, [r1] #ifdef __thumb__ @@ -63,7 +63,7 @@ arm_exc_data_abort_set_handler: .thumb_func #endif -arm_exc_prefetch_abort_set_handler: +_ARMV4_Exception_prefetch_abort_set_handler: ldr r1, =prefetch_abort_handler str r0, [r1] #ifdef __thumb__ @@ -74,20 +74,22 @@ arm_exc_prefetch_abort_set_handler: .arm -arm_exc_prefetch_abort: +_ARMV4_Exception_prefetch_abort: /* Save context and load handler */ - sub sp, #16 + sub sp, #20 stmdb sp!, {r0-r12} + mov r4, #3 ldr r6, =prefetch_abort_handler b save_more_context -arm_exc_data_abort: +_ARMV4_Exception_data_abort: /* Save context and load handler */ - sub sp, #16 + sub sp, #20 stmdb sp!, {r0-r12} + mov r4, #4 ldr r6, =data_abort_handler save_more_context: @@ -95,22 +97,21 @@ save_more_context: /* Save more context */ mov r2, lr mrs r3, spsr - mrs r4, cpsr + mrs r7, cpsr orr r5, r3, #ARM_PSR_I bic r5, #ARM_PSR_T msr cpsr, r5 mov r0, sp mov r1, lr - msr cpsr, r4 - add r5, sp, #68 - stmdb r5!, {r0-r3} + msr cpsr, r7 + add r5, sp, #72 + stmdb r5!, {r0-r4} /* Call high level handler */ ldr r2, [r6] cmp r2, #0 - ldreq r2, =rtems_fatal_error_occurred - movne r0, sp - moveq r0, #0xaa + ldreq r2, =_ARM_Exception_default + mov r0, sp #ifndef __thumb__ mov lr, pc mov pc, r2 @@ -121,11 +122,11 @@ save_more_context: #endif /* __thumb__ */ /* Restore context */ - ldmia r5!, {r0-r3} + ldmia r5!, {r0-r4} mov lr, r2 msr spsr, r3 ldmia sp!, {r0-r12} - add sp, #16 + add sp, #20 /* Return from interrupt */ subs pc, lr, #8 diff --git a/cpukit/score/cpu/arm/arm_exc_handler_high.c b/cpukit/score/cpu/arm/arm_exc_handler_high.c index 5f0fdd05f1..9e9449bdd8 100644 --- a/cpukit/score/cpu/arm/arm_exc_handler_high.c +++ b/cpukit/score/cpu/arm/arm_exc_handler_high.c @@ -42,7 +42,7 @@ static void _defaultExcHandler (CPU_Exception_frame *ctx) printk("----------------------------------------------------------\n\r"); #if 1 printk("Exception 0x%x caught at PC 0x%x by thread %d\n", - ctx->register_ip, ctx->register_lr - 4, + ctx->vector, ctx->register_lr - 4, _Thread_Executing->Object.id); #endif printk("----------------------------------------------------------\n\r"); diff --git a/cpukit/score/cpu/arm/arm_exc_interrupt.S b/cpukit/score/cpu/arm/arm_exc_interrupt.S index 8d7cfbc1c2..82f3007f5c 100644 --- a/cpukit/score/cpu/arm/arm_exc_interrupt.S +++ b/cpukit/score/cpu/arm/arm_exc_interrupt.S @@ -50,8 +50,8 @@ .extern bsp_interrupt_dispatch .arm -.globl arm_exc_interrupt -arm_exc_interrupt: +.globl _ARMV4_Exception_interrupt +_ARMV4_Exception_interrupt: /* Save exchange registers to exchange area */ stmdb sp, EXCHANGE_LIST diff --git a/cpukit/score/cpu/arm/armv4-exception-default.S b/cpukit/score/cpu/arm/armv4-exception-default.S new file mode 100644 index 0000000000..e5520d5817 --- /dev/null +++ b/cpukit/score/cpu/arm/armv4-exception-default.S @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include <rtems/asm.h> +#include <rtems/system.h> + +#ifdef ARM_MULTILIB_ARCH_V4 + +.extern _ARM_Exception_default + +.globl _ARMV4_Exception_undef_default +.globl _ARMV4_Exception_swi_default +.globl _ARMV4_Exception_data_abort_default +.globl _ARMV4_Exception_pref_abort_default +.globl _ARMV4_Exception_reserved_default +.globl _ARMV4_Exception_irq_default +.globl _ARMV4_Exception_fiq_default + +.section ".text" + +.arm + +_ARMV4_Exception_undef_default: + + /* Save context and load vector */ + sub sp, #20 + stmdb sp!, {r0-r12} + mov r4, #1 + + b save_more_context + +_ARMV4_Exception_swi_default: + + /* Save context and load vector */ + sub sp, #20 + stmdb sp!, {r0-r12} + mov r4, #2 + + b save_more_context + +_ARMV4_Exception_pref_abort_default: + + /* Save context and load vector */ + sub sp, #20 + stmdb sp!, {r0-r12} + mov r4, #3 + + b save_more_context + +_ARMV4_Exception_data_abort_default: + + /* Save context and load vector */ + sub sp, #20 + stmdb sp!, {r0-r12} + mov r4, #4 + +_ARMV4_Exception_reserved_default: + + /* Save context and load vector */ + sub sp, #20 + stmdb sp!, {r0-r12} + mov r4, #5 + +_ARMV4_Exception_irq_default: + + /* Save context and load vector */ + sub sp, #20 + stmdb sp!, {r0-r12} + mov r4, #6 + +_ARMV4_Exception_fiq_default: + + /* Save context and load vector */ + sub sp, #20 + stmdb sp!, {r0-r12} + mov r4, #7 + +save_more_context: + + /* Save more context */ + mov r2, lr + mrs r3, spsr + mrs r7, cpsr + orr r5, r3, #ARM_PSR_I + bic r5, #ARM_PSR_T + msr cpsr, r5 + mov r0, sp + mov r1, lr + msr cpsr, r7 + add r5, sp, #72 + stmdb r5!, {r0-r4} + + /* Call high level handler */ + mov r0, sp + SWITCH_FROM_ARM_TO_THUMB r1 + bl _ARM_Exception_default + + /* Just in case */ +twiddle: + b twiddle + +#endif /* ARM_MULTILIB_ARCH_V4 */ diff --git a/cpukit/score/cpu/arm/armv7m-context-initialize.c b/cpukit/score/cpu/arm/armv7m-context-initialize.c index 640adae03d..892df4d8c8 100644 --- a/cpukit/score/cpu/arm/armv7m-context-initialize.c +++ b/cpukit/score/cpu/arm/armv7m-context-initialize.c @@ -24,12 +24,11 @@ #include <string.h> +#include <rtems/score/armv7m.h> #include <rtems/score/thread.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void _CPU_Context_Initialize( Context_Control *context, void *stack_area_begin, diff --git a/cpukit/score/cpu/arm/armv7m-context-restore.c b/cpukit/score/cpu/arm/armv7m-context-restore.c index 477904953b..a9afdf37e0 100644 --- a/cpukit/score/cpu/arm/armv7m-context-restore.c +++ b/cpukit/score/cpu/arm/armv7m-context-restore.c @@ -22,12 +22,11 @@ #include "config.h" #endif +#include <rtems/score/armv7m.h> #include <rtems/score/percpu.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void __attribute__((naked)) _CPU_Context_restore( Context_Control *heir ) diff --git a/cpukit/score/cpu/arm/armv7m-context-switch.c b/cpukit/score/cpu/arm/armv7m-context-switch.c index 0fd3c206d0..9814ed07a1 100644 --- a/cpukit/score/cpu/arm/armv7m-context-switch.c +++ b/cpukit/score/cpu/arm/armv7m-context-switch.c @@ -22,12 +22,11 @@ #include "config.h" #endif +#include <rtems/score/armv7m.h> #include <rtems/score/percpu.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void __attribute__((naked)) _CPU_Context_switch( Context_Control *executing, Context_Control *heir diff --git a/cpukit/score/cpu/arm/armv7m-exception-default.c b/cpukit/score/cpu/arm/armv7m-exception-default.c new file mode 100644 index 0000000000..fbd1039028 --- /dev/null +++ b/cpukit/score/cpu/arm/armv7m-exception-default.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include <rtems/score/armv7m.h> + +#ifdef ARM_MULTILIB_ARCH_V7M + +void __attribute__((naked)) _ARMV7M_Exception_default( void ) +{ + __asm__ volatile ( + "sub sp, %[cpufsz]\n" + "stm sp, {r0-r12}\n" + "mov r2, lr\n" + "mrs r1, msp\n" + "mrs r0, psp\n" + "cmn r2, #3\n" + "itt ne\n" + "movne r0, r1\n" + "addne r0, %[cpufsz]\n" + "add r2, r0, %[v7mlroff]\n" + "add r1, sp, %[cpulroff]\n" + "ldm r2, {r3-r5}\n" + "stm r1, {r3-r5}\n" + "mrs r1, ipsr\n" + "str r1, [sp, %[cpuvecoff]]\n" + "mov r0, sp\n" + "b _ARM_Exception_default\n" + : + : [cpufsz] "i" (sizeof(CPU_Exception_frame)), + [v7mfsz] "i" (sizeof(ARMV7M_Exception_frame)), + [cpuspoff] "J" (offsetof(CPU_Exception_frame, register_sp)), + [cpulroff] "i" (offsetof(CPU_Exception_frame, register_lr)), + [v7mlroff] "i" (offsetof(ARMV7M_Exception_frame, register_lr)), + [cpuvecoff] "J" (offsetof(CPU_Exception_frame, vector)) + ); +} + +#endif /* ARM_MULTILIB_ARCH_V7M */ diff --git a/cpukit/score/cpu/arm/armv7m-exception-handler-get.c b/cpukit/score/cpu/arm/armv7m-exception-handler-get.c index cf25cafe77..cf100778b8 100644 --- a/cpukit/score/cpu/arm/armv7m-exception-handler-get.c +++ b/cpukit/score/cpu/arm/armv7m-exception-handler-get.c @@ -22,12 +22,11 @@ #include "config.h" #endif +#include <rtems/score/armv7m.h> #include <rtems/score/cpu.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - ARMV7M_Exception_handler _ARMV7M_Get_exception_handler( int index ) { return _ARMV7M_SCB->vtor [index]; diff --git a/cpukit/score/cpu/arm/armv7m-exception-handler-set.c b/cpukit/score/cpu/arm/armv7m-exception-handler-set.c index ea3fce3ca5..0de3a222c0 100644 --- a/cpukit/score/cpu/arm/armv7m-exception-handler-set.c +++ b/cpukit/score/cpu/arm/armv7m-exception-handler-set.c @@ -22,12 +22,10 @@ #include "config.h" #endif -#include <rtems/score/cpu.h> +#include <rtems/score/armv7m.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void _ARMV7M_Set_exception_handler( int index, ARMV7M_Exception_handler handler diff --git a/cpukit/score/cpu/arm/armv7m-exception-priority-get.c b/cpukit/score/cpu/arm/armv7m-exception-priority-get.c index 79224e184f..6a1df1df43 100644 --- a/cpukit/score/cpu/arm/armv7m-exception-priority-get.c +++ b/cpukit/score/cpu/arm/armv7m-exception-priority-get.c @@ -21,12 +21,10 @@ #include "config.h" #endif -#include <rtems/score/cpu.h> +#include <rtems/score/armv7m.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - int _ARMV7M_Get_exception_priority( int vector ) { if ( _ARMV7M_Is_vector_an_irq( vector ) ) { diff --git a/cpukit/score/cpu/arm/armv7m-exception-priority-handler.c b/cpukit/score/cpu/arm/armv7m-exception-priority-handler.c index de0b020f23..7b3ff50dbe 100644 --- a/cpukit/score/cpu/arm/armv7m-exception-priority-handler.c +++ b/cpukit/score/cpu/arm/armv7m-exception-priority-handler.c @@ -22,12 +22,10 @@ #include "config.h" #endif -#include <rtems/score/cpu.h> +#include <rtems/score/armv7m.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void _ARMV7M_Set_exception_priority_and_handler( int index, int priority, diff --git a/cpukit/score/cpu/arm/armv7m-exception-priority-set.c b/cpukit/score/cpu/arm/armv7m-exception-priority-set.c index 085ce2dd96..76dd6d3d7f 100644 --- a/cpukit/score/cpu/arm/armv7m-exception-priority-set.c +++ b/cpukit/score/cpu/arm/armv7m-exception-priority-set.c @@ -22,12 +22,10 @@ #include "config.h" #endif -#include <rtems/score/cpu.h> +#include <rtems/score/armv7m.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void _ARMV7M_Set_exception_priority( int vector, int priority ) { if ( _ARMV7M_Is_vector_an_irq( vector ) ) { diff --git a/cpukit/score/cpu/arm/armv7m-initialize.c b/cpukit/score/cpu/arm/armv7m-initialize.c index cb3c19656d..236a0970e9 100644 --- a/cpukit/score/cpu/arm/armv7m-initialize.c +++ b/cpukit/score/cpu/arm/armv7m-initialize.c @@ -22,12 +22,10 @@ #include "config.h" #endif -#include <rtems/score/cpu.h> +#include <rtems/score/armv7m.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void _CPU_Initialize( void ) { /* diff --git a/cpukit/score/cpu/arm/armv7m-isr-dispatch.c b/cpukit/score/cpu/arm/armv7m-isr-dispatch.c index 7c2cd7370c..3cfe7d7ca5 100644 --- a/cpukit/score/cpu/arm/armv7m-isr-dispatch.c +++ b/cpukit/score/cpu/arm/armv7m-isr-dispatch.c @@ -22,12 +22,11 @@ #include "config.h" #endif +#include <rtems/score/armv7m.h> #include <rtems/score/percpu.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - static void __attribute__((naked)) _ARMV7M_Thread_dispatch( void ) { __asm__ volatile ( diff --git a/cpukit/score/cpu/arm/armv7m-isr-enter-leave.c b/cpukit/score/cpu/arm/armv7m-isr-enter-leave.c index 1bce10ae77..5af0a8120d 100644 --- a/cpukit/score/cpu/arm/armv7m-isr-enter-leave.c +++ b/cpukit/score/cpu/arm/armv7m-isr-enter-leave.c @@ -22,12 +22,11 @@ #include "config.h" #endif +#include <rtems/score/armv7m.h> #include <rtems/score/thread.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void _ARMV7M_Interrupt_service_enter( void ) { ++_Thread_Dispatch_disable_level; diff --git a/cpukit/score/cpu/arm/armv7m-isr-level-get.c b/cpukit/score/cpu/arm/armv7m-isr-level-get.c index 887e30843d..7ba13ac111 100644 --- a/cpukit/score/cpu/arm/armv7m-isr-level-get.c +++ b/cpukit/score/cpu/arm/armv7m-isr-level-get.c @@ -22,12 +22,10 @@ #include "config.h" #endif -#include <rtems/score/cpu.h> +#include <rtems/score/armv7m.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - uint32_t _CPU_ISR_Get_level( void ) { return 0; diff --git a/cpukit/score/cpu/arm/armv7m-isr-level-set.c b/cpukit/score/cpu/arm/armv7m-isr-level-set.c index 2f4c36312e..81cb9fdbd3 100644 --- a/cpukit/score/cpu/arm/armv7m-isr-level-set.c +++ b/cpukit/score/cpu/arm/armv7m-isr-level-set.c @@ -22,12 +22,10 @@ #include "config.h" #endif -#include <rtems/score/cpu.h> +#include <rtems/score/armv7m.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void _CPU_ISR_Set_level( uint32_t level ) { _ARMV7M_Set_basepri( 0 ); diff --git a/cpukit/score/cpu/arm/armv7m-isr-vector-install.c b/cpukit/score/cpu/arm/armv7m-isr-vector-install.c index 82b8e02e2b..ef813e318b 100644 --- a/cpukit/score/cpu/arm/armv7m-isr-vector-install.c +++ b/cpukit/score/cpu/arm/armv7m-isr-vector-install.c @@ -22,12 +22,11 @@ #include "config.h" #endif +#include <rtems/score/armv7m.h> #include <rtems/score/isr.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void _CPU_ISR_install_vector( uint32_t vector, proc_ptr new_handler, diff --git a/cpukit/score/cpu/arm/armv7m-multitasking-start-stop.c b/cpukit/score/cpu/arm/armv7m-multitasking-start-stop.c index d27bf8b009..f3e96e343c 100644 --- a/cpukit/score/cpu/arm/armv7m-multitasking-start-stop.c +++ b/cpukit/score/cpu/arm/armv7m-multitasking-start-stop.c @@ -22,12 +22,10 @@ #include "config.h" #endif -#include <rtems/score/cpu.h> +#include <rtems/score/armv7m.h> #ifdef ARM_MULTILIB_ARCH_V7M -#include <rtems/score/armv7m.h> - void __attribute__((naked)) _ARMV7M_Start_multitasking( Context_Control *bsp, Context_Control *heir diff --git a/cpukit/score/cpu/arm/preinstall.am b/cpukit/score/cpu/arm/preinstall.am index 92ba4687fc..fb8881df93 100644 --- a/cpukit/score/cpu/arm/preinstall.am +++ b/cpukit/score/cpu/arm/preinstall.am @@ -39,6 +39,10 @@ $(PROJECT_INCLUDE)/rtems/score/arm.h: rtems/score/arm.h $(PROJECT_INCLUDE)/rtems $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/arm.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/arm.h +$(PROJECT_INCLUDE)/rtems/score/armv4.h: rtems/score/armv4.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/armv4.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/armv4.h + $(PROJECT_INCLUDE)/rtems/score/armv7m.h: rtems/score/armv7m.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/armv7m.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/armv7m.h diff --git a/cpukit/score/cpu/arm/rtems/asm.h b/cpukit/score/cpu/arm/rtems/asm.h index e6951dbb28..e0009285da 100644 --- a/cpukit/score/cpu/arm/rtems/asm.h +++ b/cpukit/score/cpu/arm/rtems/asm.h @@ -1,21 +1,17 @@ /** * @file * - * @ingroup ScoreCPU + * @brief ARM Assembler Support API * - * @brief ARM assembler support API. - */ - -/* - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. * * - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* @@ -53,10 +49,9 @@ * * @ingroup ScoreCPU * - * @brief ARM assembler support. - * - * @{ + * @brief ARM Assembler Support */ +/**@{**/ /* * Recent versions of GNU cpp define variables which indicate the diff --git a/cpukit/score/cpu/arm/rtems/score/arm.h b/cpukit/score/cpu/arm/rtems/score/arm.h index c4f7cf2324..8f8c837b41 100644 --- a/cpukit/score/cpu/arm/rtems/score/arm.h +++ b/cpukit/score/cpu/arm/rtems/score/arm.h @@ -1,9 +1,7 @@ /** * @file * - * @ingroup ScoreCPU - * - * @brief ARM assembler support API. + * @brief ARM Assembler Support API */ /* @@ -28,9 +26,8 @@ extern "C" { /** * @addtogroup ScoreCPU - * - * @{ */ +/**@{**/ /* * This file contains the information required to build diff --git a/cpukit/score/cpu/arm/rtems/score/armv4.h b/cpukit/score/cpu/arm/rtems/score/armv4.h new file mode 100644 index 0000000000..dfd57bb3bb --- /dev/null +++ b/cpukit/score/cpu/arm/rtems/score/armv4.h @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifndef RTEMS_SCORE_ARMV4_H +#define RTEMS_SCORE_ARMV4_H + +#include <rtems/score/cpu.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#ifdef ARM_MULTILIB_ARCH_V4 + +void bsp_interrupt_dispatch( void ); + +void _ARMV4_Exception_interrupt( void ); + +typedef void ARMV4_Exception_abort_handler( CPU_Exception_frame *frame ); + +void _ARMV4_Exception_data_abort_set_handler( + ARMV4_Exception_abort_handler handler +); + +void _ARMV4_Exception_data_abort( void ); + +void _ARMV4_Exception_prefetch_abort_set_handler( + ARMV4_Exception_abort_handler handler +); + +void _ARMV4_Exception_prefetch_abort( void ); + +void _ARMV4_Exception_undef_default( void ); + +void _ARMV4_Exception_swi_default( void ); + +void _ARMV4_Exception_data_abort_default( void ); + +void _ARMV4_Exception_pref_abort_default( void ); + +void _ARMV4_Exception_reserved_default( void ); + +void _ARMV4_Exception_irq_default( void ); + +void _ARMV4_Exception_fiq_default( void ); + +static inline uint32_t _ARMV4_Status_irq_enable( void ) +{ + uint32_t arm_switch_reg; + uint32_t psr; + + RTEMS_COMPILER_MEMORY_BARRIER(); + + __asm__ volatile ( + ARM_SWITCH_TO_ARM + "mrs %[psr], cpsr\n" + "bic %[arm_switch_reg], %[psr], #0x80\n" + "msr cpsr, %[arm_switch_reg]\n" + ARM_SWITCH_BACK + : [arm_switch_reg] "=&r" (arm_switch_reg), [psr] "=&r" (psr) + ); + + return psr; +} + +static inline void _ARMV4_Status_restore( uint32_t psr ) +{ + ARM_SWITCH_REGISTERS; + + __asm__ volatile ( + ARM_SWITCH_TO_ARM + "msr cpsr, %[psr]\n" + ARM_SWITCH_BACK + : ARM_SWITCH_OUTPUT + : [psr] "r" (psr) + ); + + RTEMS_COMPILER_MEMORY_BARRIER(); +} + +#endif /* ARM_MULTILIB_ARCH_V4 */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* RTEMS_SCORE_ARMV4_H */ diff --git a/cpukit/score/cpu/arm/rtems/score/armv7m.h b/cpukit/score/cpu/arm/rtems/score/armv7m.h index 62f69ff490..3a41a0c707 100644 --- a/cpukit/score/cpu/arm/rtems/score/armv7m.h +++ b/cpukit/score/cpu/arm/rtems/score/armv7m.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief ARMV7M Architecture Support + */ + /* * Copyright (c) 2011 Sebastian Huber. All rights reserved. * @@ -15,13 +21,14 @@ #ifndef RTEMS_SCORE_ARMV7M_H #define RTEMS_SCORE_ARMV7M_H -#include <stdint.h> -#include <stdbool.h> +#include <rtems/score/cpu.h> #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ +#ifdef ARM_MULTILIB_ARCH_V7M + typedef struct { uint32_t reserved_0; uint32_t ictr; @@ -58,6 +65,21 @@ typedef struct { uint32_t icsr; ARMV7M_Exception_handler *vtor; + +#define ARMV7M_SCB_AIRCR_VECTKEY (0x05fa << 16) +#define ARMV7M_SCB_AIRCR_ENDIANESS (1U << 15) +#define ARMV7M_SCB_AIRCR_PRIGROUP_SHIFT 8 +#define ARMV7M_SCB_AIRCR_PRIGROUP_MASK \ + ((0x7U) << ARMV7M_SCB_AIRCR_PRIGROUP_SHIFT) +#define ARMV7M_SCB_AIRCR_PRIGROUP(val) \ + (((val) << ARMV7M_SCB_AIRCR_PRIGROUP_SHIFT) & ARMV7M_SCB_AIRCR_PRIGROUP_MASK) +#define ARMV7M_SCB_AIRCR_PRIGROUP_GET(reg) \ + (((val) & ARMV7M_SCB_AIRCR_PRIGROUP_MASK) >> ARMV7M_SCB_AIRCR_PRIGROUP_SHIFT) +#define ARMV7M_SCB_AIRCR_PRIGROUP_SET(reg, val) \ + (((reg) & ~ARMV7M_SCB_AIRCR_PRIGROUP_MASK) | ARMV7M_SCB_AIRCR_PRIGROUP(val)) +#define ARMV7M_SCB_AIRCR_SYSRESETREQ (1U << 2) +#define ARMV7M_SCB_AIRCR_VECTCLRACTIVE (1U << 1) +#define ARMV7M_SCB_AIRCR_VECTRESET (1U << 0) uint32_t aircr; uint32_t scr; uint32_t ccr; @@ -458,8 +480,7 @@ void _ARMV7M_Set_exception_handler( ); /** - * @brief ARMV7M Set Exception Priority and Handler - * + * @brief ARMV7M set exception priority and handler. */ void _ARMV7M_Set_exception_priority_and_handler( int index, @@ -467,6 +488,8 @@ void _ARMV7M_Set_exception_priority_and_handler( ARMV7M_Exception_handler handler ); +void _ARMV7M_Exception_default( void ); + void _ARMV7M_Interrupt_service_enter( void ); void _ARMV7M_Interrupt_service_leave( void ); @@ -475,6 +498,8 @@ void _ARMV7M_Pendable_service_call( void ); void _ARMV7M_Supervisor_call( void ); +#endif /* ARM_MULTILIB_ARCH_V7M */ + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h index c1ffb0765d..bbcded682c 100644 --- a/cpukit/score/cpu/arm/rtems/score/cpu.h +++ b/cpukit/score/cpu/arm/rtems/score/cpu.h @@ -1,9 +1,7 @@ /** * @file * - * @ingroup ScoreCPU - * - * @brief ARM architecture support API. + * @brief ARM Architecture Support API */ /* @@ -42,9 +40,8 @@ * @ingroup ScoreCPU * * @brief ARM specific support. - * - * @{ */ +/**@{**/ #ifdef __thumb__ #define ARM_SWITCH_REGISTERS uint32_t arm_switch_reg @@ -62,9 +59,8 @@ /** * @name Program Status Register - * - * @{ */ +/**@{**/ #define ARM_PSR_N (1 << 31) #define ARM_PSR_Z (1 << 30) @@ -97,9 +93,8 @@ /** * @addtogroup ScoreCPU - * - * @{ */ +/**@{**/ /* If someone uses THUMB we assume she wants minimal code size */ #ifdef __thumb__ @@ -227,9 +222,8 @@ extern "C" { /** * @addtogroup ScoreCPU - * - * @{ */ +/**@{**/ typedef struct { #if defined(ARM_MULTILIB_ARCH_V4) @@ -399,8 +393,7 @@ void _CPU_Context_Initialize( } while (0); /** - * @brief CPU Initialize - * + * @brief CPU initialization. */ void _CPU_Initialize( void ); @@ -411,8 +404,7 @@ void _CPU_ISR_install_vector( ); /** - * @brief CPU Context Switch - * + * @brief CPU switch context. */ void _CPU_Context_switch( Context_Control *run, Context_Control *heir ); @@ -482,35 +474,12 @@ static inline uint16_t CPU_swap_u16( uint16_t value ) /** @} */ -#if defined(ARM_MULTILIB_ARCH_V4) - /** * @addtogroup ScoreCPUARM - * - * @{ */ +/**@{**/ -typedef struct { - uint32_t r0; - uint32_t r1; - uint32_t r2; - uint32_t r3; - uint32_t r4; - uint32_t r5; - uint32_t r6; - uint32_t r7; - uint32_t r8; - uint32_t r9; - uint32_t r10; - uint32_t r11; - uint32_t r12; - uint32_t sp; - uint32_t lr; - uint32_t pc; - uint32_t cpsr; -} arm_cpu_context; - -typedef void arm_exc_abort_handler( arm_cpu_context *context ); +#if defined(ARM_MULTILIB_ARCH_V4) typedef enum { ARM_EXCEPTION_RESET = 0, @@ -521,81 +490,45 @@ typedef enum { ARM_EXCEPTION_RESERVED = 5, ARM_EXCEPTION_IRQ = 6, ARM_EXCEPTION_FIQ = 7, - MAX_EXCEPTIONS = 8 + MAX_EXCEPTIONS = 8, + ARM_EXCEPTION_MAKE_ENUM_32_BIT = 0xffffffff } Arm_symbolic_exception_name; -static inline uint32_t arm_status_irq_enable( void ) -{ - uint32_t arm_switch_reg; - uint32_t psr; - - RTEMS_COMPILER_MEMORY_BARRIER(); - - __asm__ volatile ( - ARM_SWITCH_TO_ARM - "mrs %[psr], cpsr\n" - "bic %[arm_switch_reg], %[psr], #0x80\n" - "msr cpsr, %[arm_switch_reg]\n" - ARM_SWITCH_BACK - : [arm_switch_reg] "=&r" (arm_switch_reg), [psr] "=&r" (psr) - ); - - return psr; -} - -static inline void arm_status_restore( uint32_t psr ) -{ - ARM_SWITCH_REGISTERS; - - __asm__ volatile ( - ARM_SWITCH_TO_ARM - "msr cpsr, %[psr]\n" - ARM_SWITCH_BACK - : ARM_SWITCH_OUTPUT - : [psr] "r" (psr) - ); - - RTEMS_COMPILER_MEMORY_BARRIER(); -} - -void arm_exc_data_abort_set_handler( arm_exc_abort_handler handler ); - -void arm_exc_data_abort( void ); - -void arm_exc_prefetch_abort_set_handler( arm_exc_abort_handler handler ); - -void arm_exc_prefetch_abort( void ); - -void bsp_interrupt_dispatch( void ); - -void arm_exc_interrupt( void ); - -void arm_exc_undefined( void ); - -/** @} */ +#endif /* defined(ARM_MULTILIB_ARCH_V4) */ -/* XXX This is out of date */ typedef struct { uint32_t register_r0; uint32_t register_r1; uint32_t register_r2; uint32_t register_r3; - uint32_t register_ip; - uint32_t register_lr; + uint32_t register_r4; + uint32_t register_r5; + uint32_t register_r6; + uint32_t register_r7; + uint32_t register_r8; + uint32_t register_r9; + uint32_t register_r10; + uint32_t register_r11; + uint32_t register_r12; + uint32_t register_sp; + void *register_lr; + void *register_pc; +#if defined(ARM_MULTILIB_ARCH_V4) + uint32_t register_cpsr; + Arm_symbolic_exception_name vector; +#elif defined(ARM_MULTILIB_ARCH_V7M) + uint32_t register_xpsr; + uint32_t vector; +#endif } CPU_Exception_frame; typedef CPU_Exception_frame CPU_Interrupt_frame; -#else /* !defined(ARM_MULTILIB_ARCH_V4) */ - -typedef void CPU_Interrupt_frame; - -/* FIXME */ -typedef CPU_Interrupt_frame CPU_Exception_frame; +void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); -#endif /* !defined(ARM_MULTILIB_ARCH_V4) */ +void _ARM_Exception_default( CPU_Exception_frame *frame ); -void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); +/** @} */ #ifdef __cplusplus } diff --git a/cpukit/score/cpu/arm/rtems/score/cpu_asm.h b/cpukit/score/cpu/arm/rtems/score/cpu_asm.h index 16c40125ec..59bfae079f 100644 --- a/cpukit/score/cpu/arm/rtems/score/cpu_asm.h +++ b/cpukit/score/cpu/arm/rtems/score/cpu_asm.h @@ -3,7 +3,7 @@ * * @ingroup ScoreCPU * - * @brief ARM assembler support API. + * @brief ARM Assembler Support API */ /* diff --git a/cpukit/score/cpu/arm/rtems/score/types.h b/cpukit/score/cpu/arm/rtems/score/types.h index f6de605b89..8e7195304b 100644 --- a/cpukit/score/cpu/arm/rtems/score/types.h +++ b/cpukit/score/cpu/arm/rtems/score/types.h @@ -1,9 +1,7 @@ /** * @file * - * @ingroup ScoreCPU - * - * @brief ARM architecture types API. + * @brief ARM Architecture Types API */ /* @@ -32,9 +30,8 @@ extern "C" { /** * @addtogroup ScoreCPU - * - * @{ */ +/**@{**/ /* * This section defines the basic types for this processor. diff --git a/cpukit/score/cpu/avr/avr/boot.h b/cpukit/score/cpu/avr/avr/boot.h index 96453b5bfd..863143b226 100644 --- a/cpukit/score/cpu/avr/avr/boot.h +++ b/cpukit/score/cpu/avr/avr/boot.h @@ -1,104 +1,114 @@ -/* Copyright (c) 2002,2003,2004,2005,2006,2007,2008,2009 Eric B. Weddington - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * 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. - * Neither the name of the copyright holders nor the names of - 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. */ +/** + * @file + * + * @brief Bootloader Support Utilities + * + * The macros in this module provide a C language interface to the + * bootloader support functionality of certain AVR processors. These + * macros are designed to work with all sizes of flash memory. + * + * Global interrupts are not automatically disabled for these macros. It + * is left up to the programmer to do this. See the code example below. + * Also see the processor datasheet for caveats on having global interrupts + * enabled during writing of the Flash. + * + * \note Not all AVR processors provide bootloader support. See your + * processor datasheet to see if it provides bootloader support. + * + * From email with Marek: On smaller devices (all except ATmega64/128), + * __SPM_REG is in the I/O space, accessible with the shorter "in" and "out" + * instructions - since the boot loader has a limited size, this could be an + * important optimization. + * + * API Usage Example + * The following code shows typical usage of the boot API. + * + * + * #include <inttypes.h> + * #include <avr/interrupt.h> + * #include <avr/pgmspace.h> + * + * void boot_program_page (uint32_t page, uint8_t *buf) + * { + * uint16_t i; + * uint8_t sreg; + * + * // Disable interrupts. + * + * sreg = SREG; + * cli(); + * + * eeprom_busy_wait (); + * + * boot_page_erase (page); + * boot_spm_busy_wait (); // Wait until the memory is erased. + * + * for (i=0; i<SPM_PAGESIZE; i+=2) + * { + * // Set up little-endian word. + * + * uint16_t w = *buf++; + * w += (*buf++) << 8; + * + * boot_page_fill (page + i, w); + * } + * + * boot_page_write (page); // Store buffer in flash page. + * boot_spm_busy_wait(); // Wait until the memory is written. + * + * // Reenable RWW-section again. We need this if we want to jump back + * // to the application after bootloading. + * + * boot_rww_enable (); + * + * // Re-enable interrupts (if they were ever enabled). + * + * SREG = sreg; + * } + */ + +/* + * Copyright (c) 2002,2003,2004,2005,2006,2007,2008,2009 Eric B. Weddington + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_BOOT_H_ #define _AVR_BOOT_H_ 1 -/** \file */ -/** \defgroup avr_boot <avr/boot.h>: Bootloader Support Utilities - \code - #include <avr/io.h> - #include <avr/boot.h> - \endcode - - The macros in this module provide a C language interface to the - bootloader support functionality of certain AVR processors. These - macros are designed to work with all sizes of flash memory. - - Global interrupts are not automatically disabled for these macros. It - is left up to the programmer to do this. See the code example below. - Also see the processor datasheet for caveats on having global interrupts - enabled during writing of the Flash. - - \note Not all AVR processors provide bootloader support. See your - processor datasheet to see if it provides bootloader support. - - \todo From email with Marek: On smaller devices (all except ATmega64/128), - __SPM_REG is in the I/O space, accessible with the shorter "in" and "out" - instructions - since the boot loader has a limited size, this could be an - important optimization. - - \par API Usage Example - The following code shows typical usage of the boot API. - - \code - #include <inttypes.h> - #include <avr/interrupt.h> - #include <avr/pgmspace.h> - - void boot_program_page (uint32_t page, uint8_t *buf) - { - uint16_t i; - uint8_t sreg; - - // Disable interrupts. - - sreg = SREG; - cli(); - - eeprom_busy_wait (); - - boot_page_erase (page); - boot_spm_busy_wait (); // Wait until the memory is erased. - - for (i=0; i<SPM_PAGESIZE; i+=2) - { - // Set up little-endian word. - - uint16_t w = *buf++; - w += (*buf++) << 8; - - boot_page_fill (page + i, w); - } - - boot_page_write (page); // Store buffer in flash page. - boot_spm_busy_wait(); // Wait until the memory is written. - - // Reenable RWW-section again. We need this if we want to jump back - // to the application after bootloading. - - boot_rww_enable (); - - // Re-enable interrupts (if they were ever enabled). - - SREG = sreg; - }\endcode */ +/** + * @defgroup avr_boot Bootloader Support Utilities + * + * @ingroup avr + */ +/**@{*/ #include <avr/eeprom.h> #include <avr/io.h> @@ -382,11 +392,11 @@ If bits 5..2 in R0 are cleared (zero), the corresponding Boot Lock bit will be programmed if an SPM instruction is executed within four cycles - after BLBSET and SPMEN (or SELFPRGEN) are set in SPMCR. The Z-pointer is - don't care during this operation, but for future compatibility it is - recommended to load the Z-pointer with $0001 (same as used for reading the - Lock bits). For future compatibility It is also recommended to set bits 7, - 6, 1, and 0 in R0 to 1 when writing the Lock bits. When programming the + after BLBSET and SPMEN (or SELFPRGEN) are set in SPMCR. The Z-pointer is + don't care during this operation, but for future compatibility it is + recommended to load the Z-pointer with $0001 (same as used for reading the + Lock bits). For future compatibility It is also recommended to set bits 7, + 6, 1, and 0 in R0 to 1 when writing the Lock bits. When programming the Lock bits the entire Flash can be read during the operation. */ #define __boot_lock_bits_set(lock_bits) \ @@ -430,8 +440,8 @@ /* Reading lock and fuse bits: - Similarly to writing the lock bits above, set BLBSET and SPMEN (or - SELFPRGEN) bits in __SPMREG, and then (within four clock cycles) issue an + Similarly to writing the lock bits above, set BLBSET and SPMEN (or + SELFPRGEN) bits in __SPMREG, and then (within four clock cycles) issue an LPM instruction. Z address: contents: @@ -525,13 +535,13 @@ /** \ingroup avr_boot \def boot_page_fill(address, data) - Fill the bootloader temporary page buffer for flash - address with data word. + Fill the bootloader temporary page buffer for flash + address with data word. - \note The address is a byte address. The data is a word. The AVR + \note The address is a byte address. The data is a word. The AVR writes data to the buffer a word at a time, but addresses the buffer per byte! So, increment your address by 2 between calls, and send 2 - data bytes in a word format! The LSB of the data is written to the lower + data bytes in a word format! The LSB of the data is written to the lower address; the MSB of the data is written to the higher address.*/ /** \ingroup avr_boot @@ -544,9 +554,9 @@ /** \ingroup avr_boot \def boot_page_write(address) - Write the bootloader temporary page buffer + Write the bootloader temporary page buffer to flash page that contains address. - + \note address is a byte address in flash, not a word address. */ /** \ingroup avr_boot @@ -581,7 +591,7 @@ instruction sequences after LPM. FLASHEND is defined in the ioXXXX.h file. - USHRT_MAX is defined in <limits.h>. */ + USHRT_MAX is defined in <limits.h>. */ #if defined(__AVR_ATmega161__) || defined(__AVR_ATmega163__) \ || defined(__AVR_ATmega323__) @@ -673,4 +683,5 @@ do { \ boot_lock_bits_set (lock_bits); \ } while (0) +/**@}*/ #endif /* _AVR_BOOT_H_ */ diff --git a/cpukit/score/cpu/avr/avr/common.h b/cpukit/score/cpu/avr/avr/common.h index 0901a6c741..1acfe26889 100644 --- a/cpukit/score/cpu/avr/avr/common.h +++ b/cpukit/score/cpu/avr/avr/common.h @@ -1,53 +1,65 @@ -/* Copyright (c) 2007 Eric B. Weddington - All rights reserved. +/** + * @file + * + * @brief Common Symbols and Define Undefined Registers + * + * This purpose of this header is to define registers that have not been + * previously defined in the individual device IO header files, and to define + * other symbols that are common across AVR device families. + * + * This file is designed to be included in <avr/io.h> after the individual + * device IO header files, and after <avr/sfr_defs.h> + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ +/* + * Copyright (c) 2007 Eric B. Weddington + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_COMMON_H #define _AVR_COMMON_H -#include <avr/sfr_defs.h> - -/* -This purpose of this header is to define registers that have not been -previously defined in the individual device IO header files, and to define -other symbols that are common across AVR device families. - -This file is designed to be included in <avr/io.h> after the individual -device IO header files, and after <avr/sfr_defs.h> +/** + * @defgroup Avr_common Common Data + * + * @ingroup avr + */ +/**@{*/ -*/ +#include <avr/sfr_defs.h> /*------------ Registers Not Previously Defined ------------*/ -/* +/* These are registers that are not previously defined in the individual IO header files, OR they are defined here because they are used in parts of avr-libc even if a device is not selected but a general architecture has @@ -58,7 +70,7 @@ been selected. /* Stack pointer register. -AVR architecture 1 has no RAM, thus no stack pointer. +AVR architecture 1 has no RAM, thus no stack pointer. All other architectures do have a stack pointer. Some devices have only less than 256 bytes of possible RAM locations (128 Bytes of SRAM @@ -75,7 +87,7 @@ for them. # ifndef SP # define SP _SFR_MEM16(0x3D) # endif -#elif __AVR_ARCH__ != 1 +#elif __AVR_ARCH__ != 1 # ifndef SPL # define SPL _SFR_IO8(0x3D) # endif @@ -192,7 +204,7 @@ keep the EEPROM-related definitions here. /*------------ Common Symbols ------------*/ -/* +/* Generic definitions for registers that are common across multiple AVR devices and families. */ @@ -319,4 +331,5 @@ and families. # endif #endif +/**@}*/ #endif /* _AVR_COMMON_H */ diff --git a/cpukit/score/cpu/avr/avr/crc16.h b/cpukit/score/cpu/avr/avr/crc16.h index 63e043b7a8..fe6dfd4346 100644 --- a/cpukit/score/cpu/avr/avr/crc16.h +++ b/cpukit/score/cpu/avr/avr/crc16.h @@ -1,38 +1,54 @@ -/* Copyright (c) 2005 Joerg Wunsch - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ +/** + * @file + * + * @brief Moved to <util/crc16.h> + */ + +/* + * Copyright (c) 2005 Joerg Wunsch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_CRC16_H_ #define _AVR_CRC16_H_ +/** + * @defgroup Avr_crc16 crc16 + * + * @ingroup avr + */ +/**@{*/ + #warning "This file has been moved to <util/crc16.h>." #include <util/crc16.h> +/**@}*/ #endif /* _AVR_CRC16_H_ */ diff --git a/cpukit/score/cpu/avr/avr/delay.h b/cpukit/score/cpu/avr/avr/delay.h index 42f10c1912..ad9db108eb 100644 --- a/cpukit/score/cpu/avr/avr/delay.h +++ b/cpukit/score/cpu/avr/avr/delay.h @@ -1,38 +1,55 @@ -/* Copyright (c) 2005 Joerg Wunsch - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ +/** + * @file + * + * @brief Moved to <util/delay.h> + */ + +/* + * Copyright (c) 2005 Joerg Wunsch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_DELAY_H_ #define _AVR_DELAY_H_ +/** + * @defgroup AvrDelay Delay + * + * @ingroup avr + * + */ +/**@{**/ + #warning "This file has been moved to <util/delay.h>." #include <util/delay.h> +/** @} */ #endif /* _AVR_DELAY_H_ */ diff --git a/cpukit/score/cpu/avr/avr/eeprom.h b/cpukit/score/cpu/avr/avr/eeprom.h index ab21d2dbe0..448248dc37 100644 --- a/cpukit/score/cpu/avr/avr/eeprom.h +++ b/cpukit/score/cpu/avr/avr/eeprom.h @@ -1,34 +1,78 @@ -/* Copyright (c) 2002, 2003, 2004, 2007 Marek Michalkiewicz - Copyright (c) 2005, 2006 Bjoern Haase - Copyright (c) 2008 Atmel Corporation - Copyright (c) 2008 Wouter van Gulik - Copyright (c) 2009 Dmitry Xmelkov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * 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. - * Neither the name of the copyright holders nor the names of - 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. */ +/** + * @file + * + * @brief Data EEPROM Contained in the AVR Microcontrollers + * + * This header file declares the interface to some simple library + * routines suitable for handling the data EEPROM contained in the + * AVR microcontrollers. The implementation uses a simple polled + * mode interface. Applications that require interrupt-controlled + * EEPROM access to ensure that no time will be wasted in spinloops + * will have to deploy their own implementation. + * + * \par Notes: + * + * - In addition to the write functions there is a set of update ones. + * This functions read each byte first and skip the burning if the + * old value is the same with new. The scaning direction is from + * high address to low, to obtain quick return in common cases. + * + * - All of the read/write functions first make sure the EEPROM is + * ready to be accessed. Since this may cause long delays if a + * write operation is still pending, time-critical applications + * should first poll the EEPROM e. g. using eeprom_is_ready() before + * attempting any actual I/O. But this functions are not wait until + * SELFPRGEN in SPMCSR becomes zero. Do this manually, if your + * softwate contains the Flash burning. + * + * - As these functions modify IO registers, they are known to be + * non-reentrant. If any of these functions are used from both, + * standard and interrupt context, the applications must ensure + * proper protection (e.g. by disabling interrupts before accessing + * them). + * + * - All write functions force erase_and_write programming mode. + * + * - For Xmega the EEPROM start address is 0, like other architectures. + * The reading functions add the 0x2000 value to use EEPROM mapping into + * data space. + */ + +/* + * Copyright (c) 2002, 2003, 2004, 2007 Marek Michalkiewicz + * Copyright (c) 2005, 2006 Bjoern Haase + * Copyright (c) 2008 Atmel Corporation + * Copyright (c) 2008 Wouter van Gulik + * Copyright (c) 2009 Dmitry Xmelkov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_EEPROM_H_ @@ -409,43 +453,12 @@ #include <stddef.h> /* size_t */ #include <stdint.h> -/** \defgroup avr_eeprom <avr/eeprom.h>: EEPROM handling - \code #include <avr/eeprom.h> \endcode - - This header file declares the interface to some simple library - routines suitable for handling the data EEPROM contained in the - AVR microcontrollers. The implementation uses a simple polled - mode interface. Applications that require interrupt-controlled - EEPROM access to ensure that no time will be wasted in spinloops - will have to deploy their own implementation. - - \par Notes: - - - In addition to the write functions there is a set of update ones. - This functions read each byte first and skip the burning if the - old value is the same with new. The scaning direction is from - high address to low, to obtain quick return in common cases. - - - All of the read/write functions first make sure the EEPROM is - ready to be accessed. Since this may cause long delays if a - write operation is still pending, time-critical applications - should first poll the EEPROM e. g. using eeprom_is_ready() before - attempting any actual I/O. But this functions are not wait until - SELFPRGEN in SPMCSR becomes zero. Do this manually, if your - softwate contains the Flash burning. - - - As these functions modify IO registers, they are known to be - non-reentrant. If any of these functions are used from both, - standard and interrupt context, the applications must ensure - proper protection (e.g. by disabling interrupts before accessing - them). - - - All write functions force erase_and_write programming mode. - - - For Xmega the EEPROM start address is 0, like other architectures. - The reading functions add the 0x2000 value to use EEPROM mapping into - data space. +/** + * @defgroup avr_eeprom EEPROM handling + * + * @ingroup avr */ +/**@{*/ #ifdef __cplusplus extern "C" { @@ -486,7 +499,7 @@ extern "C" { \ingroup avr_eeprom Loops until the eeprom is no longer busy. \returns Nothing. - */ + */ #define eeprom_busy_wait() do {} while (!eeprom_is_ready()) @@ -602,4 +615,6 @@ void eeprom_update_block (const void *__src, void *__dst, size_t __n); #endif /* !__ASSEMBLER__ */ #endif /* E2END || defined(__DOXYGEN__) || defined(__COMPILING_AVR_LIBC__) */ + +/**@}*/ #endif /* !_AVR_EEPROM_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io.h b/cpukit/score/cpu/avr/avr/io.h index d4198f14ae..22ac57d84f 100644 --- a/cpukit/score/cpu/avr/avr/io.h +++ b/cpukit/score/cpu/avr/avr/io.h @@ -1,100 +1,109 @@ -/* Copyright (c) 2002,2003,2005,2006,2007 Marek Michalkiewicz, Joerg Wunsch - Copyright (c) 2007 Eric B. Weddington - All rights reserved. +/** + * @file + * + * @brief AVR device-specific IO Definitions + * + * This header file includes the apropriate IO definitions for the + * device that has been specified by the <tt>-mmcu=</tt> compiler + * command-line switch. This is done by diverting to the appropriate + * file <tt><avr/io</tt><em>XXXX</em><tt>.h></tt> which should + * never be included directly. Some register names common to all + * AVR devices are defined directly within <tt><avr/common.h></tt>, + * which is included in <tt><avr/io.h></tt>, + * but most of the details come from the respective include file. + * + * Note that this file always includes the following files: + * \code + * #include <avr/sfr_defs.h> + * #include <avr/portpins.h> + * #include <avr/common.h> + * #include <avr/version.h> + * \endcode + * See \ref avr_sfr for more details about that header file. + * + * Included are definitions of the IO register set and their + * respective bit values as specified in the Atmel documentation. + * Note that inconsistencies in naming conventions, + * so even identical functions sometimes get different names on + * different devices. + * + * Also included are the specific names useable for interrupt + * function definitions as documented + * \ref avr_signames "here". + * + * Finally, the following macros are defined: + * + * - \b RAMEND + * <br> + * The last on-chip RAM address. + * <br> + * - \b XRAMEND + * <br> + * The last possible RAM location that is addressable. This is equal to + * RAMEND for devices that do not allow for external RAM. For devices + * that allow external RAM, this will be larger than RAMEND. + * <br> + * - \b E2END + * <br> + * The last EEPROM address. + * <br> + * - \b FLASHEND + * <br> + * The last byte address in the Flash program space. + * <br> + * - \b SPM_PAGESIZE + * <br> + * For devices with bootloader support, the flash pagesize + * (in bytes) to be used for the \c SPM instruction. + * - \b E2PAGESIZE + * <br> + * The size of the EEPROM page. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/** \file */ -/** \defgroup avr_io <avr/io.h>: AVR device-specific IO definitions - \code #include <avr/io.h> \endcode - - This header file includes the apropriate IO definitions for the - device that has been specified by the <tt>-mmcu=</tt> compiler - command-line switch. This is done by diverting to the appropriate - file <tt><avr/io</tt><em>XXXX</em><tt>.h></tt> which should - never be included directly. Some register names common to all - AVR devices are defined directly within <tt><avr/common.h></tt>, - which is included in <tt><avr/io.h></tt>, - but most of the details come from the respective include file. - - Note that this file always includes the following files: - \code - #include <avr/sfr_defs.h> - #include <avr/portpins.h> - #include <avr/common.h> - #include <avr/version.h> - \endcode - See \ref avr_sfr for more details about that header file. - - Included are definitions of the IO register set and their - respective bit values as specified in the Atmel documentation. - Note that inconsistencies in naming conventions, - so even identical functions sometimes get different names on - different devices. - - Also included are the specific names useable for interrupt - function definitions as documented - \ref avr_signames "here". - - Finally, the following macros are defined: - - - \b RAMEND - <br> - The last on-chip RAM address. - <br> - - \b XRAMEND - <br> - The last possible RAM location that is addressable. This is equal to - RAMEND for devices that do not allow for external RAM. For devices - that allow external RAM, this will be larger than RAMEND. - <br> - - \b E2END - <br> - The last EEPROM address. - <br> - - \b FLASHEND - <br> - The last byte address in the Flash program space. - <br> - - \b SPM_PAGESIZE - <br> - For devices with bootloader support, the flash pagesize - (in bytes) to be used for the \c SPM instruction. - - \b E2PAGESIZE - <br> - The size of the EEPROM page. - -*/ +/* + * Copyright (c) 2002,2003,2005,2006,2007 Marek Michalkiewicz, Joerg Wunsch + * Copyright (c) 2007 Eric B. Weddington + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ #define _AVR_IO_H_ +/** + * @defgroup avr_io Input Output + * + * @ingroup avr + * + */ +/**@{**/ + #include <avr/sfr_defs.h> #if defined (__AVR_AT94K__) @@ -416,4 +425,5 @@ /* Include lock.h after individual IO header files. */ #include <avr/lock.h> +/** @} */ #endif /* _AVR_IO_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io1200.h b/cpukit/score/cpu/avr/avr/io1200.h index fdb934ff4e..ae2aa17542 100644 --- a/cpukit/score/cpu/avr/avr/io1200.h +++ b/cpukit/score/cpu/avr/avr/io1200.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/io1200.h + * + * @brief Definitions for AT90S1200 + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/io1200.h - definitions for AT90S1200 */ +/* + * Copyright (c) 2002, Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO1200_H_ #define _AVR_IO1200_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_io1200 AT90S1200 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io1200.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef __ASSEMBLER__ # warning "MCU not supported by the C compiler" @@ -266,4 +278,5 @@ #define SIGNATURE_2 0x01 +/**@}*/ #endif /* _AVR_IO1200_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io2333.h b/cpukit/score/cpu/avr/avr/io2333.h index 044f5a6b8b..63c7fab337 100644 --- a/cpukit/score/cpu/avr/avr/io2333.h +++ b/cpukit/score/cpu/avr/avr/io2333.h @@ -46,8 +46,11 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif -/* I/O registers */ - +/** + * @name I/O Registers + * + */ +/**@{**/ /* UART Baud Rate Register high */ #define UBRRH _SFR_IO8(0x03) @@ -171,9 +174,13 @@ /* General Interrupt MaSK register */ #define GIMSK _SFR_IO8(0x3B) +/** @} */ -/* Interrupt vectors */ - +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* External Interrupt 0 */ #define INT0_vect _VECTOR(1) #define SIG_INTERRUPT0 _VECTOR(1) @@ -227,6 +234,7 @@ #define SIG_COMPARATOR _VECTOR(13) #define _VECTORS_SIZE 28 +/** @} */ /* The Register Bit names are represented by their bit number (0-7). @@ -434,10 +442,15 @@ #define EEWE 1 #define EERE 0 -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define RAMEND 0xDF /*Last On-Chip SRAM location*/ #define XRAMEND RAMEND #define E2END 0x7F #define FLASHEND 0x7FF +/** @} */ #endif /* _AVR_IO2333_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io2343.h b/cpukit/score/cpu/avr/avr/io2343.h index bb193917c5..bee4ad4fa7 100644 --- a/cpukit/score/cpu/avr/avr/io2343.h +++ b/cpukit/score/cpu/avr/avr/io2343.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/io2343.h + * + * @brief Definitions for AT90S2343 + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/io2343.h - definitions for AT90S2343 */ +/* + * Copyright (c) 2002, Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO2343_H_ #define _AVR_IO2343_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_io2343 AT90S2343 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io2343.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -205,4 +217,5 @@ #define SIGNATURE_2 0x03 +/**@}*/ #endif /* _AVR_IO2343_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io43u32x.h b/cpukit/score/cpu/avr/avr/io43u32x.h index c31a187d94..ed36ff1010 100644 --- a/cpukit/score/cpu/avr/avr/io43u32x.h +++ b/cpukit/score/cpu/avr/avr/io43u32x.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2003,2005 Keith Gudger - All rights reserved. +/** + * @file avr/io43u32x.h + * + * @brief Definitions for AT43USB32x + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/io43u32x.h - definitions for AT43USB32x */ +/* + * Copyright (c) 2003,2005 Keith Gudger + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO43U32X_H_ #define _AVR_IO43U32X_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_io43u32x AT43USB32x Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io43u32x.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -70,7 +82,7 @@ #define DDRE _SFR_IO8(0x02) /* Data Register, Port E */ -#define PORTE _SFR_IO8(0x03) +#define PORTE _SFR_IO8(0x03) /* SPI Control Register */ #define SPCR _SFR_IO8(0x0D) @@ -432,4 +444,5 @@ but no RAMPZ causes gcrt1.S build to fail, so assume 64K for now... */ #define FLASHEND 0x0FFFF +/**@}*/ #endif /* _AVR_43USB32X_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io43u35x.h b/cpukit/score/cpu/avr/avr/io43u35x.h index d803fa99c0..66a06d867a 100644 --- a/cpukit/score/cpu/avr/avr/io43u35x.h +++ b/cpukit/score/cpu/avr/avr/io43u35x.h @@ -46,8 +46,11 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif -/* I/O registers */ - +/** + * @name I/O Registers + * + */ +/**@{**/ /* ADC Data Register */ #ifndef __ASSEMBLER__ #define ADC _SFR_IO16(0x02) @@ -179,9 +182,13 @@ /* General Interrupt Mask register */ #define GIMSK _SFR_IO8(0x3B) +/** @} */ -/* Interrupt vectors */ - +/** + * @name Interrupt Vectors + * + */ +/**@{**/ #define SIG_INTERRUPT0 _VECTOR(1) /* suspend/resume */ #define SIG_INTERRUPT1 _VECTOR(2) #define SIG_TIMER1_CAPT1 _VECTOR(3) @@ -196,10 +203,11 @@ #define SIG_USB_INT _VECTOR(12) #define _VECTORS_SIZE 52 +/** @} */ /* - The Register Bit names are represented by their bit number (0-7). -*/ + * The Register Bit names are represented by their bit number (0-7). + */ /* Timer/Counter Interrupt MaSK register */ #define TICIE1 3 @@ -418,10 +426,15 @@ #define ADPS1 1 #define ADPS0 0 -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define RAMEND 0x045F /*Last On-Chip SRAM Location*/ #define XRAMEND RAMEND #define E2END 0x0000 #define FLASHEND 0x5FFF +/** @} */ #endif /* _AVR_43USB355_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io4414.h b/cpukit/score/cpu/avr/avr/io4414.h index 9c8362c061..96c400030d 100644 --- a/cpukit/score/cpu/avr/avr/io4414.h +++ b/cpukit/score/cpu/avr/avr/io4414.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for AT90S4414 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2002, Marek Michalkiewicz All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_io4414 AT90S4414 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* Analog Comparator Control and Status Register */ @@ -480,5 +496,6 @@ #define SIGNATURE_1 0x92 #define SIGNATURE_2 0x01 +/** @} */ #endif /* _AVR_IO4414_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io4433.h b/cpukit/score/cpu/avr/avr/io4433.h index d0a57e3075..62cbb00cd3 100644 --- a/cpukit/score/cpu/avr/avr/io4433.h +++ b/cpukit/score/cpu/avr/avr/io4433.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. +/** + * @file avr/io4433.h + * + * @brief Definitions for AT90S4433 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/io4433.h - definitions for AT90S4433 */ +/* + * Copyright (c) 2002, Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO4433_H_ #define _AVR_IO4433_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_io4433 AT90S4433 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io4433.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -468,5 +480,5 @@ #define SIGNATURE_1 0x92 #define SIGNATURE_2 0x03 - +/**@}*/ #endif /* _AVR_IO4433_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io4434.h b/cpukit/score/cpu/avr/avr/io4434.h index d3719f8fcb..72bc72680d 100644 --- a/cpukit/score/cpu/avr/avr/io4434.h +++ b/cpukit/score/cpu/avr/avr/io4434.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. +/** + * @file avr/io4434.h + * + * @brief Definitions for AT90S4434 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/io4434.h - definitions for AT90S4434 */ +/* + * Copyright (c) 2002 Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO4434_H_ #define _AVR_IO4434_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_io4434 AT90S4434 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io4434.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -562,5 +574,5 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x03 - +/**@}*/ #endif /* _AVR_IO4434_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io76c711.h b/cpukit/score/cpu/avr/avr/io76c711.h index 60e3b744a3..e0c68e2267 100644 --- a/cpukit/score/cpu/avr/avr/io76c711.h +++ b/cpukit/score/cpu/avr/avr/io76c711.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for AT76C711 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2002, Marek Michalkiewicz All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_io76c711 AT76C711 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* 0x00-0x0C reserved */ @@ -489,4 +505,7 @@ 0x8000 - 0xBFFF - program SRAM (read/write), would be nice if other AVR devices did that as well (no need to use LPM!) */ + +/** @} */ + #endif /* _AVR_IO76C711_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io8534.h b/cpukit/score/cpu/avr/avr/io8534.h index f25cfd269f..c873a71430 100644 --- a/cpukit/score/cpu/avr/avr/io8534.h +++ b/cpukit/score/cpu/avr/avr/io8534.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for AT90C8534 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2002, Marek Michalkiewicz All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_io8534 AT90C8534 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* 0x00..0x03 reserved */ @@ -212,4 +228,6 @@ #define E2END 0x1FF #define FLASHEND 0x1FFF +/** @} */ + #endif /* _AVR_IO8534_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io8535.h b/cpukit/score/cpu/avr/avr/io8535.h index f0c419b8f5..cf31f00c32 100644 --- a/cpukit/score/cpu/avr/avr/io8535.h +++ b/cpukit/score/cpu/avr/avr/io8535.h @@ -1,41 +1,46 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. +/** + * @file avr/io8535.h + * + * @brief Definitions for AT90S8535 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/io8535.h - definitions for AT90S8535 */ +/* + * Copyright (c) 2002, Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO8535_H_ #define _AVR_IO8535_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ - #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." #endif @@ -44,7 +49,15 @@ # define _AVR_IOXXX_H_ "io8535.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif + +/** + * @defgroup AvrDef_io8535 AT90S8535 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* I/O registers */ @@ -563,5 +576,5 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x03 - +/** @} */ #endif /* _AVR_IO8535_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io86r401.h b/cpukit/score/cpu/avr/avr/io86r401.h index 5fa29c25b4..56f2d568f3 100644 --- a/cpukit/score/cpu/avr/avr/io86r401.h +++ b/cpukit/score/cpu/avr/avr/io86r401.h @@ -1,39 +1,52 @@ -/* Copyright (c) 2002, Colin O'Flynn - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - -/* avr/io86r401.h - definitions for AT86RF401 */ +/** + * @file avr/io86r401.h + * + * @brief Definitions for AT86RF401 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2002, Colin O'Flynn + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO86RF401_H_ #define _AVR_IO86RF401_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_io86r401 AT86RF401 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -83,7 +96,7 @@ #define BTCNT _SFR_IO8(0x20) -/* +/* NOTE: EEPROM name's changed to have D in front on them, per datasheet, but you may want to remove the leading D. */ @@ -304,5 +317,5 @@ you may want to remove the leading D. #define SIGNATURE_1 0x91 #define SIGNATURE_2 0x81 - +/**@}*/ #endif /* _AVR_IO86RF401_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io90pwm1.h b/cpukit/score/cpu/avr/avr/io90pwm1.h index ccf77afd07..6c3aad03a5 100644 --- a/cpukit/score/cpu/avr/avr/io90pwm1.h +++ b/cpukit/score/cpu/avr/avr/io90pwm1.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for AT90PWM1 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2005, Andrey Pashchenko Copyright (c) 2007, Anatoly Sokolov All rights reserved. @@ -47,6 +55,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_io90pwm1 AT90PWM1 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* Reserved [0x00..0x02] */ @@ -1116,5 +1132,6 @@ #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ #endif /* _AVR_IOPWM1_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io90pwm216.h b/cpukit/score/cpu/avr/avr/io90pwm216.h index 70682e7bcd..c6befa4081 100644 --- a/cpukit/score/cpu/avr/avr/io90pwm216.h +++ b/cpukit/score/cpu/avr/avr/io90pwm216.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for AT90PWM216 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2007, Atmel Corporation All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_io90pwm216 AT90PWM216 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* Port B Input Pins Address */ @@ -1176,5 +1192,6 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x83 +/** @} */ #endif /* _AVR_IO90PWM216_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io90pwm2b.h b/cpukit/score/cpu/avr/avr/io90pwm2b.h index 14a3893366..22d0c1c379 100644 --- a/cpukit/score/cpu/avr/avr/io90pwm2b.h +++ b/cpukit/score/cpu/avr/avr/io90pwm2b.h @@ -1,38 +1,42 @@ -/* Copyright (c) 2007 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. -*/ - - -/* avr/io90pwm2b.h - definitions for AT90PWM2B */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/io90pwm2b.h + * + * @brief Definitions for AT90PWM2B + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2007 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -42,12 +46,20 @@ # define _AVR_IOXXX_H_ "io90pwm2b.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_IO90PWM2B_H_ #define _AVR_IO90PWM2B_H_ 1 +/** + * @defgroup Avr_io90pwm2b AT90PWM2B Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Registers and associated bit numbers */ #define PINB _SFR_IO8(0x03) @@ -79,7 +91,7 @@ #define PORTB5 5 #define PORTB6 6 #define PORTB7 7 - + #define PINC _SFR_IO8(0x06) #define PINC0 0 #define PINC1 1 @@ -817,7 +829,7 @@ #define STP0 0 #define STP1 1 #define F1617 2 -#define FEM 3 +#define FEM 3 #define MUBRR _SFR_MEM16(0xCC) @@ -1362,7 +1374,7 @@ #define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ #define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ #define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Disable */ -#define HFUSE_DEFAULT (FUSE_SPIEN) +#define HFUSE_DEFAULT (FUSE_SPIEN) /* Extended Fuse Byte */ @@ -1379,7 +1391,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -1388,4 +1400,5 @@ #define SIGNATURE_2 0x83 +/** @} */ #endif /* _AVR_IO90PWM2B_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io90pwm3b.h b/cpukit/score/cpu/avr/avr/io90pwm3b.h index 0d648fb47d..5b1a7537cb 100644 --- a/cpukit/score/cpu/avr/avr/io90pwm3b.h +++ b/cpukit/score/cpu/avr/avr/io90pwm3b.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for AT90PWM3B + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2007 Atmel Corporation All rights reserved. @@ -48,6 +56,14 @@ #ifndef _AVR_IO90PWM3B_H_ #define _AVR_IO90PWM3B_H_ 1 +/** + * @defgroup AvrDef_io90pwm3b AT90PWM3B Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Registers and associated bit numbers */ #define PINB _SFR_IO8(0x03) @@ -1387,5 +1403,6 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x83 +/** @} */ #endif /* _AVR_IO90PWM3B_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io90pwm81.h b/cpukit/score/cpu/avr/avr/io90pwm81.h index cc013b96b0..b2faea85f6 100644 --- a/cpukit/score/cpu/avr/avr/io90pwm81.h +++ b/cpukit/score/cpu/avr/avr/io90pwm81.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for AT90PWM81 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2009 Atmel Corporation All rights reserved. @@ -43,6 +51,13 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_io90pwm81 AT90PWM81 Definitions + * + * @ingroup avr + * + */ +/**@{**/ #ifndef _AVR_AT90PWM81_H_ #define _AVR_AT90PWM81_H_ 1 @@ -1019,6 +1034,7 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x88 +/** @} */ #endif /* _AVR_AT90PWM81_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io90pwmx.h b/cpukit/score/cpu/avr/avr/io90pwmx.h index f2db6097f7..b66b65c541 100644 --- a/cpukit/score/cpu/avr/avr/io90pwmx.h +++ b/cpukit/score/cpu/avr/avr/io90pwmx.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for AT90PWM2(B) and AT90PWM3(B) + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2005, Andrey Pashchenko All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup io90pwmx AT90PWM2(B) and AT90PWM3(B) Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* Port B Input Pins Address */ @@ -1366,5 +1382,6 @@ #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ #endif /* _AVR_IO90PWMX_H_ */ diff --git a/cpukit/score/cpu/avr/avr/io90scr100.h b/cpukit/score/cpu/avr/avr/io90scr100.h index 4451ec8b5d..cb9f59247a 100644 --- a/cpukit/score/cpu/avr/avr/io90scr100.h +++ b/cpukit/score/cpu/avr/avr/io90scr100.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/io90scr100.h - definitions for AT90SCR100 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/io90scr100.h + * + * @brief Definitions for AT90SCR100 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "io90scr100.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_AT90SCR100_H_ #define _AVR_AT90SCR100_H_ 1 +/** + * @defgroup Avr_io90scr100 AT90SCR100 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -1693,5 +1704,5 @@ #define SIGNATURE_2 0xC1 +/**@}*/ #endif /* _AVR_AT90SCR100_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/ioa6289.h b/cpukit/score/cpu/avr/avr/ioa6289.h index b5bde6ae40..d51e3a965a 100644 --- a/cpukit/score/cpu/avr/avr/ioa6289.h +++ b/cpukit/score/cpu/avr/avr/ioa6289.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2008 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/ioa6289.h - definitions for ATA6289 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/ioa6289.h + * + * @brief Definitions for ATA6289 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2008 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,19 @@ # define _AVR_IOXXX_H_ "ioa6289.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATA6289_H_ #define _AVR_ATA6289_H_ 1 +/** + * @defgroup Avr_ioa6289 ATA6289 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* Registers and associated bit numbers. */ @@ -839,5 +851,5 @@ #define SIGNATURE_2 0x82 +/** @} */ #endif /* _AVR_ATA6289_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/ioat94k.h b/cpukit/score/cpu/avr/avr/ioat94k.h index 68a9fe2cf5..dc0cab6890 100644 --- a/cpukit/score/cpu/avr/avr/ioat94k.h +++ b/cpukit/score/cpu/avr/avr/ioat94k.h @@ -1,41 +1,46 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/ioat94k.h + * + * @brief Definitions for AT94K Series FPSLIC(tm) + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/ioat94k.h - definitions for AT94K series FPSLIC(tm) */ +/* + * Copyright (c) 2002 Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOAT94K_H_ #define _AVR_IOAT94K_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ - #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." #endif @@ -44,7 +49,14 @@ # define _AVR_IOXXX_H_ "ioat94k.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif + +/** + * @defgroup Avr_ioat94k AT94K Series FPSLIC(tm) Definitions + * + * @ingroup avr + */ +/**@{*/ /* I/O registers */ @@ -209,33 +221,33 @@ /* Interrupt vectors */ -#define SIG_FPGA_INTERRUPT0 _VECTOR(1) /* FPGA_INT0 */ +#define SIG_FPGA_INTERRUPT0 _VECTOR(1) /* FPGA_INT0 */ #define SIG_INTERRUPT0 _VECTOR(2) /* EXT_INT0 */ -#define SIG_FPGA_INTERRUPT1 _VECTOR(3) /* FPGA_INT1 */ +#define SIG_FPGA_INTERRUPT1 _VECTOR(3) /* FPGA_INT1 */ #define SIG_INTERRUPT1 _VECTOR(4) /* EXT_INT1 */ -#define SIG_FPGA_INTERRUPT2 _VECTOR(5) /* FPGA_INT2 */ +#define SIG_FPGA_INTERRUPT2 _VECTOR(5) /* FPGA_INT2 */ #define SIG_INTERRUPT2 _VECTOR(6) /* EXT_INT2 */ -#define SIG_FPGA_INTERRUPT3 _VECTOR(7) /* FPGA_INT3 */ +#define SIG_FPGA_INTERRUPT3 _VECTOR(7) /* FPGA_INT3 */ #define SIG_INTERRUPT3 _VECTOR(8) /* EXT_INT3 */ -#define SIG_OUTPUT_COMPARE2 _VECTOR(9) /* TIM2_COMP */ -#define SIG_OVERFLOW2 _VECTOR(10) /* TIM2_OVF */ -#define SIG_INPUT_CAPTURE1 _VECTOR(11) /* TIM1_CAPT */ -#define SIG_OUTPUT_COMPARE1A _VECTOR(12) /* TIM1_COMPA */ -#define SIG_OUTPUT_COMPARE1B _VECTOR(13) /* TIM1_COMPB */ -#define SIG_OVERFLOW1 _VECTOR(14) /* TIM1_OVF */ -#define SIG_OUTPUT_COMPARE0 _VECTOR(15) /* TIM0_COMP */ -#define SIG_OVERFLOW0 _VECTOR(16) /* TIM0_OVF */ -#define SIG_FPGA_INTERRUPT4 _VECTOR(17) /* FPGA_INT4 */ -#define SIG_FPGA_INTERRUPT5 _VECTOR(18) /* FPGA_INT5 */ -#define SIG_FPGA_INTERRUPT6 _VECTOR(19) /* FPGA_INT6 */ -#define SIG_FPGA_INTERRUPT7 _VECTOR(20) /* FPGA_INT7 */ +#define SIG_OUTPUT_COMPARE2 _VECTOR(9) /* TIM2_COMP */ +#define SIG_OVERFLOW2 _VECTOR(10) /* TIM2_OVF */ +#define SIG_INPUT_CAPTURE1 _VECTOR(11) /* TIM1_CAPT */ +#define SIG_OUTPUT_COMPARE1A _VECTOR(12) /* TIM1_COMPA */ +#define SIG_OUTPUT_COMPARE1B _VECTOR(13) /* TIM1_COMPB */ +#define SIG_OVERFLOW1 _VECTOR(14) /* TIM1_OVF */ +#define SIG_OUTPUT_COMPARE0 _VECTOR(15) /* TIM0_COMP */ +#define SIG_OVERFLOW0 _VECTOR(16) /* TIM0_OVF */ +#define SIG_FPGA_INTERRUPT4 _VECTOR(17) /* FPGA_INT4 */ +#define SIG_FPGA_INTERRUPT5 _VECTOR(18) /* FPGA_INT5 */ +#define SIG_FPGA_INTERRUPT6 _VECTOR(19) /* FPGA_INT6 */ +#define SIG_FPGA_INTERRUPT7 _VECTOR(20) /* FPGA_INT7 */ #define SIG_UART0_RECV _VECTOR(21) /* UART0_RXC */ #define SIG_UART0_DATA _VECTOR(22) /* UART0_DRE */ #define SIG_UART0_TRANS _VECTOR(23) /* UART0_TXC */ -#define SIG_FPGA_INTERRUPT8 _VECTOR(24) /* FPGA_INT8 */ -#define SIG_FPGA_INTERRUPT9 _VECTOR(25) /* FPGA_INT9 */ -#define SIG_FPGA_INTERRUPT10 _VECTOR(26) /* FPGA_INT10 */ -#define SIG_FPGA_INTERRUPT11 _VECTOR(27) /* FPGA_INT11 */ +#define SIG_FPGA_INTERRUPT8 _VECTOR(24) /* FPGA_INT8 */ +#define SIG_FPGA_INTERRUPT9 _VECTOR(25) /* FPGA_INT9 */ +#define SIG_FPGA_INTERRUPT10 _VECTOR(26) /* FPGA_INT10 */ +#define SIG_FPGA_INTERRUPT11 _VECTOR(27) /* FPGA_INT11 */ #define SIG_UART1_RECV _VECTOR(28) /* UART1_RXC */ #define SIG_UART1_DATA _VECTOR(29) /* UART1_DRE */ #define SIG_UART1_TRANS _VECTOR(30) /* UART1_TXC */ @@ -553,4 +565,5 @@ #define FLASHEND 0x7FFF #endif +/**@}*/ #endif /* _AVR_IOAT94K_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iocan32.h b/cpukit/score/cpu/avr/avr/iocan32.h index 8833f653f0..512b45d7b5 100644 --- a/cpukit/score/cpu/avr/avr/iocan32.h +++ b/cpukit/score/cpu/avr/avr/iocan32.h @@ -1,39 +1,54 @@ -/* Copyright (c) 2004,2005, Anatoly Sokolov <aesok@pautinka.net> - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* iocan32.h - definitions for CAN32 */ +/** + * @file iocan32.h + * + * @brief Definitions for CAN32 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2004,2005, Anatoly Sokolov <aesok@pautinka.net> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOCAN32_H_ #define _AVR_IOCAN32_H_ 1 +/** + * @defgroup AvrDef_CAN32 CAN32 Defintions + * + * @ingroup avr + * + */ +/**@{**/ + #include <avr/iocanxx.h> /* Constants */ @@ -81,7 +96,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -90,4 +105,5 @@ #define SIGNATURE_2 0x81 +/** @} */ #endif /* _AVR_IOCAN32_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iocanxx.h b/cpukit/score/cpu/avr/avr/iocanxx.h index 70c073a640..a593539cb1 100644 --- a/cpukit/score/cpu/avr/avr/iocanxx.h +++ b/cpukit/score/cpu/avr/avr/iocanxx.h @@ -1,48 +1,60 @@ -/* Copyright (c) 2004,2005,2006 Colin O'Flynn <coflynn@newae.com> - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* This file is based largely on: - - iom128.h by Peter Jansen (bit defines) - - iom169.h by Juergen Schilling <juergen.schilling@honeywell.com> - (register addresses) - - AT90CAN128 Datasheet (bit defines and register addresses) - - Appnote on Mega128 --> AT90Can128 Conversion (for what registers I need - to change) */ - -/* iocanxx.h - definitions for AT90CAN32, AT90CAN64 and AT90CAN128 */ +/** + * @file iocanxx.h + * + * @brief Definitions for AT90CAN32, AT90CAN64 and AT90CAN128 + * + * This file should only be included from <avr/io.h>, never directly. + * + * This file is based largely on: + * - iom128.h by Peter Jansen (bit defines) + * - iom169.h by Juergen Schilling <juergen.schilling@honeywell.com> + * (register addresses) + * - AT90CAN128 Datasheet (bit defines and register addresses) + * - Appnote on Mega128 --> AT90Can128 Conversion (for what registers I need + * to change) + */ + +/* + * Copyright (c) 2004,2005,2006 Colin O'Flynn <coflynn@newae.com> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOCANXX_H_ #define _AVR_IOCANXX_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iocanxx AT90CAN32, AT90CAN64, AT90CAN128 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -52,7 +64,7 @@ # define _AVR_IOXXX_H_ "iocanxx.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers and bit definitions. */ @@ -951,9 +963,9 @@ #define ADPS0 0 /* End Register Bits */ -/* - The ADHSM bit has been removed from all documentation, - as being not needed at all since the comparator has proven +/* + The ADHSM bit has been removed from all documentation, + as being not needed at all since the comparator has proven to be fast enough even without feeding it more power. */ @@ -1974,4 +1986,5 @@ /* End Verbatim */ +/**@}*/ #endif /* _AVR_IOCANXX_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom103.h b/cpukit/score/cpu/avr/avr/iom103.h index 0f4816ff07..6ca791b100 100644 --- a/cpukit/score/cpu/avr/avr/iom103.h +++ b/cpukit/score/cpu/avr/avr/iom103.h @@ -1,41 +1,46 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. +/** + * @file avr/iom103.h + * + * @brief Definitions for ATmega103 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom103.h - definitions for ATmega103 */ +/* + * Copyright (c) 2002, Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM103_H_ #define _AVR_IOM103_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ - #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." #endif @@ -44,7 +49,15 @@ # define _AVR_IOXXX_H_ "iom103.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif + +/** + * @defgroup AvrDef_iom103 ATmega103 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* I/O registers */ @@ -670,5 +683,5 @@ #define SIGNATURE_1 0x97 #define SIGNATURE_2 0x01 - +/** @} */ #endif /* _AVR_IOM103_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom128.h b/cpukit/score/cpu/avr/avr/iom128.h index 0a41879f23..7eeb3f57e6 100644 --- a/cpukit/score/cpu/avr/avr/iom128.h +++ b/cpukit/score/cpu/avr/avr/iom128.h @@ -1,44 +1,56 @@ -/* Copyright (c) 2002, Peter Jansen - Copyright (c) 2007, Atmel Corporation - All rights reserved. +/** + * @file avr/iom128.h + * + * @brief Definitions for ATmega128 + * + * This file should only be included from <avr/io.h>, never directly. + * + * As of 2002-08-27: + * - This should be up to date with data sheet 2467E-AVR-05/02 + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom128.h - defines for ATmega128 - - As of 2002-08-27: - - This should be up to date with data sheet 2467E-AVR-05/02 */ +/* + * Copyright (c) 2002, Peter Jansen + * Copyright (c) 2007, Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM128_H_ #define _AVR_IOM128_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom128 ATmega128 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -48,7 +60,7 @@ # define _AVR_IOXXX_H_ "iom128.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -793,9 +805,9 @@ #define WDP1 1 #define WDP0 0 -/* - The ADHSM bit has been removed from all documentation, - as being not needed at all since the comparator has proven +/* + The ADHSM bit has been removed from all documentation, + as being not needed at all since the comparator has proven to be fast enough even without feeding it more power. */ @@ -965,7 +977,7 @@ #define PINA5 5 #define PINA4 4 #define PINA3 3 -#define PINA2 2 +#define PINA2 2 #define PINA1 1 #define PINA0 0 @@ -995,7 +1007,7 @@ #define PINB5 5 #define PINB4 4 #define PINB3 3 -#define PINB2 2 +#define PINB2 2 #define PINB1 1 #define PINB0 0 @@ -1025,7 +1037,7 @@ #define PINC5 5 #define PINC4 4 #define PINC3 3 -#define PINC2 2 +#define PINC2 2 #define PINC1 1 #define PINC0 0 @@ -1055,7 +1067,7 @@ #define PIND5 5 #define PIND4 4 #define PIND3 3 -#define PIND2 2 +#define PIND2 2 #define PIND1 1 #define PIND0 0 @@ -1085,7 +1097,7 @@ #define PINE5 5 #define PINE4 4 #define PINE3 3 -#define PINE2 2 +#define PINE2 2 #define PINE1 1 #define PINE0 0 @@ -1115,7 +1127,7 @@ #define PINF5 5 #define PINF4 4 #define PINF3 3 -#define PINF2 2 +#define PINF2 2 #define PINF1 1 #define PINF0 0 @@ -1136,7 +1148,7 @@ /* Port G Input Pins - PING */ #define PING4 4 #define PING3 3 -#define PING2 2 +#define PING2 2 #define PING1 1 #define PING0 0 @@ -1190,7 +1202,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -1199,4 +1211,5 @@ #define SIGNATURE_2 0x02 +/**@}*/ #endif /* _AVR_IOM128_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom1280.h b/cpukit/score/cpu/avr/avr/iom1280.h index 5bed7c9a43..a6aff362b8 100644 --- a/cpukit/score/cpu/avr/avr/iom1280.h +++ b/cpukit/score/cpu/avr/avr/iom1280.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Definitions for ATmega1280 + */ + /* Copyright (c) 2005 Anatoly Sokolov All rights reserved. @@ -36,6 +42,14 @@ #include <avr/iomxx0_1.h> +/** + * @defgroup AvrDef_iom1280 ATmega1280 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Constants */ #define SPM_PAGESIZE 256 #define RAMEND 0x21FF @@ -89,5 +103,6 @@ #define SIGNATURE_1 0x97 #define SIGNATURE_2 0x03 +/** @} */ #endif /* _AVR_IOM1280_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom1281.h b/cpukit/score/cpu/avr/avr/iom1281.h index 39f6916ed1..8b764c675e 100644 --- a/cpukit/score/cpu/avr/avr/iom1281.h +++ b/cpukit/score/cpu/avr/avr/iom1281.h @@ -1,39 +1,52 @@ -/* Copyright (c) 2005 Anatoly Sokolov - All rights reserved. +/** + * @file avr/iom1281.h + * + * @brief Definitions for ATmega1281 + */ + +/* + * Copyright (c) 2005 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom1281.h - definitions for ATmega1281 */ #ifndef _AVR_IOM1281_H_ #define _AVR_IOM1281_H_ 1 +/** + * @defgroup Avr_iom1281 ATmega1281 Definitions + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iomxx0_1.h> /* Constants */ @@ -81,7 +94,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -89,5 +102,5 @@ #define SIGNATURE_1 0x97 #define SIGNATURE_2 0x04 - +/**@}*/ #endif /* _AVR_IOM1281_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom1284p.h b/cpukit/score/cpu/avr/avr/iom1284p.h index 0e5a6f5cd6..3076de21c6 100644 --- a/cpukit/score/cpu/avr/avr/iom1284p.h +++ b/cpukit/score/cpu/avr/avr/iom1284p.h @@ -1,1131 +1,1141 @@ -/* Copyright (c) 2007 Atmel Corporation
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * 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.
-
- * Neither the name of the copyright holders nor the names of
- 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.
-*/
-
-
-/* avr/iom1284p.h - definitions for ATmega1284P. */
-
-/* This file should only be included from <avr/io.h>, never directly. */
-
-#ifndef _AVR_IO_H_
-# error "Include <avr/io.h> instead of this file."
-#endif
-
-#ifndef _AVR_IOXXX_H_
-# define _AVR_IOXXX_H_ "iom1284p.h"
-#else
-# error "Attempt to include more than one <avr/ioXXX.h> file."
-#endif
-
-
-#ifndef _AVR_IOM1284P_H_
-#define _AVR_IOM1284P_H_ 1
-
-
-/* Registers and associated bit numbers */
-
-#define PINA _SFR_IO8(0x00)
-#define PINA0 0
-#define PINA1 1
-#define PINA2 2
-#define PINA3 3
-#define PINA4 4
-#define PINA5 5
-#define PINA6 6
-#define PINA7 7
-
-#define DDRA _SFR_IO8(0x01)
-#define DDA0 0
-#define DDA1 1
-#define DDA2 2
-#define DDA3 3
-#define DDA4 4
-#define DDA5 5
-#define DDA6 6
-#define DDA7 7
-
-#define PORTA _SFR_IO8(0x02)
-#define PORTA0 0
-#define PORTA1 1
-#define PORTA2 2
-#define PORTA3 3
-#define PORTA4 4
-#define PORTA5 5
-#define PORTA6 6
-#define PORTA7 7
-
-#define PINB _SFR_IO8(0x03)
-#define PINB0 0
-#define PINB1 1
-#define PINB2 2
-#define PINB3 3
-#define PINB4 4
-#define PINB5 5
-#define PINB6 6
-#define PINB7 7
-
-#define DDRB _SFR_IO8(0x04)
-#define DDB0 0
-#define DDB1 1
-#define DDB2 2
-#define DDB3 3
-#define DDB4 4
-#define DDB5 5
-#define DDB6 6
-#define DDB7 7
-
-#define PORTB _SFR_IO8(0x05)
-#define PORTB0 0
-#define PORTB1 1
-#define PORTB2 2
-#define PORTB3 3
-#define PORTB4 4
-#define PORTB5 5
-#define PORTB6 6
-#define PORTB7 7
-
-#define PINC _SFR_IO8(0x06)
-#define PINC0 0
-#define PINC1 1
-#define PINC2 2
-#define PINC3 3
-#define PINC4 4
-#define PINC5 5
-#define PINC6 6
-#define PINC7 7
-
-#define DDRC _SFR_IO8(0x07)
-#define DDC0 0
-#define DDC1 1
-#define DDC2 2
-#define DDC3 3
-#define DDC4 4
-#define DDC5 5
-#define DDC6 6
-#define DDC7 7
-
-#define PORTC _SFR_IO8(0x08)
-#define PORTC0 0
-#define PORTC1 1
-#define PORTC2 2
-#define PORTC3 3
-#define PORTC4 4
-#define PORTC5 5
-#define PORTC6 6
-#define PORTC7 7
-
-#define PIND _SFR_IO8(0x09)
-#define PIND0 0
-#define PIND1 1
-#define PIND2 2
-#define PIND3 3
-#define PIND4 4
-#define PIND5 5
-#define PIND6 6
-#define PIND7 7
-
-#define DDRD _SFR_IO8(0x0A)
-#define DDD0 0
-#define DDD1 1
-#define DDD2 2
-#define DDD3 3
-#define DDD4 4
-#define DDD5 5
-#define DDD6 6
-#define DDD7 7
-
-#define PORTD _SFR_IO8(0x0B)
-#define PORTD0 0
-#define PORTD1 1
-#define PORTD2 2
-#define PORTD3 3
-#define PORTD4 4
-#define PORTD5 5
-#define PORTD6 6
-#define PORTD7 7
-
-#define TIFR0 _SFR_IO8(0x15)
-#define TOV0 0
-#define OCF0A 1
-#define OCF0B 2
-
-#define TIFR1 _SFR_IO8(0x16)
-#define TOV1 0
-#define OCF1A 1
-#define OCF1B 2
-#define ICF1 5
-
-#define TIFR2 _SFR_IO8(0x17)
-#define TOV2 0
-#define OCF2A 1
-#define OCF2B 2
-
-#define TIFR3 _SFR_IO8(0x18)
-#define TOV3 0
-#define OCF3A 1
-#define OCF3B 2
-#define ICF3 5
-
-#define PCIFR _SFR_IO8(0x1B)
-#define PCIF0 0
-#define PCIF1 1
-#define PCIF2 2
-#define PCIF3 3
-
-#define EIFR _SFR_IO8(0x1C)
-#define INTF0 0
-#define INTF1 1
-#define INTF2 2
-
-#define EIMSK _SFR_IO8(0x1D)
-#define INT0 0
-#define INT1 1
-#define INT2 2
-
-#define GPIOR0 _SFR_IO8(0x1E)
-#define GPIOR00 0
-#define GPIOR01 1
-#define GPIOR02 2
-#define GPIOR03 3
-#define GPIOR04 4
-#define GPIOR05 5
-#define GPIOR06 6
-#define GPIOR07 7
-
-#define EECR _SFR_IO8(0x1F)
-#define EERE 0
-#define EEPE 1
-#define EEMPE 2
-#define EERIE 3
-#define EEPM0 4
-#define EEPM1 5
-
-#define EEDR _SFR_IO8(0x20)
-#define EEDR0 0
-#define EEDR1 1
-#define EEDR2 2
-#define EEDR3 3
-#define EEDR4 4
-#define EEDR5 5
-#define EEDR6 6
-#define EEDR7 7
-
-#define EEAR _SFR_IO16(0x21)
-
-#define EEARL _SFR_IO8(0x21)
-#define EEAR0 0
-#define EEAR1 1
-#define EEAR2 2
-#define EEAR3 3
-#define EEAR4 4
-#define EEAR5 5
-#define EEAR6 6
-#define EEAR7 7
-
-#define EEARH _SFR_IO8(0x22)
-#define EEAR8 0
-#define EEAR9 1
-#define EEAR10 2
-#define EEAR11 3
-
-#define GTCCR _SFR_IO8(0x23)
-#define PSRSYNC 0
-#define PSRASY 1
-#define TSM 7
-
-#define TCCR0A _SFR_IO8(0x24)
-#define WGM00 0
-#define WGM01 1
-#define COM0B0 4
-#define COM0B1 5
-#define COM0A0 6
-#define COM0A1 7
-
-#define TCCR0B _SFR_IO8(0x25)
-#define CS00 0
-#define CS01 1
-#define CS02 2
-#define WGM02 3
-#define FOC0B 6
-#define FOC0A 7
-
-#define TCNT0 _SFR_IO8(0x26)
-#define TCNT0_0 0
-#define TCNT0_1 1
-#define TCNT0_2 2
-#define TCNT0_3 3
-#define TCNT0_4 4
-#define TCNT0_5 5
-#define TCNT0_6 6
-#define TCNT0_7 7
-
-#define OCR0A _SFR_IO8(0x27)
-#define OCR0A_0 0
-#define OCR0A_1 1
-#define OCR0A_2 2
-#define OCR0A_3 3
-#define OCR0A_4 4
-#define OCR0A_5 5
-#define OCR0A_6 6
-#define OCR0A_7 7
-
-#define OCR0B _SFR_IO8(0x28)
-#define OCR0B_0 0
-#define OCR0B_1 1
-#define OCR0B_2 2
-#define OCR0B_3 3
-#define OCR0B_4 4
-#define OCR0B_5 5
-#define OCR0B_6 6
-#define OCR0B_7 7
-
-#define GPIOR1 _SFR_IO8(0x2A)
-#define GPIOR10 0
-#define GPIOR11 1
-#define GPIOR12 2
-#define GPIOR13 3
-#define GPIOR14 4
-#define GPIOR15 5
-#define GPIOR16 6
-#define GPIOR17 7
-
-#define GPIOR2 _SFR_IO8(0x2B)
-#define GPIOR20 0
-#define GPIOR21 1
-#define GPIOR22 2
-#define GPIOR23 3
-#define GPIOR24 4
-#define GPIOR25 5
-#define GPIOR26 6
-#define GPIOR27 7
-
-#define SPCR _SFR_IO8(0x2C)
-#define SPR0 0
-#define SPR1 1
-#define CPHA 2
-#define CPOL 3
-#define MSTR 4
-#define DORD 5
-#define SPE 6
-#define SPIE 7
-
-#define SPSR _SFR_IO8(0x2D)
-#define SPI2X 0
-#define WCOL 6
-#define SPIF 7
-
-#define SPDR _SFR_IO8(0x2E)
-#define SPDR0 0
-#define SPDR1 1
-#define SPDR2 2
-#define SPDR3 3
-#define SPDR4 4
-#define SPDR5 5
-#define SPDR6 6
-#define SPDR7 7
-
-#define ACSR _SFR_IO8(0x30)
-#define ACIS0 0
-#define ACIS1 1
-#define ACIC 2
-#define ACIE 3
-#define ACI 4
-#define ACO 5
-#define ACBG 6
-#define ACD 7
-
-#define OCDR _SFR_IO8(0x31)
-#define OCDR0 0
-#define OCDR1 1
-#define OCDR2 2
-#define OCDR3 3
-#define OCDR4 4
-#define OCDR5 5
-#define OCDR6 6
-#define OCDR7 7
-
-#define SMCR _SFR_IO8(0x33)
-#define SE 0
-#define SM0 1
-#define SM1 2
-#define SM2 3
-
-#define MCUSR _SFR_IO8(0x34)
-#define PORF 0
-#define EXTRF 1
-#define BORF 2
-#define WDRF 3
-#define JTRF 4
-
-#define MCUCR _SFR_IO8(0x35)
-#define IVCE 0
-#define IVSEL 1
-#define PUD 4
-#define BODSE 5
-#define BODS 6
-#define JTD 7
-
-#define SPMCSR _SFR_IO8(0x37)
-#define SPMEN 0
-#define PGERS 1
-#define PGWRT 2
-#define BLBSET 3
-#define RWWSRE 4
-#define SIGRD 5
-#define RWWSB 6
-#define SPMIE 7
-
-#define RAMPZ _SFR_IO8(0x3B)
-#define RAMPZ0 0
-
-#define WDTCSR _SFR_MEM8(0x60)
-#define WDP0 0
-#define WDP1 1
-#define WDP2 2
-#define WDE 3
-#define WDCE 4
-#define WDP3 5
-#define WDIE 6
-#define WDIF 7
-
-#define CLKPR _SFR_MEM8(0x61)
-#define CLKPS0 0
-#define CLKPS1 1
-#define CLKPS2 2
-#define CLKPS3 3
-#define CLKPCE 7
-
-#define PRR0 _SFR_MEM8(0x64)
-#define PRADC 0
-#define PRUSART0 1
-#define PRSPI 2
-#define PRTIM1 3
-#define PRUSART1 4
-#define PRTIM0 5
-#define PRTIM2 6
-#define PRTWI 7
-
-#define PRR1 _SFR_MEM8(0x65)
-#define PRTIM3 0
-
-#define OSCCAL _SFR_MEM8(0x66)
-#define CAL0 0
-#define CAL1 1
-#define CAL2 2
-#define CAL3 3
-#define CAL4 4
-#define CAL5 5
-#define CAL6 6
-#define CAL7 7
-
-#define PCICR _SFR_MEM8(0x68)
-#define PCIE0 0
-#define PCIE1 1
-#define PCIE2 2
-#define PCIE3 3
-
-#define EICRA _SFR_MEM8(0x69)
-#define ISC00 0
-#define ISC01 1
-#define ISC10 2
-#define ISC11 3
-#define ISC20 4
-#define ISC21 5
-
-#define PCMSK0 _SFR_MEM8(0x6B)
-#define PCINT0 0
-#define PCINT1 1
-#define PCINT2 2
-#define PCINT3 3
-#define PCINT4 4
-#define PCINT5 5
-#define PCINT6 6
-#define PCINT7 7
-
-#define PCMSK1 _SFR_MEM8(0x6C)
-#define PCINT8 0
-#define PCINT9 1
-#define PCINT10 2
-#define PCINT11 3
-#define PCINT12 4
-#define PCINT13 5
-#define PCINT14 6
-#define PCINT15 7
-
-#define PCMSK2 _SFR_MEM8(0x6D)
-#define PCINT16 0
-#define PCINT17 1
-#define PCINT18 2
-#define PCINT19 3
-#define PCINT20 4
-#define PCINT21 5
-#define PCINT22 6
-#define PCINT23 7
-
-#define TIMSK0 _SFR_MEM8(0x6E)
-#define TOIE0 0
-#define OCIE0A 1
-#define OCIE0B 2
-
-#define TIMSK1 _SFR_MEM8(0x6F)
-#define TOIE1 0
-#define OCIE1A 1
-#define OCIE1B 2
-#define ICIE1 5
-
-#define TIMSK2 _SFR_MEM8(0x70)
-#define TOIE2 0
-#define OCIE2A 1
-#define OCIE2B 2
-
-#define TIMSK3 _SFR_MEM8(0x71)
-#define TOIE3 0
-#define OCIE3A 1
-#define OCIE3B 2
-#define ICIE3 5
-
-#define PCMSK3 _SFR_MEM8(0x73)
-#define PCINT24 0
-#define PCINT25 1
-#define PCINT26 2
-#define PCINT27 3
-#define PCINT28 4
-#define PCINT29 5
-#define PCINT30 6
-#define PCINT31 7
-
-#ifndef __ASSEMBLER__
-#define ADC _SFR_MEM16(0x78)
-#endif
-#define ADCW _SFR_MEM16(0x78)
-
-#define ADCL _SFR_MEM8(0x78)
-#define ADCL0 0
-#define ADCL1 1
-#define ADCL2 2
-#define ADCL3 3
-#define ADCL4 4
-#define ADCL5 5
-#define ADCL6 6
-#define ADCL7 7
-
-#define ADCH _SFR_MEM8(0x79)
-#define ADCH0 0
-#define ADCH1 1
-#define ADCH2 2
-#define ADCH3 3
-#define ADCH4 4
-#define ADCH5 5
-#define ADCH6 6
-#define ADCH7 7
-
-#define ADCSRA _SFR_MEM8(0x7A)
-#define ADPS0 0
-#define ADPS1 1
-#define ADPS2 2
-#define ADIE 3
-#define ADIF 4
-#define ADATE 5
-#define ADSC 6
-#define ADEN 7
-
-#define ADCSRB _SFR_MEM8(0x7B)
-#define ADTS0 0
-#define ADTS1 1
-#define ADTS2 2
-#define ACME 6
-
-#define ADMUX _SFR_MEM8(0x7C)
-#define MUX0 0
-#define MUX1 1
-#define MUX2 2
-#define MUX3 3
-#define MUX4 4
-#define ADLAR 5
-#define REFS0 6
-#define REFS1 7
-
-#define DIDR0 _SFR_MEM8(0x7E)
-#define ADC0D 0
-#define ADC1D 1
-#define ADC2D 2
-#define ADC3D 3
-#define ADC4D 4
-#define ADC5D 5
-#define ADC6D 6
-#define ADC7D 7
-
-#define DIDR1 _SFR_MEM8(0x7F)
-#define AIN0D 0
-#define AIN1D 1
-
-#define TCCR1A _SFR_MEM8(0x80)
-#define WGM10 0
-#define WGM11 1
-#define COM1B0 4
-#define COM1B1 5
-#define COM1A0 6
-#define COM1A1 7
-
-#define TCCR1B _SFR_MEM8(0x81)
-#define CS10 0
-#define CS11 1
-#define CS12 2
-#define WGM12 3
-#define WGM13 4
-#define ICES1 6
-#define ICNC1 7
-
-#define TCCR1C _SFR_MEM8(0x82)
-#define FOC1B 6
-#define FOC1A 7
-
-#define TCNT1 _SFR_MEM16(0x84)
-
-#define TCNT1L _SFR_MEM8(0x84)
-#define TCNT1L0 0
-#define TCNT1L1 1
-#define TCNT1L2 2
-#define TCNT1L3 3
-#define TCNT1L4 4
-#define TCNT1L5 5
-#define TCNT1L6 6
-#define TCNT1L7 7
-
-#define TCNT1H _SFR_MEM8(0x85)
-#define TCNT1H0 0
-#define TCNT1H1 1
-#define TCNT1H2 2
-#define TCNT1H3 3
-#define TCNT1H4 4
-#define TCNT1H5 5
-#define TCNT1H6 6
-#define TCNT1H7 7
-
-#define ICR1 _SFR_MEM16(0x86)
-
-#define ICR1L _SFR_MEM8(0x86)
-#define ICR1L0 0
-#define ICR1L1 1
-#define ICR1L2 2
-#define ICR1L3 3
-#define ICR1L4 4
-#define ICR1L5 5
-#define ICR1L6 6
-#define ICR1L7 7
-
-#define ICR1H _SFR_MEM8(0x87)
-#define ICR1H0 0
-#define ICR1H1 1
-#define ICR1H2 2
-#define ICR1H3 3
-#define ICR1H4 4
-#define ICR1H5 5
-#define ICR1H6 6
-#define ICR1H7 7
-
-#define OCR1A _SFR_MEM16(0x88)
-
-#define OCR1AL _SFR_MEM8(0x88)
-#define OCR1AL0 0
-#define OCR1AL1 1
-#define OCR1AL2 2
-#define OCR1AL3 3
-#define OCR1AL4 4
-#define OCR1AL5 5
-#define OCR1AL6 6
-#define OCR1AL7 7
-
-#define OCR1AH _SFR_MEM8(0x89)
-#define OCR1AH0 0
-#define OCR1AH1 1
-#define OCR1AH2 2
-#define OCR1AH3 3
-#define OCR1AH4 4
-#define OCR1AH5 5
-#define OCR1AH6 6
-#define OCR1AH7 7
-
-#define OCR1B _SFR_MEM16(0x8A)
-
-#define OCR1BL _SFR_MEM8(0x8A)
-#define OCR1AL0 0
-#define OCR1AL1 1
-#define OCR1AL2 2
-#define OCR1AL3 3
-#define OCR1AL4 4
-#define OCR1AL5 5
-#define OCR1AL6 6
-#define OCR1AL7 7
-
-#define OCR1BH _SFR_MEM8(0x8B)
-#define OCR1AH0 0
-#define OCR1AH1 1
-#define OCR1AH2 2
-#define OCR1AH3 3
-#define OCR1AH4 4
-#define OCR1AH5 5
-#define OCR1AH6 6
-#define OCR1AH7 7
-
-#define TCCR3A _SFR_MEM8(0x90)
-#define WGM30 0
-#define WGM31 1
-#define COM3B0 4
-#define COM3B1 5
-#define COM3A0 6
-#define COM3A1 7
-
-#define TCCR3B _SFR_MEM8(0x91)
-#define CS30 0
-#define CS31 1
-#define CS32 2
-#define WGM32 3
-#define WGM33 4
-#define ICES3 6
-#define ICNC3 7
-
-#define TCCR3C _SFR_MEM8(0x92)
-#define FOC3B 6
-#define FOC3A 7
-
-#define TCNT3 _SFR_MEM16(0x94)
-
-#define TCNT3L _SFR_MEM8(0x94)
-#define TCNT3L0 0
-#define TCNT3L1 1
-#define TCNT3L2 2
-#define TCNT3L3 3
-#define TCNT3L4 4
-#define TCNT3L5 5
-#define TCNT3L6 6
-#define TCNT3L7 7
-
-#define TCNT3H _SFR_MEM8(0x95)
-#define TCNT3H0 0
-#define TCNT3H1 1
-#define TCNT3H2 2
-#define TCNT3H3 3
-#define TCNT3H4 4
-#define TCNT3H5 5
-#define TCNT3H6 6
-#define TCNT3H7 7
-
-#define ICR3 _SFR_MEM16(0x96)
-
-#define ICR3L _SFR_MEM8(0x96)
-#define ICR3L0 0
-#define ICR3L1 1
-#define ICR3L2 2
-#define ICR3L3 3
-#define ICR3L4 4
-#define ICR3L5 5
-#define ICR3L6 6
-#define ICR3L7 7
-
-#define ICR3H _SFR_MEM8(0x97)
-#define ICR3H0 0
-#define ICR3H1 1
-#define ICR3H2 2
-#define ICR3H3 3
-#define ICR3H4 4
-#define ICR3H5 5
-#define ICR3H6 6
-#define ICR3H7 7
-
-#define OCR3A _SFR_MEM16(0x98)
-
-#define OCR3AL _SFR_MEM8(0x98)
-#define OCR3AL0 0
-#define OCR3AL1 1
-#define OCR3AL2 2
-#define OCR3AL3 3
-#define OCR3AL4 4
-#define OCR3AL5 5
-#define OCR3AL6 6
-#define OCR3AL7 7
-
-#define OCR3AH _SFR_MEM8(0x99)
-#define OCR3AH0 0
-#define OCR3AH1 1
-#define OCR3AH2 2
-#define OCR3AH3 3
-#define OCR3AH4 4
-#define OCR3AH5 5
-#define OCR3AH6 6
-#define OCR3AH7 7
-
-#define OCR3B _SFR_MEM16(0x9A)
-
-#define OCR3BL _SFR_MEM8(0x9A)
-#define OCR3AL0 0
-#define OCR3AL1 1
-#define OCR3AL2 2
-#define OCR3AL3 3
-#define OCR3AL4 4
-#define OCR3AL5 5
-#define OCR3AL6 6
-#define OCR3AL7 7
-
-#define OCR3BH _SFR_MEM8(0x9B)
-#define OCR3AH0 0
-#define OCR3AH1 1
-#define OCR3AH2 2
-#define OCR3AH3 3
-#define OCR3AH4 4
-#define OCR3AH5 5
-#define OCR3AH6 6
-#define OCR3AH7 7
-
-#define TCCR2A _SFR_MEM8(0xB0)
-#define WGM20 0
-#define WGM21 1
-#define COM2B0 4
-#define COM2B1 5
-#define COM2A0 6
-#define COM2A1 7
-
-#define TCCR2B _SFR_MEM8(0xB1)
-#define CS20 0
-#define CS21 1
-#define CS22 2
-#define WGM22 3
-#define FOC2B 6
-#define FOC2A 7
-
-#define TCNT2 _SFR_MEM8(0xB2)
-#define TCNT2_0 0
-#define TCNT2_1 1
-#define TCNT2_2 2
-#define TCNT2_3 3
-#define TCNT2_4 4
-#define TCNT2_5 5
-#define TCNT2_6 6
-#define TCNT2_7 7
-
-#define OCR2A _SFR_MEM8(0xB3)
-#define OCR2_0 0
-#define OCR2_1 1
-#define OCR2_2 2
-#define OCR2_3 3
-#define OCR2_4 4
-#define OCR2_5 5
-#define OCR2_6 6
-#define OCR2_7 7
-
-#define OCR2B _SFR_MEM8(0xB4)
-#define OCR2_0 0
-#define OCR2_1 1
-#define OCR2_2 2
-#define OCR2_3 3
-#define OCR2_4 4
-#define OCR2_5 5
-#define OCR2_6 6
-#define OCR2_7 7
-
-#define ASSR _SFR_MEM8(0xB6)
-#define TCR2BUB 0
-#define TCR2AUB 1
-#define OCR2BUB 2
-#define OCR2AUB 3
-#define TCN2UB 4
-#define AS2 5
-#define EXCLK 6
-
-#define TWBR _SFR_MEM8(0xB8)
-#define TWBR0 0
-#define TWBR1 1
-#define TWBR2 2
-#define TWBR3 3
-#define TWBR4 4
-#define TWBR5 5
-#define TWBR6 6
-#define TWBR7 7
-
-#define TWSR _SFR_MEM8(0xB9)
-#define TWPS0 0
-#define TWPS1 1
-#define TWS3 3
-#define TWS4 4
-#define TWS5 5
-#define TWS6 6
-#define TWS7 7
-
-#define TWAR _SFR_MEM8(0xBA)
-#define TWGCE 0
-#define TWA0 1
-#define TWA1 2
-#define TWA2 3
-#define TWA3 4
-#define TWA4 5
-#define TWA5 6
-#define TWA6 7
-
-#define TWDR _SFR_MEM8(0xBB)
-#define TWD0 0
-#define TWD1 1
-#define TWD2 2
-#define TWD3 3
-#define TWD4 4
-#define TWD5 5
-#define TWD6 6
-#define TWD7 7
-
-#define TWCR _SFR_MEM8(0xBC)
-#define TWIE 0
-#define TWEN 2
-#define TWWC 3
-#define TWSTO 4
-#define TWSTA 5
-#define TWEA 6
-#define TWINT 7
-
-#define TWAMR _SFR_MEM8(0xBD)
-#define TWAM0 1
-#define TWAM1 2
-#define TWAM2 3
-#define TWAM3 4
-#define TWAM4 5
-#define TWAM5 6
-#define TWAM6 7
-
-#define UCSR0A _SFR_MEM8(0xC0)
-#define MPCM0 0
-#define U2X0 1
-#define UPE0 2
-#define DOR0 3
-#define FE0 4
-#define UDRE0 5
-#define TXC0 6
-#define RXC0 7
-
-#define UCSR0B _SFR_MEM8(0xC1)
-#define TXB80 0
-#define RXB80 1
-#define UCSZ02 2
-#define TXEN0 3
-#define RXEN0 4
-#define UDRIE0 5
-#define TXCIE0 6
-#define RXCIE0 7
-
-#define UCSR0C _SFR_MEM8(0xC2)
-#define UCPOL0 0
-#define UCSZ00 1
-#define UCSZ01 2
-#define USBS0 3
-#define UPM00 4
-#define UPM01 5
-#define UMSEL00 6
-#define UMSEL01 7
-
-#define UBRR0 _SFR_MEM16(0xC4)
-
-#define UBRR0L _SFR_MEM8(0xC4)
-#define UBRR0_0 0
-#define UBRR0_1 1
-#define UBRR0_2 2
-#define UBRR0_3 3
-#define UBRR0_4 4
-#define UBRR0_5 5
-#define UBRR0_6 6
-#define UBRR0_7 7
-
-#define UBRR0H _SFR_MEM8(0xC5)
-#define UBRR0_8 0
-#define UBRR0_9 1
-#define UBRR0_10 2
-#define UBRR0_11 3
-
-#define UDR0 _SFR_MEM8(0xC6)
-#define UDR0_0 0
-#define UDR0_1 1
-#define UDR0_2 2
-#define UDR0_3 3
-#define UDR0_4 4
-#define UDR0_5 5
-#define UDR0_6 6
-#define UDR0_7 7
-
-#define UCSR1A _SFR_MEM8(0xC8)
-#define MPCM1 0
-#define U2X1 1
-#define UPE1 2
-#define DOR1 3
-#define FE1 4
-#define UDRE1 5
-#define TXC1 6
-#define RXC1 7
-
-#define UCSR1B _SFR_MEM8(0xC9)
-#define TXB81 0
-#define RXB81 1
-#define UCSZ12 2
-#define TXEN1 3
-#define RXEN1 4
-#define UDRIE1 5
-#define TXCIE1 6
-#define RXCIE1 7
-
-#define UCSR1C _SFR_MEM8(0xCA)
-#define UCPOL1 0
-#define UCSZ10 1
-#define UCSZ11 2
-#define USBS1 3
-#define UPM10 4
-#define UPM11 5
-#define UMSEL10 6
-#define UMSEL11 7
-
-#define UBRR1 _SFR_MEM16(0xCC)
-
-#define UBRR1L _SFR_MEM8(0xCC)
-#define UBRR1_0 0
-#define UBRR1_1 1
-#define UBRR1_2 2
-#define UBRR1_3 3
-#define UBRR1_4 4
-#define UBRR1_5 5
-#define UBRR1_6 6
-#define UBRR1_7 7
-
-#define UBRR1H _SFR_MEM8(0xCD)
-#define UBRR1_8 0
-#define UBRR1_9 1
-#define UBRR1_10 2
-#define UBRR1_11 3
-
-#define UDR1 _SFR_MEM8(0xCE)
-#define UDR1_0 0
-#define UDR1_1 1
-#define UDR1_2 2
-#define UDR1_3 3
-#define UDR1_4 4
-#define UDR1_5 5
-#define UDR1_6 6
-#define UDR1_7 7
-
-
-/* Interrupt Vectors */
-/* Interrupt Vector 0 is the reset vector. */
-
-#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */
-#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */
-#define INT2_vect _VECTOR(3) /* External Interrupt Request 2 */
-#define PCINT0_vect _VECTOR(4) /* Pin Change Interrupt Request 0 */
-#define PCINT1_vect _VECTOR(5) /* Pin Change Interrupt Request 1 */
-#define PCINT2_vect _VECTOR(6) /* Pin Change Interrupt Request 2 */
-#define PCINT3_vect _VECTOR(7) /* Pin Change Interrupt Request 3 */
-#define WDT_vect _VECTOR(8) /* Watchdog Time-out Interrupt */
-#define TIMER2_COMPA_vect _VECTOR(9) /* Timer/Counter2 Compare Match A */
-#define TIMER2_COMPB_vect _VECTOR(10) /* Timer/Counter2 Compare Match B */
-#define TIMER2_OVF_vect _VECTOR(11) /* Timer/Counter2 Overflow */
-#define TIMER1_CAPT_vect _VECTOR(12) /* Timer/Counter1 Capture Event */
-#define TIMER1_COMPA_vect _VECTOR(13) /* Timer/Counter1 Compare Match A */
-#define TIMER1_COMPB_vect _VECTOR(14) /* Timer/Counter1 Compare Match B */
-#define TIMER1_OVF_vect _VECTOR(15) /* Timer/Counter1 Overflow */
-#define TIMER0_COMPA_vect _VECTOR(16) /* Timer/Counter0 Compare Match A */
-#define TIMER0_COMPB_vect _VECTOR(17) /* Timer/Counter0 Compare Match B */
-#define TIMER0_OVF_vect _VECTOR(18) /* Timer/Counter0 Overflow */
-#define SPI_STC_vect _VECTOR(19) /* SPI Serial Transfer Complete */
-#define USART0_RX_vect _VECTOR(20) /* USART0, Rx Complete */
-#define USART0_UDRE_vect _VECTOR(21) /* USART0 Data register Empty */
-#define USART0_TX_vect _VECTOR(22) /* USART0, Tx Complete */
-#define ANALOG_COMP_vect _VECTOR(23) /* Analog Comparator */
-#define ADC_vect _VECTOR(24) /* ADC Conversion Complete */
-#define EE_READY_vect _VECTOR(25) /* EEPROM Ready */
-#define TWI_vect _VECTOR(26) /* 2-wire Serial Interface */
-#define SPM_READY_vect _VECTOR(27) /* Store Program Memory Read */
-#define USART1_RX_vect _VECTOR(28) /* USART1 RX complete */
-#define USART1_UDRE_vect _VECTOR(29) /* USART1 Data Register Empty */
-#define USART1_TX_vect _VECTOR(30) /* USART1 TX complete */
-#define TIMER3_CAPT_vect _VECTOR(31) /* Timer/Counter3 Capture Event */
-#define TIMER3_COMPA_vect _VECTOR(32) /* Timer/Counter3 Compare Match A */
-#define TIMER3_COMPB_vect _VECTOR(33) /* Timer/Counter3 Compare Match B */
-#define TIMER3_OVF_vect _VECTOR(34) /* Timer/Counter3 Overflow */
-
-#define _VECTORS_SIZE (35 * 4)
-
-
-/* Constants */
-#define SPM_PAGESIZE 256
-#define RAMEND 0x40FF /* Last On-Chip SRAM Location */
-#define XRAMSIZE 0
-#define XRAMEND RAMEND
-#define E2END 0xFFF
-#define E2PAGESIZE 8
-#define FLASHEND 0x1FFFF
-
-
-/* Fuses */
-#define FUSE_MEMORY_SIZE 3
-
-/* Low Fuse Byte */
-#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */
-#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */
-#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */
-#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */
-#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */
-#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */
-#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */
-#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */
-#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8)
-
-/* High Fuse Byte */
-#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */
-#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */
-#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */
-#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */
-#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */
-#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */
-#define FUSE_JTAGEN (unsigned char)~_BV(6) /* Enable JTAG */
-#define FUSE_OCDEN (unsigned char)~_BV(7) /* Enable OCD */
-#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_SPIEN & FUSE_JTAGEN)
-
-/* Extended Fuse Byte */
-#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */
-#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */
-#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */
-#define EFUSE_DEFAULT (0xFF)
-
-
-/* Lock Bits */
-#define __LOCK_BITS_EXIST
-#define __BOOT_LOCK_BITS_0_EXIST
-#define __BOOT_LOCK_BITS_1_EXIST
-
-
-/* Signature */
-#define SIGNATURE_0 0x1E
-#define SIGNATURE_1 0x97
-#define SIGNATURE_2 0x05
-
-
-#endif /* _AVR_IOM1284P_H_ */
+/** + * @file avr/iom1284p.h + * + * @brief Definitions for ATmega1284P + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2007 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ +# error "Include <avr/io.h> instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom1284p.h" +#else +# error "Attempt to include more than one <avr/ioXXX.h> file." +#endif + + +#ifndef _AVR_IOM1284P_H_ +#define _AVR_IOM1284P_H_ 1 + +/** + * @defgroup Avr_iom1284p ATmega1284P Definitions + * + * @ingroup avr + */ +/**@{*/ + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x01) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x02) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 +#define PORTA4 4 +#define PORTA5 5 +#define PORTA6 6 +#define PORTA7 7 + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define TIFR3 _SFR_IO8(0x18) +#define TOV3 0 +#define OCF3A 1 +#define OCF3B 2 +#define ICF3 5 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 +#define PCIF3 3 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 +#define EEAR10 2 +#define EEAR11 3 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define PSRASY 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCR0A_0 0 +#define OCR0A_1 1 +#define OCR0A_2 2 +#define OCR0A_3 3 +#define OCR0A_4 4 +#define OCR0A_5 5 +#define OCR0A_6 6 +#define OCR0A_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define BODSE 5 +#define BODS 6 +#define JTD 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define SIGRD 5 +#define RWWSB 6 +#define SPMIE 7 + +#define RAMPZ _SFR_IO8(0x3B) +#define RAMPZ0 0 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR0 _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRUSART1 4 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define PRR1 _SFR_MEM8(0x65) +#define PRTIM3 0 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 +#define PCIE3 3 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#define TIMSK3 _SFR_MEM8(0x71) +#define TOIE3 0 +#define OCIE3A 1 +#define OCIE3B 2 +#define ICIE3 5 + +#define PCMSK3 _SFR_MEM8(0x73) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 +#define PCINT28 4 +#define PCINT29 5 +#define PCINT30 6 +#define PCINT31 7 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define TCCR3A _SFR_MEM8(0x90) +#define WGM30 0 +#define WGM31 1 +#define COM3B0 4 +#define COM3B1 5 +#define COM3A0 6 +#define COM3A1 7 + +#define TCCR3B _SFR_MEM8(0x91) +#define CS30 0 +#define CS31 1 +#define CS32 2 +#define WGM32 3 +#define WGM33 4 +#define ICES3 6 +#define ICNC3 7 + +#define TCCR3C _SFR_MEM8(0x92) +#define FOC3B 6 +#define FOC3A 7 + +#define TCNT3 _SFR_MEM16(0x94) + +#define TCNT3L _SFR_MEM8(0x94) +#define TCNT3L0 0 +#define TCNT3L1 1 +#define TCNT3L2 2 +#define TCNT3L3 3 +#define TCNT3L4 4 +#define TCNT3L5 5 +#define TCNT3L6 6 +#define TCNT3L7 7 + +#define TCNT3H _SFR_MEM8(0x95) +#define TCNT3H0 0 +#define TCNT3H1 1 +#define TCNT3H2 2 +#define TCNT3H3 3 +#define TCNT3H4 4 +#define TCNT3H5 5 +#define TCNT3H6 6 +#define TCNT3H7 7 + +#define ICR3 _SFR_MEM16(0x96) + +#define ICR3L _SFR_MEM8(0x96) +#define ICR3L0 0 +#define ICR3L1 1 +#define ICR3L2 2 +#define ICR3L3 3 +#define ICR3L4 4 +#define ICR3L5 5 +#define ICR3L6 6 +#define ICR3L7 7 + +#define ICR3H _SFR_MEM8(0x97) +#define ICR3H0 0 +#define ICR3H1 1 +#define ICR3H2 2 +#define ICR3H3 3 +#define ICR3H4 4 +#define ICR3H5 5 +#define ICR3H6 6 +#define ICR3H7 7 + +#define OCR3A _SFR_MEM16(0x98) + +#define OCR3AL _SFR_MEM8(0x98) +#define OCR3AL0 0 +#define OCR3AL1 1 +#define OCR3AL2 2 +#define OCR3AL3 3 +#define OCR3AL4 4 +#define OCR3AL5 5 +#define OCR3AL6 6 +#define OCR3AL7 7 + +#define OCR3AH _SFR_MEM8(0x99) +#define OCR3AH0 0 +#define OCR3AH1 1 +#define OCR3AH2 2 +#define OCR3AH3 3 +#define OCR3AH4 4 +#define OCR3AH5 5 +#define OCR3AH6 6 +#define OCR3AH7 7 + +#define OCR3B _SFR_MEM16(0x9A) + +#define OCR3BL _SFR_MEM8(0x9A) +#define OCR3AL0 0 +#define OCR3AL1 1 +#define OCR3AL2 2 +#define OCR3AL3 3 +#define OCR3AL4 4 +#define OCR3AL5 5 +#define OCR3AL6 6 +#define OCR3AL7 7 + +#define OCR3BH _SFR_MEM8(0x9B) +#define OCR3AH0 0 +#define OCR3AH1 1 +#define OCR3AH2 2 +#define OCR3AH3 3 +#define OCR3AH4 4 +#define OCR3AH5 5 +#define OCR3AH6 6 +#define OCR3AH7 7 + +#define TCCR2A _SFR_MEM8(0xB0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0xB1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0xB2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0xB3) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define OCR2B _SFR_MEM8(0xB4) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2BUB 0 +#define TCR2AUB 1 +#define OCR2BUB 2 +#define OCR2AUB 3 +#define TCN2UB 4 +#define AS2 5 +#define EXCLK 6 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 1 +#define TWAM1 2 +#define TWAM2 3 +#define TWAM3 4 +#define TWAM4 5 +#define TWAM5 6 +#define TWAM6 7 + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0xC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL00 6 +#define UMSEL01 7 + +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0_0 0 +#define UBRR0_1 1 +#define UBRR0_2 2 +#define UBRR0_3 3 +#define UBRR0_4 4 +#define UBRR0_5 5 +#define UBRR0_6 6 +#define UBRR0_7 7 + +#define UBRR0H _SFR_MEM8(0xC5) +#define UBRR0_8 0 +#define UBRR0_9 1 +#define UBRR0_10 2 +#define UBRR0_11 3 + +#define UDR0 _SFR_MEM8(0xC6) +#define UDR0_0 0 +#define UDR0_1 1 +#define UDR0_2 2 +#define UDR0_3 3 +#define UDR0_4 4 +#define UDR0_5 5 +#define UDR0_6 6 +#define UDR0_7 7 + +#define UCSR1A _SFR_MEM8(0xC8) +#define MPCM1 0 +#define U2X1 1 +#define UPE1 2 +#define DOR1 3 +#define FE1 4 +#define UDRE1 5 +#define TXC1 6 +#define RXC1 7 + +#define UCSR1B _SFR_MEM8(0xC9) +#define TXB81 0 +#define RXB81 1 +#define UCSZ12 2 +#define TXEN1 3 +#define RXEN1 4 +#define UDRIE1 5 +#define TXCIE1 6 +#define RXCIE1 7 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UCPOL1 0 +#define UCSZ10 1 +#define UCSZ11 2 +#define USBS1 3 +#define UPM10 4 +#define UPM11 5 +#define UMSEL10 6 +#define UMSEL11 7 + +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR1_0 0 +#define UBRR1_1 1 +#define UBRR1_2 2 +#define UBRR1_3 3 +#define UBRR1_4 4 +#define UBRR1_5 5 +#define UBRR1_6 6 +#define UBRR1_7 7 + +#define UBRR1H _SFR_MEM8(0xCD) +#define UBRR1_8 0 +#define UBRR1_9 1 +#define UBRR1_10 2 +#define UBRR1_11 3 + +#define UDR1 _SFR_MEM8(0xCE) +#define UDR1_0 0 +#define UDR1_1 1 +#define UDR1_2 2 +#define UDR1_3 3 +#define UDR1_4 4 +#define UDR1_5 5 +#define UDR1_6 6 +#define UDR1_7 7 + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ + +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ +#define INT2_vect _VECTOR(3) /* External Interrupt Request 2 */ +#define PCINT0_vect _VECTOR(4) /* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(5) /* Pin Change Interrupt Request 1 */ +#define PCINT2_vect _VECTOR(6) /* Pin Change Interrupt Request 2 */ +#define PCINT3_vect _VECTOR(7) /* Pin Change Interrupt Request 3 */ +#define WDT_vect _VECTOR(8) /* Watchdog Time-out Interrupt */ +#define TIMER2_COMPA_vect _VECTOR(9) /* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPB_vect _VECTOR(10) /* Timer/Counter2 Compare Match B */ +#define TIMER2_OVF_vect _VECTOR(11) /* Timer/Counter2 Overflow */ +#define TIMER1_CAPT_vect _VECTOR(12) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(13) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(14) /* Timer/Counter1 Compare Match B */ +#define TIMER1_OVF_vect _VECTOR(15) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(16) /* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPB_vect _VECTOR(17) /* Timer/Counter0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(18) /* Timer/Counter0 Overflow */ +#define SPI_STC_vect _VECTOR(19) /* SPI Serial Transfer Complete */ +#define USART0_RX_vect _VECTOR(20) /* USART0, Rx Complete */ +#define USART0_UDRE_vect _VECTOR(21) /* USART0 Data register Empty */ +#define USART0_TX_vect _VECTOR(22) /* USART0, Tx Complete */ +#define ANALOG_COMP_vect _VECTOR(23) /* Analog Comparator */ +#define ADC_vect _VECTOR(24) /* ADC Conversion Complete */ +#define EE_READY_vect _VECTOR(25) /* EEPROM Ready */ +#define TWI_vect _VECTOR(26) /* 2-wire Serial Interface */ +#define SPM_READY_vect _VECTOR(27) /* Store Program Memory Read */ +#define USART1_RX_vect _VECTOR(28) /* USART1 RX complete */ +#define USART1_UDRE_vect _VECTOR(29) /* USART1 Data Register Empty */ +#define USART1_TX_vect _VECTOR(30) /* USART1 TX complete */ +#define TIMER3_CAPT_vect _VECTOR(31) /* Timer/Counter3 Capture Event */ +#define TIMER3_COMPA_vect _VECTOR(32) /* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPB_vect _VECTOR(33) /* Timer/Counter3 Compare Match B */ +#define TIMER3_OVF_vect _VECTOR(34) /* Timer/Counter3 Overflow */ + +#define _VECTORS_SIZE (35 * 4) + + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x40FF /* Last On-Chip SRAM Location */ +#define XRAMSIZE 0 +#define XRAMEND RAMEND +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0x1FFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_JTAGEN (unsigned char)~_BV(6) /* Enable JTAG */ +#define FUSE_OCDEN (unsigned char)~_BV(7) /* Enable OCD */ +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x05 + +/**@}*/ +#endif /* _AVR_IOM1284P_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom16.h b/cpukit/score/cpu/avr/avr/iom16.h index a9ac82b42f..6d6e9e3e2c 100644 --- a/cpukit/score/cpu/avr/avr/iom16.h +++ b/cpukit/score/cpu/avr/avr/iom16.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2004 Eric B. Weddington - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom16.h - definitions for ATmega16 */ +/** + * @file avr/iom16.h + * + * @brief Definitions for ATmega16 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2004 Eric B. Weddington + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM16_H_ #define _AVR_IOM16_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom16 ATmega16 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom16.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* Registers and associated bit numbers */ @@ -368,9 +380,9 @@ #define COM1A0 6 #define COM1A1 7 -/* - The ADHSM bit has been removed from all documentation, - as being not needed at all since the comparator has proven +/* + The ADHSM bit has been removed from all documentation, + as being not needed at all since the comparator has proven to be fast enough even without feeding it more power. */ @@ -601,7 +613,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -609,5 +621,5 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x03 - +/**@}*/ #endif /* _AVR_IOM16_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom161.h b/cpukit/score/cpu/avr/avr/iom161.h index 8a12acf428..af7bebeec1 100644 --- a/cpukit/score/cpu/avr/avr/iom161.h +++ b/cpukit/score/cpu/avr/avr/iom161.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/iom161.h + * + * @brief Definitions for ATmega161 + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/iom161.h - definitions for ATmega161 */ +/* + * Copyright (c) 2002, Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM161_H_ #define _AVR_IOM161_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom161 ATmega161 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom161.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -660,7 +672,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -669,4 +681,5 @@ #define SIGNATURE_2 0x01 +/**@}*/ #endif /* _AVR_IOM161_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom162.h b/cpukit/score/cpu/avr/avr/iom162.h index bdd90de0c9..d10a59aff7 100644 --- a/cpukit/score/cpu/avr/avr/iom162.h +++ b/cpukit/score/cpu/avr/avr/iom162.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Nils Kristian Strom <nilsst@omegav.ntnu.no> - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* iom162.h - definitions for ATmega162 */ +/** + * @file iom162.h + * + * @brief Definitions for ATmega162 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2002, Nils Kristian Strom <nilsst@omegav.ntnu.no> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM162_H_ #define _AVR_IOM162_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom162 ATmega162 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom162.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* Memory mapped I/O registers */ @@ -163,7 +175,7 @@ #define UCSR1A _SFR_IO8(0x02) /* USART 1 Control and Status Register A */ #define UCSR1B _SFR_IO8(0x01) /* USART 1 Control and Status Register B */ #define UBRR1L _SFR_IO8(0x00) /* USART 0 Baud Rate Register High Byte */ - + /* Interrupt vectors (byte addresses) */ @@ -456,7 +468,7 @@ -/* SPMCR bit definitions */ +/* SPMCR bit definitions */ #define SPMIE 7 #define RWWSB 6 @@ -939,7 +951,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -948,4 +960,5 @@ #define SIGNATURE_2 0x04 +/**@}*/ #endif /* _AVR_IOM162_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom163.h b/cpukit/score/cpu/avr/avr/iom163.h index 276c7423fc..2dabcd8d40 100644 --- a/cpukit/score/cpu/avr/avr/iom163.h +++ b/cpukit/score/cpu/avr/avr/iom163.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/iom163.h + * + * @brief Definitions for ATmega163 + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/iom163.h - definitions for ATmega163 */ +/* + * Copyright (c) 2007 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM163_H_ #define _AVR_IOM163_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom163 ATmega163 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom163.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -626,7 +638,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -635,4 +647,5 @@ #define SIGNATURE_2 0x02 +/**@}*/ #endif /* _AVR_IOM163_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom164.h b/cpukit/score/cpu/avr/avr/iom164.h index 9b97f21df6..160663da88 100644 --- a/cpukit/score/cpu/avr/avr/iom164.h +++ b/cpukit/score/cpu/avr/avr/iom164.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Definitions for ATmega164 + */ + /* Copyright (c) 2005, 2006 Anatoly Sokolov All rights reserved. @@ -36,6 +42,14 @@ #include <avr/iomxx4.h> +/** + * @defgroup AvrDef_iom164 ATmega164 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Constants */ #define SPM_PAGESIZE 128 #define RAMEND 0x04FF @@ -89,5 +103,6 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x0A +/** @} */ #endif /* _AVR_IOM164_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom165.h b/cpukit/score/cpu/avr/avr/iom165.h index a15eea43c2..72cbc39fec 100644 --- a/cpukit/score/cpu/avr/avr/iom165.h +++ b/cpukit/score/cpu/avr/avr/iom165.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega165 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2004,2005,2006 Eric B. Weddington All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_iom165 ATmega165 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Registers and associated bit numbers */ #define PINA _SFR_IO8(0x00) @@ -815,5 +831,6 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x07 +/** @} */ #endif /* _AVR_IOM165_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom168.h b/cpukit/score/cpu/avr/avr/iom168.h index 9470d22a39..7f1dee2345 100644 --- a/cpukit/score/cpu/avr/avr/iom168.h +++ b/cpukit/score/cpu/avr/avr/iom168.h @@ -1,37 +1,51 @@ -/* Copyright (c) 2004, Theodore A. Roth - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file + * + * @brief Definitions for iom168 + */ + +/* + * Copyright (c) 2004, Theodore A. Roth + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM168_H_ #define _AVR_IOM168_H_ 1 +/** + * @defgroup Avr_iom168 iom168 Definitions + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iomx8.h> /* Constants */ @@ -78,7 +92,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -86,5 +100,5 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x06 - +/**@}*/ #endif /* _AVR_IOM168_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom168p.h b/cpukit/score/cpu/avr/avr/iom168p.h index 7c62bc3a29..987d489434 100644 --- a/cpukit/score/cpu/avr/avr/iom168p.h +++ b/cpukit/score/cpu/avr/avr/iom168p.h @@ -1,38 +1,43 @@ -/* Copyright (c) 2007 Atmel Corporation - All rights reserved. +/** + * @file avr/iom168p.h + * + * @brief Definitions for ATmega168P + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2007 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. -*/ - - -/* avr/iom168p.h - definitions for ATmega168P. */ - -/* This file should only be included from <avr/io.h>, never directly. */ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -42,12 +47,19 @@ # define _AVR_IOXXX_H_ "iom168p.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_IOM168P_H_ #define _AVR_IOM168P_H_ 1 +/** + * @defgroup Avr_iom168p ATmega168P Definitions + * + * @ingroup avr + */ +/**@{*/ + /* Registers and associated bit numbers */ #define PINB _SFR_IO8(0x03) @@ -330,7 +342,7 @@ #define WDRF 3 #define MCUCR _SFR_IO8(0x35) -#define IVCE 0 +#define IVCE 0 #define IVSEL 1 #define PUD 4 #define BODSE 5 @@ -795,7 +807,7 @@ #define TIMER2_OVF_vect _VECTOR(9) /* Timer/Counter2 Overflow */ #define TIMER1_CAPT_vect _VECTOR(10) /* Timer/Counter1 Capture Event */ #define TIMER1_COMPA_vect _VECTOR(11) /* Timer/Counter1 Compare Match A */ -#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ #define TIMER1_OVF_vect _VECTOR(13) /* Timer/Counter1 Overflow */ #define TIMER0_COMPA_vect _VECTOR(14) /* TimerCounter0 Compare Match A */ #define TIMER0_COMPB_vect _VECTOR(15) /* TimerCounter0 Compare Match B */ @@ -861,7 +873,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -869,5 +881,5 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x0B - +/**@}*/ #endif /* _AVR_IOM168P_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom169.h b/cpukit/score/cpu/avr/avr/iom169.h index 88a757e2ec..64910dd115 100644 --- a/cpukit/score/cpu/avr/avr/iom169.h +++ b/cpukit/score/cpu/avr/avr/iom169.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega169 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2002, 2003, 2004, 2005 Juergen Schilling <juergen.schilling@honeywell.com> Eric B. Weddington @@ -50,6 +58,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_iom169 ATmega169 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* Port A */ @@ -1102,5 +1118,6 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x05 +/** @} */ #endif /* _AVR_IOM169_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom169p.h b/cpukit/score/cpu/avr/avr/iom169p.h index 6aad286fc7..3d7995a3f5 100644 --- a/cpukit/score/cpu/avr/avr/iom169p.h +++ b/cpukit/score/cpu/avr/avr/iom169p.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega169P + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2002, 2003, 2004, 2005, 2006 Juergen Schilling <juergen.schilling@honeywell.com> Eric B. Weddington <ericw@evcohs.com> @@ -49,6 +57,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_iom169p ATmega169P Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* Port A */ @@ -1025,5 +1041,6 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x05 +/** @} */ #endif /* _AVR_IOM169P_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom169pa.h b/cpukit/score/cpu/avr/avr/iom169pa.h index a2403f0546..4f457db5dd 100644 --- a/cpukit/score/cpu/avr/avr/iom169pa.h +++ b/cpukit/score/cpu/avr/avr/iom169pa.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom169pa.h - definitions for ATmega169PA */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom169pa.h + * + * @brief Definitions for ATmega169PA + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,8 +46,15 @@ # define _AVR_IOXXX_H_ "iom169pa.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif +/** + * @defgroup AvrDef_iom169pa ATmega169PA Defintions + * + * @ingroup avr + * + */ +/**@{**/ #ifndef _AVR_ATmega169PA_H_ #define _AVR_ATmega169PA_H_ 1 @@ -1467,5 +1479,5 @@ #define ADC0_PIN PINF #define ADC0_BIT 0 +/** @} */ #endif /* _AVR_ATmega169PA_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom16a.h b/cpukit/score/cpu/avr/avr/iom16a.h index 707c3b1803..ddfb220b99 100644 --- a/cpukit/score/cpu/avr/avr/iom16a.h +++ b/cpukit/score/cpu/avr/avr/iom16a.h @@ -47,9 +47,11 @@ #ifndef _AVR_ATmega16A_H_ #define _AVR_ATmega16A_H_ 1 - -/* Registers and associated bit numbers. */ - +/** + * @name Registers and Associated Bit Numbers + * + */ +/**@{**/ #define TWBR _SFR_IO8(0x00) #define TWBR0 0 #define TWBR1 1 @@ -654,8 +656,13 @@ #define OCR0_6 6 #define OCR0_7 7 +/** @} */ -/* Interrupt vectors */ +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* Vector 0 is the reset vector */ #define INT0_vect_num 1 #define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ @@ -668,9 +675,11 @@ #define TIMER1_CAPT_vect_num 5 #define TIMER1_CAPT_vect _VECTOR(5) /* Timer/Counter1 Capture Event */ #define TIMER1_COMPA_vect_num 6 -#define TIMER1_COMPA_vect _VECTOR(6) /* Timer/Counter1 Compare Match A */ +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(6) #define TIMER1_COMPB_vect_num 7 -#define TIMER1_COMPB_vect _VECTOR(7) /* Timer/Counter1 Compare Match B */ +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(7) #define TIMER1_OVF_vect_num 8 #define TIMER1_OVF_vect _VECTOR(8) /* Timer/Counter1 Overflow */ #define TIMER0_OVF_vect_num 9 @@ -700,9 +709,13 @@ #define _VECTOR_SIZE 4 /* Size of individual vector. */ #define _VECTORS_SIZE (21 * _VECTOR_SIZE) +/** @} */ - -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE (128) #define RAMSTART (0x60) #define RAMSIZE (1024) @@ -713,9 +726,13 @@ #define E2END (0x1FF) #define E2PAGESIZE (4) #define FLASHEND (0x3FFF) +/** @} */ - -/* Fuses */ +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 2 /* Low Fuse Byte */ @@ -726,34 +743,50 @@ #define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ #define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ #define FUSE_BODEN (unsigned char)~_BV(6) /* Brown out detector enable */ -#define FUSE_BODLEVEL (unsigned char)~_BV(7) /* Brown out detector trigger level */ -#define LFUSE_DEFAULT (FUSE_SUT1 & FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1) +/* Brown out detector trigger level */ +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_SUT1 & FUSE_SUT0 & FUSE_CKSEL3 & \ + FUSE_CKSEL2 & FUSE_CKSEL1) /* High Fuse Byte */ #define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ #define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ #define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ -#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +/* EEPROM memory is preserved through chip erase */ +#define FUSE_EESAVE (unsigned char)~_BV(3) #define FUSE_CKOPT (unsigned char)~_BV(4) /* Oscillator Options */ -#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +/* Enable Serial programming and Data Downloading */ +#define FUSE_SPIEN (unsigned char)~_BV(5) #define FUSE_JTAGEN (unsigned char)~_BV(6) /* Enable JTAG */ #define FUSE_OCDEN (unsigned char)~_BV(7) /* Enable OCD */ #define HFUSE_DEFAULT (FUSE_JTAGEN & FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x03 +/** @} */ - -/* Device Pin Definitions */ +/** + * @name Device Pin Definitions + * + */ +/**@{**/ #define MOSI_DDR DDRB #define MOSI_PORT PORTB #define MOSI_PIN PINB @@ -898,6 +931,7 @@ #define SS_PORT PORTB #define SS_PIN PINB #define SS_BIT 4 +/** @} */ #endif /* _AVR_ATmega16A_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom16hva.h b/cpukit/score/cpu/avr/avr/iom16hva.h index cae9194539..7dcad90e37 100644 --- a/cpukit/score/cpu/avr/avr/iom16hva.h +++ b/cpukit/score/cpu/avr/avr/iom16hva.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Definitions for ATmega16HVA + */ + /* Copyright (c) 2007, Anatoly Sokolov All rights reserved. @@ -36,6 +42,14 @@ #include <avr/iomxxhva.h> +/** + * @defgroup AvrDef_iom16hva ATmega16HVA Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Constants */ #define SPM_PAGESIZE 128 #define RAMEND 0x2FF @@ -70,5 +84,6 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x0C +/** @} */ #endif /* _AVR_IOM16HVA_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom16hva2.h b/cpukit/score/cpu/avr/avr/iom16hva2.h index 2f1893ff20..bca3d20d87 100644 --- a/cpukit/score/cpu/avr/avr/iom16hva2.h +++ b/cpukit/score/cpu/avr/avr/iom16hva2.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom16hva2.h - definitions for ATmega16HVA2 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom16hva2.h + * + * @brief Definitions for ATmega16HVA2 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16hva2.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega16HVA2_H_ #define _AVR_ATmega16HVA2_H_ 1 +/** + * @defgroup Avr_iom16hva2 ATmega16HVA2 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -809,7 +820,7 @@ #define PI_DDR DDRI #define PI_PORT PORTI #define PI_PIN PINI -#define PI_BIT +#define PI_BIT #define NI_DDR DDRNI #define NI_PORT PORTNI @@ -866,5 +877,5 @@ #define OC_PIN PINOC #define OC_BIT OC +/**@}*/ #endif /* _AVR_ATmega16HVA2_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom16hvb.h b/cpukit/score/cpu/avr/avr/iom16hvb.h index ea3ab57001..ad6720eb45 100644 --- a/cpukit/score/cpu/avr/avr/iom16hvb.h +++ b/cpukit/score/cpu/avr/avr/iom16hvb.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom16hvb.h - definitions for ATmega16HVB */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom16hvb.h + * + * @brief Definitions for ATmega16HVB + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16hvb.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega16HVB_H_ #define _AVR_ATmega16HVB_H_ 1 +/** + * @defgroup Avr_iom16hvb ATmega16HVB Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -977,7 +988,7 @@ #define PI_DDR DDRI #define PI_PORT PORTI #define PI_PIN PINI -#define PI_BIT +#define PI_BIT #define NI_DDR DDRNI #define NI_PORT PORTNI @@ -1034,5 +1045,5 @@ #define OC_PIN PINOC #define OC_BIT OC +/**@}*/ #endif /* _AVR_ATmega16HVB_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom16m1.h b/cpukit/score/cpu/avr/avr/iom16m1.h index a7cb85e16a..4ca8f1e40c 100644 --- a/cpukit/score/cpu/avr/avr/iom16m1.h +++ b/cpukit/score/cpu/avr/avr/iom16m1.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom16m1.h - definitions for ATmega16M1 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom16m1.h + * + * @brief Definitions for ATmega16M1 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16m1.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega16M1_H_ #define _AVR_ATmega16M1_H_ 1 +/** + * @defgroup Avr_iom16m1 ATmega16M1 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -1542,6 +1553,5 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x84 - +/**@}*/ #endif /* _AVR_ATmega16M1_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom16u2.h b/cpukit/score/cpu/avr/avr/iom16u2.h index 346dda6d85..bae63fa594 100644 --- a/cpukit/score/cpu/avr/avr/iom16u2.h +++ b/cpukit/score/cpu/avr/avr/iom16u2.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom16u2.h - definitions for ATmega16U2 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom16u2.h + * + * @brief Definitions for ATmega16U2 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16u2.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega16U2_H_ #define _AVR_ATmega16U2_H_ 1 +/** + * @defgroup Avr_iom16u2 ATmega16U2 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -973,7 +984,7 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x89 +/**@}*/ /* Device Pin Definitions */ #endif /* _AVR_ATmega16U2_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom16u4.h b/cpukit/score/cpu/avr/avr/iom16u4.h index d87bfd2a7a..79e577919b 100644 --- a/cpukit/score/cpu/avr/avr/iom16u4.h +++ b/cpukit/score/cpu/avr/avr/iom16u4.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom16u4.h - definitions for ATmega16U4 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file aavr/iom16u4.h + * + * @brief Definitions for ATmega16U4 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16u4.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega16U4_H_ #define _AVR_ATmega16U4_H_ 1 +/** + * @defgroup Avr_iom16u4 ATmega16U4 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -1351,6 +1362,5 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x88 - +/**@}*/ #endif /* _AVR_ATmega16U4_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom2560.h b/cpukit/score/cpu/avr/avr/iom2560.h index 99cfca51e6..461f93611f 100644 --- a/cpukit/score/cpu/avr/avr/iom2560.h +++ b/cpukit/score/cpu/avr/avr/iom2560.h @@ -36,17 +36,24 @@ #include <avr/iomxx0_1.h> -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE 256 #define RAMEND 0x21FF #define XRAMEND 0xFFFF #define E2END 0xFFF #define E2PAGESIZE 8 #define FLASHEND 0x3FFFF +/** @} */ - -/* Fuses */ - +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 3 /* Low Fuse Byte */ @@ -58,7 +65,8 @@ #define FUSE_SUT1 (unsigned char)~_BV(5) #define FUSE_CKOUT (unsigned char)~_BV(6) #define FUSE_CKDIV8 (unsigned char)~_BV(7) -#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & \ + FUSE_SUT0 & FUSE_CKDIV8) /* High Fuse Byte */ #define FUSE_BOOTRST (unsigned char)~_BV(0) @@ -76,18 +84,26 @@ #define FUSE_BODLEVEL1 (unsigned char)~_BV(1) #define FUSE_BODLEVEL2 (unsigned char)~_BV(2) #define EFUSE_DEFAULT (0xFF) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x98 #define SIGNATURE_2 0x01 - +/** @} */ #endif /* _AVR_IOM2560_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom32.h b/cpukit/score/cpu/avr/avr/iom32.h index 7338261d75..88465252d6 100644 --- a/cpukit/score/cpu/avr/avr/iom32.h +++ b/cpukit/score/cpu/avr/avr/iom32.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Steinar Haugen - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/iom32.h + * + * @brief Definitions for ATmega32 + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/iom32.h - definitions for ATmega32 */ +/* + * Copyright (c) 2002, Steinar Haugen + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM32_H_ #define _AVR_IOM32_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom32 ATmega32 Definitons + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom32.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -683,7 +695,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -691,5 +703,5 @@ #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x02 - +/**@}*/ #endif /* _AVR_IOM32_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom323.h b/cpukit/score/cpu/avr/avr/iom323.h index 8f6a4d1516..d631ab5e06 100644 --- a/cpukit/score/cpu/avr/avr/iom323.h +++ b/cpukit/score/cpu/avr/avr/iom323.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/iom323.h + * + * @brief Definitions for ATmega323 + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/iom323.h - definitions for ATmega323 */ +/* + * Copyright (c) 2002 Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM323_H_ #define _AVR_IOM323_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom323 ATmega323 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom323.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -675,7 +687,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -683,5 +695,5 @@ #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x01 - +/**@}*/ #endif /* _AVR_IOM323_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom324.h b/cpukit/score/cpu/avr/avr/iom324.h index 788113fd5f..09fbd51f66 100644 --- a/cpukit/score/cpu/avr/avr/iom324.h +++ b/cpukit/score/cpu/avr/avr/iom324.h @@ -1,39 +1,51 @@ -/* Copyright (c) 2005, 2006 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - -/* avr/iom324.h - definitions for ATmega324 */ - +/** + * @file avr/iom324.h + * + * @brief Definitions for ATmega324 + */ + +/* + * Copyright (c) 2005, 2006 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM324_H_ #define _AVR_IOM324_H_ 1 +/** + * @defgroup Avr_iom324 ATmega324 Definitions + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iomxx4.h> /* Constants */ @@ -81,13 +93,13 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature (ATmega324P) */ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x95 -#define SIGNATURE_2 0x08 - +#define SIGNATURE_2 0x08 +/**@}*/ #endif /* _AVR_IOM324_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom325.h b/cpukit/score/cpu/avr/avr/iom325.h index d22911c8e9..7d4f582aaf 100644 --- a/cpukit/score/cpu/avr/avr/iom325.h +++ b/cpukit/score/cpu/avr/avr/iom325.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega325 and ATmega325P + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2004, 2005, 2006, 2007 Eric B. Weddington All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_iom325 ATmega325 and ATmega325P Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Registers and associated bit numbers */ #define PINA _SFR_IO8(0x00) @@ -816,5 +832,6 @@ #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x05 +/** @} */ #endif /* _AVR_IOM325_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom3250.h b/cpukit/score/cpu/avr/avr/iom3250.h index 21d0ad123e..6c3cb35a0f 100644 --- a/cpukit/score/cpu/avr/avr/iom3250.h +++ b/cpukit/score/cpu/avr/avr/iom3250.h @@ -46,8 +46,11 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif -/* Registers and associated bit numbers */ - +/** + * @name Registers and Associated Bit Numbers + * + */ +/**@{**/ #define PINA _SFR_IO8(0x00) #define PINA7 7 #define PINA6 6 @@ -295,12 +298,15 @@ #define EEARL _SFR_IO8(0x21) #define EEARH _SFR_IO8(0X22) -/* 6-char sequence denoting where to find the EEPROM registers in memory space. - Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM - subroutines. - First two letters: EECR address. - Second two letters: EEDR address. - Last two letters: EEAR address. */ +/* + * 6-char sequence denoting where to find the EEPROM registers in + * memory space. + * Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + * subroutines. + * First two letters: EECR address. + * Second two letters: EEDR address. + * Last two letters: EEAR address. + */ #define __EEPROM_REG_LOCATIONS__ 1F2021 #define GTCCR _SFR_IO8(0x23) @@ -751,9 +757,13 @@ #define PJ0 0 /* Reserved [0xDE..0xFF] */ +/** @} */ - -/* Interrupt vectors */ +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* Vector 0 is the reset vector */ /* External Interrupt Request 0 */ #define INT0_vect _VECTOR(1) @@ -851,19 +861,26 @@ #define SIG_PIN_CHANGE3 _VECTOR(24) #define _VECTORS_SIZE 100 +/** @} */ - -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE 128 #define RAMEND 0x8FF #define XRAMEND RAMEND #define E2END 0x3FF #define E2PAGESIZE 4 #define FLASHEND 0x7FFF +/** @} */ - -/* Fuses */ - +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 3 /* Low Fuse Byte */ @@ -875,7 +892,8 @@ #define FUSE_SUT1 (unsigned char)~_BV(5) #define FUSE_CKOUT (unsigned char)~_BV(6) #define FUSE_CKDIV8 (unsigned char)~_BV(7) -#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & \ + FUSE_SUT0 & FUSE_CKDIV8) /* High Fuse Byte */ #define FUSE_BOOTRST (unsigned char)~_BV(0) @@ -893,18 +911,26 @@ #define FUSE_BODLEVEL0 (unsigned char)~_BV(1) #define FUSE_BODLEVEL1 (unsigned char)~_BV(2) #define EFUSE_DEFAULT (0xFF) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x06 - +/** @} */ #endif /* _AVR_IOM3250_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom328p.h b/cpukit/score/cpu/avr/avr/iom328p.h index 179f0a5e2d..b2bb6b58bf 100644 --- a/cpukit/score/cpu/avr/avr/iom328p.h +++ b/cpukit/score/cpu/avr/avr/iom328p.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega328P + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2007 Atmel Corporation All rights reserved. @@ -48,6 +56,14 @@ #ifndef _AVR_IOM328P_H_ #define _AVR_IOM328P_H_ 1 +/** + * @defgroup AvrDef_iom328p ATmega328P Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Registers and associated bit numbers */ #define PINB _SFR_IO8(0x03) @@ -870,5 +886,6 @@ #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x0F +/** @} */ #endif /* _AVR_IOM328P_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom329.h b/cpukit/score/cpu/avr/avr/iom329.h index fc96d00a7e..a7b5efdfd1 100644 --- a/cpukit/score/cpu/avr/avr/iom329.h +++ b/cpukit/score/cpu/avr/avr/iom329.h @@ -46,8 +46,11 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif -/* Registers and associated bit numbers */ - +/** + * @name Registers and Associated Bit Numbers + * + */ +/**@{**/ #define PINA _SFR_IO8(0x00) #define PINA7 7 #define PINA6 6 @@ -291,12 +294,15 @@ #define EEARL _SFR_IO8(0x21) #define EEARH _SFR_IO8(0X22) -/* 6-char sequence denoting where to find the EEPROM registers in memory space. - Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM - subroutines. - First two letters: EECR address. - Second two letters: EEDR address. - Last two letters: EEAR address. */ +/* + * 6-char sequence denoting where to find the EEPROM registers in + * memory space. + * Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + * subroutines. + * First two letters: EECR address. + * Second two letters: EEDR address. + * Last two letters: EEAR address. + */ #define __EEPROM_REG_LOCATIONS__ 1F2021 #define GTCCR _SFR_IO8(0x23) @@ -852,8 +858,13 @@ #define SEG324 0 /* Reserved [0xFF] */ +/** @} */ -/* Interrupt vectors */ +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* Vector 0 is the reset vector */ /* External Interrupt Request 0 */ #define INT0_vect _VECTOR(1) @@ -944,19 +955,26 @@ #define SIG_LCD _VECTOR(22) #define _VECTORS_SIZE 92 +/** @} */ - -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE 128 #define RAMEND 0x8FF #define XRAMEND RAMEND #define E2END 0x3FF #define E2PAGESIZE 4 #define FLASHEND 0x7FFF +/** @} */ - -/* Fuses */ - +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 3 /* Low Fuse Byte */ @@ -968,7 +986,8 @@ #define FUSE_SUT1 (unsigned char)~_BV(5) #define FUSE_CKOUT (unsigned char)~_BV(6) #define FUSE_CKDIV8 (unsigned char)~_BV(7) -#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & \ + FUSE_SUT0 & FUSE_CKDIV8) /* High Fuse Byte */ #define FUSE_BOOTRST (unsigned char)~_BV(0) @@ -979,25 +998,34 @@ #define FUSE_SPIEN (unsigned char)~_BV(5) #define FUSE_JTAGEN (unsigned char)~_BV(6) #define FUSE_OCDEN (unsigned char)~_BV(7) -#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & \ + FUSE_SPIEN & FUSE_JTAGEN) /* Extended Fuse Byte */ #define FUSE_RSTDISBL (unsigned char)~_BV(0) #define FUSE_BODLEVEL0 (unsigned char)~_BV(1) #define FUSE_BODLEVEL1 (unsigned char)~_BV(2) #define EFUSE_DEFAULT (0xFF) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x03 - +/** @} */ #endif /* _AVR_IOM329_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom3290.h b/cpukit/score/cpu/avr/avr/iom3290.h index b8ddf19cc6..f349821f77 100644 --- a/cpukit/score/cpu/avr/avr/iom3290.h +++ b/cpukit/score/cpu/avr/avr/iom3290.h @@ -1,35 +1,41 @@ -/* Copyright (c) 2004 Eric B. Weddington - Copyright (c) 2005, 2006, 2007 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - -/* avr/iom3290.h - definitions for ATmega3290 and ATmega3290P. */ +/** + * @file avr/iom3290.h + * + * @brief Definitions for ATmega3290 and ATmega3290P + */ + +/* + * Copyright (c) 2004 Eric B. Weddington + * Copyright (c) 2005, 2006, 2007 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM3290_H_ #define _AVR_IOM3290_H_ 1 @@ -44,7 +50,15 @@ # define _AVR_IOXXX_H_ "iom3290.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif + +/** + * @defgroup AvrDef_iom3290 ATmega3290, ATmega3290P Defintions + * + * @ingroup avr + * + */ +/**@{**/ /* Registers and associated bit numbers */ @@ -1143,7 +1157,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -1151,5 +1165,5 @@ #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x04 - +/** @} */ #endif /* _AVR_IOM3290_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom32c1.h b/cpukit/score/cpu/avr/avr/iom32c1.h index 0147aee979..a0d4017026 100644 --- a/cpukit/score/cpu/avr/avr/iom32c1.h +++ b/cpukit/score/cpu/avr/avr/iom32c1.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom32c1.h - definitions for ATmega32C1 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom32c1.h + * + * @brief Definitions for ATmega32C1 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,19 @@ # define _AVR_IOXXX_H_ "iom32c1.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega32C1_H_ #define _AVR_ATmega32C1_H_ 1 +/** + * @defgroup Avr_iom32c1 ATmega32C1 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* Registers and associated bit numbers. */ @@ -1292,5 +1304,5 @@ #define SIGNATURE_2 0x86 +/** @} */ #endif /* _AVR_ATmega32C1_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom32m1.h b/cpukit/score/cpu/avr/avr/iom32m1.h index bf12d9f513..f8bf88396e 100644 --- a/cpukit/score/cpu/avr/avr/iom32m1.h +++ b/cpukit/score/cpu/avr/avr/iom32m1.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2008-2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom32m1.h - definitions for ATmega32M1 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom32m1.h + * + * @brief Definitions for ATmega32M1 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2008-2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,19 @@ # define _AVR_IOXXX_H_ "iom32m1.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega32M1_H_ #define _AVR_ATmega32M1_H_ 1 +/** + * @defgroup AvrDef_iom32m1 ATmega32M1 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* Registers and associated bit numbers. */ @@ -1566,5 +1578,5 @@ #define SIGNATURE_2 0x84 +/** @} */ #endif /* _AVR_ATmega32M1_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom32u2.h b/cpukit/score/cpu/avr/avr/iom32u2.h index 5859281230..10e835e6ed 100644 --- a/cpukit/score/cpu/avr/avr/iom32u2.h +++ b/cpukit/score/cpu/avr/avr/iom32u2.h @@ -47,9 +47,11 @@ #ifndef _AVR_ATmega32U2_H_ #define _AVR_ATmega32U2_H_ 1 - -/* Registers and associated bit numbers. */ - +/** + * @name Registers and Associated Bit Numbers + * + */ +/**@{**/ #define PINB _SFR_IO8(0x03) #define PINB0 0 #define PINB1 1 @@ -851,9 +853,13 @@ #define UPDRV1 5 #define UPWE0 6 #define UPWE1 7 +/** @} */ - -/* Interrupt vectors */ +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* Vector 0 is the reset vector */ #define INT0_vect_num 1 #define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ @@ -878,17 +884,21 @@ #define USB_GEN_vect_num 11 #define USB_GEN_vect _VECTOR(11) /* USB General Interrupt Request */ #define USB_COM_vect_num 12 -#define USB_COM_vect _VECTOR(12) /* USB Endpoint/Pipe Interrupt Communication Request */ +/* USB Endpoint/Pipe Interrupt Communication Request */ +#define USB_COM_vect _VECTOR(12) #define WDT_vect_num 13 #define WDT_vect _VECTOR(13) /* Watchdog Time-out Interrupt */ #define TIMER1_CAPT_vect_num 14 #define TIMER1_CAPT_vect _VECTOR(14) /* Timer/Counter2 Capture Event */ #define TIMER1_COMPA_vect_num 15 -#define TIMER1_COMPA_vect _VECTOR(15) /* Timer/Counter2 Compare Match B */ +/* Timer/Counter2 Compare Match B */ +#define TIMER1_COMPA_vect _VECTOR(15) #define TIMER0_COMPA_vect_num 19 -#define TIMER0_COMPA_vect _VECTOR(19) /* Timer/Counter0 Compare Match A */ +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPA_vect _VECTOR(19) #define TIMER0_COMPB_vect_num 20 -#define TIMER0_COMPB_vect _VECTOR(20) /* Timer/Counter0 Compare Match B */ +/* Timer/Counter0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(20) #define TIMER0_OVF_vect_num 21 #define TIMER0_OVF_vect _VECTOR(21) /* Timer/Counter0 Overflow */ #define SPI_STC_vect_num 22 @@ -906,15 +916,17 @@ #define SPM_READY_vect_num 28 #define SPM_READY_vect _VECTOR(28) /* Store Program Memory Read */ #define TIMER1_COMPB_vect_num 16 -#define TIMER1_COMPB_vect _VECTOR(16) /* Timer/Counter2 Compare Match B */ +/* Timer/Counter2 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(16) #define TIMER1_COMPC_vect_num 17 -#define TIMER1_COMPC_vect _VECTOR(17) /* Timer/Counter2 Compare Match C */ +/* Timer/Counter2 Compare Match C */ +#define TIMER1_COMPC_vect _VECTOR(17) #define TIMER1_OVF_vect_num 18 #define TIMER1_OVF_vect _VECTOR(18) /* Timer/Counter1 Overflow */ #define _VECTOR_SIZE 4 /* Size of individual vector. */ #define _VECTORS_SIZE (38 * _VECTOR_SIZE) - +/** @} */ /* Constants */ #define SPM_PAGESIZE (128) @@ -927,9 +939,13 @@ #define E2END (0x3FF) #define E2PAGESIZE (4) #define FLASHEND (0x7FFF) +/** @} */ - -/* Fuses */ +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 3 /* Low Fuse Byte */ @@ -941,38 +957,52 @@ #define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ #define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator options */ #define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ -#define LFUSE_DEFAULT (FUSE_CKDIV8 & FUSE_SUT1 & FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1) +#define LFUSE_DEFAULT (FUSE_CKDIV8 & FUSE_SUT1 & FUSE_SUT0 & FUSE_CKSEL3 & \ + FUSE_CKSEL2 & FUSE_CKSEL1) /* High Fuse Byte */ #define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ #define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ #define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ -#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +/* EEPROM memory is preserved through chip erase */ +#define FUSE_EESAVE (unsigned char)~_BV(3) #define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ -#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +/* Enable Serial programming and Data Downloading */ +#define FUSE_SPIEN (unsigned char)~_BV(5) #define FUSE_RSTDISBL (unsigned char)~_BV(6) /* External Reset Disable */ #define FUSE_DWEN (unsigned char)~_BV(7) /* dwbugWIRE Enable */ #define HFUSE_DEFAULT (FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0) /* Extended Fuse Byte */ -#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ -#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ -#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +/* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +/* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +/* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) #define FUSE_HWBE (unsigned char)~_BV(3) /* Hardware Boot Enable */ #define EFUSE_DEFAULT (0xFF) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x8A - +/** @} */ /* Device Pin Definitions */ #endif /* _AVR_ATmega32U2_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom32u4.h b/cpukit/score/cpu/avr/avr/iom32u4.h index 87f3b360ad..263d40f9b2 100644 --- a/cpukit/score/cpu/avr/avr/iom32u4.h +++ b/cpukit/score/cpu/avr/avr/iom32u4.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega32U4 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2008 Atmel Corporation All rights reserved. @@ -48,6 +56,13 @@ #ifndef _AVR_IOM32U4_H_ #define _AVR_IOM32U4_H_ 1 +/** + * @defgroup AvrDef_iom32u4 ATmega32U4 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* Registers and associated bit numbers */ @@ -1498,6 +1513,6 @@ #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x87 - +/** @} */ #endif /* _AVR_IOM32U4_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom32u6.h b/cpukit/score/cpu/avr/avr/iom32u6.h index a8b7f566f1..9f4211dd80 100644 --- a/cpukit/score/cpu/avr/avr/iom32u6.h +++ b/cpukit/score/cpu/avr/avr/iom32u6.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2008 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom32u6.h - definitions for ATmega32U6 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom32u6.h + * + * @brief Definitions for ATmega32U6 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2008 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom32u6.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega32U6_H_ #define _AVR_ATmega32U6_H_ 1 +/** + * @defgroup Avr_iom32u6 ATmega32U6 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -1406,5 +1417,5 @@ #define SIGNATURE_2 0x88 +/**@}*/ #endif /* _AVR_ATmega32U6_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom406.h b/cpukit/score/cpu/avr/avr/iom406.h index a349ff369c..b0baafd024 100644 --- a/cpukit/score/cpu/avr/avr/iom406.h +++ b/cpukit/score/cpu/avr/avr/iom406.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2006, Pieter Conradie - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom406.h - definitions for ATmega406 */ +/** + * @file avr/iom406.h + * + * @brief Definitions for ATmega406 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2006, Pieter Conradie + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM406_H_ #define _AVR_IOM406_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom406 ATmega406 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom406.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -348,13 +360,13 @@ /* Pin Change Mask Register 1 */ #define PCMSK1 _SFR_MEM8(0x6C) -#define PCINT15 7 -#define PCINT14 6 -#define PCINT13 5 -#define PCINT12 4 -#define PCINT11 3 -#define PCINT10 2 -#define PCINT9 1 +#define PCINT15 7 +#define PCINT14 6 +#define PCINT13 5 +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 #define PCINT8 0 /* Reserved [0x6D] */ @@ -755,7 +767,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -764,4 +776,5 @@ #define SIGNATURE_2 0x07 +/**@}*/ #endif /* _AVR_IOM406_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom48.h b/cpukit/score/cpu/avr/avr/iom48.h index 57d345e23b..2840dff539 100644 --- a/cpukit/score/cpu/avr/avr/iom48.h +++ b/cpukit/score/cpu/avr/avr/iom48.h @@ -1,37 +1,51 @@ -/* Copyright (c) 2004, Theodore A. Roth - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file + * + * @brief Definitions for iom48 + */ + +/* + * Copyright (c) 2004, Theodore A. Roth + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM48_H_ #define _AVR_IOM48_H_ 1 +/** + * @defgroup Avr_iom48 iom48 Definitions + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iomx8.h> /* Constants */ @@ -82,5 +96,5 @@ #define SIGNATURE_1 0x92 #define SIGNATURE_2 0x05 - +/**@}*/ #endif /* _AVR_IOM48_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom48p.h b/cpukit/score/cpu/avr/avr/iom48p.h index 2ced5dc8a9..db48949ae3 100644 --- a/cpukit/score/cpu/avr/avr/iom48p.h +++ b/cpukit/score/cpu/avr/avr/iom48p.h @@ -1,38 +1,42 @@ -/* Copyright (c) 2007 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. -*/ - - -/* avr/iom48p.h - definitions for ATmega48P. */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom48p.h + * + * @brief Definitions for ATmega48P + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2007 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -42,12 +46,19 @@ # define _AVR_IOXXX_H_ "iom48p.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_IOM48P_H_ #define _AVR_IOM48P_H_ 1 +/** + * @defgroup Avr_iom48p ATmega48P Definitions + * + * @ingroup avr + */ +/**@{*/ + /* Registers and associated bit numbers */ #define PINB _SFR_IO8(0x03) @@ -791,7 +802,7 @@ #define TIMER2_OVF_vect _VECTOR(9) /* Timer/Counter2 Overflow */ #define TIMER1_CAPT_vect _VECTOR(10) /* Timer/Counter1 Capture Event */ #define TIMER1_COMPA_vect _VECTOR(11) /* Timer/Counter1 Compare Match A */ -#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ #define TIMER1_OVF_vect _VECTOR(13) /* Timer/Counter1 Overflow */ #define TIMER0_COMPA_vect _VECTOR(14) /* TimerCounter0 Compare Match A */ #define TIMER0_COMPB_vect _VECTOR(15) /* TimerCounter0 Compare Match B */ @@ -855,7 +866,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -864,4 +875,5 @@ #define SIGNATURE_2 0x0A +/**@}*/ #endif /* _AVR_IOM48P_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom640.h b/cpukit/score/cpu/avr/avr/iom640.h index f3fe369042..d542d2eed5 100644 --- a/cpukit/score/cpu/avr/avr/iom640.h +++ b/cpukit/score/cpu/avr/avr/iom640.h @@ -1,39 +1,52 @@ -/* Copyright (c) 2005 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom640.h - definitions for ATmega640 */ +/** + * @file avr/iom640.h + * + * @brief Definitions for ATmega640 + */ + +/* + * Copyright (c) 2005 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM640_H_ #define _AVR_IOM640_H_ 1 +/** + * @defgroup Avr_iom640 ATmega640 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + #include <avr/iomxx0_1.h> /* Constants */ @@ -81,7 +94,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -89,5 +102,5 @@ #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x08 - +/** @} */ #endif /* _AVR_IOM640_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom644.h b/cpukit/score/cpu/avr/avr/iom644.h index 2ad996c647..dcfab293ef 100644 --- a/cpukit/score/cpu/avr/avr/iom644.h +++ b/cpukit/score/cpu/avr/avr/iom644.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Definitions for ATmega644 + */ + /* Copyright (c) 2005 Anatoly Sokolov All rights reserved. @@ -36,6 +42,14 @@ #include <avr/iomxx4.h> +/** + * @defgroup AvrDef_iom644 ATmega644 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Constants */ #define SPM_PAGESIZE 256 #define RAMEND 0x10FF @@ -89,5 +103,6 @@ #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x09 +/** @} */ #endif /* _AVR_IOM644_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom644p.h b/cpukit/score/cpu/avr/avr/iom644p.h index 21b19d4392..5c42b09c6d 100644 --- a/cpukit/score/cpu/avr/avr/iom644p.h +++ b/cpukit/score/cpu/avr/avr/iom644p.h @@ -36,17 +36,24 @@ #include <avr/iomxx4.h> -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE 256 #define RAMEND 0x10FF #define XRAMEND RAMEND #define E2END 0x7FF #define E2PAGESIZE 8 #define FLASHEND 0xFFFF +/** @} */ - -/* Fuses */ - +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 3 /* Low Fuse Byte */ @@ -58,7 +65,8 @@ #define FUSE_SUT1 (unsigned char)~_BV(5) #define FUSE_CKOUT (unsigned char)~_BV(6) #define FUSE_CKDIV8 (unsigned char)~_BV(7) -#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & \ + FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) /* High Fuse Byte */ #define FUSE_BOOTRST (unsigned char)~_BV(0) @@ -76,18 +84,26 @@ #define FUSE_BODLEVEL1 (unsigned char)~_BV(1) #define FUSE_BODLEVEL2 (unsigned char)~_BV(2) #define EFUSE_DEFAULT (0xFF) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x0A - +/** @} */ #endif /* _AVR_IOM644P_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom644pa.h b/cpukit/score/cpu/avr/avr/iom644pa.h index 0bcf3e6e50..e794e089a5 100644 --- a/cpukit/score/cpu/avr/avr/iom644pa.h +++ b/cpukit/score/cpu/avr/avr/iom644pa.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom644PA.h - definitions for ATmega644PA */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom644PA.h + * + * @brief Definitions for ATmega644PA + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom644PA.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega644PA_H_ #define _AVR_ATmega644PA_H_ 1 +/** + * @defgroup Avr_iom644PA ATmega644PA Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -1365,5 +1376,5 @@ #define PCINT12_PIN PINB #define PCINT12_BIT 4 +/**@}*/ #endif /* _AVR_ATmega644PA_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom645.h b/cpukit/score/cpu/avr/avr/iom645.h index 1b73f2be69..991ff821fd 100644 --- a/cpukit/score/cpu/avr/avr/iom645.h +++ b/cpukit/score/cpu/avr/avr/iom645.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2004,2005,2006 Eric B. Weddington - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom645.h - definitions for ATmega645 */ +/** + * @file avr/iom645.h + * + * @brief Definitions for ATmega645 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2004,2005,2006 Eric B. Weddington + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM645_H_ #define _AVR_IOM645_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom645 ATmega645 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom645.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* Registers and associated bit numbers */ @@ -803,7 +815,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -811,5 +823,5 @@ #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x05 - +/**@}*/ #endif /* _AVR_IOM645_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom6450.h b/cpukit/score/cpu/avr/avr/iom6450.h index 8317f18013..fa2203e527 100644 --- a/cpukit/score/cpu/avr/avr/iom6450.h +++ b/cpukit/score/cpu/avr/avr/iom6450.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega6450 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2004,2005,2006 Eric B. Weddington All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_iom6450 ATmega6450 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Registers and associated bit numbers */ #define PINA _SFR_IO8(0x00) @@ -902,5 +918,6 @@ #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x06 +/** @} */ #endif /* _AVR_IOM6450_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom649.h b/cpukit/score/cpu/avr/avr/iom649.h index c9d5058a24..2064573933 100644 --- a/cpukit/score/cpu/avr/avr/iom649.h +++ b/cpukit/score/cpu/avr/avr/iom649.h @@ -1,40 +1,53 @@ -/* Copyright (c) 2004 Eric B. Weddington - Copyright (c) 2005,2006 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - -/* avr/iom649.h - definitions for ATmega649 */ +/** + * @file avr/iom649.h + * + * @brief Definitions for ATmega649 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2004 Eric B. Weddington + * Copyright (c) 2005,2006 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM649_H_ #define _AVR_IOM649_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom649 ATmega649 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +57,7 @@ # define _AVR_IOXXX_H_ "iom649.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* Registers and associated bit numbers */ @@ -980,7 +993,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -988,5 +1001,5 @@ #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x03 - +/**@}*/ #endif /* _AVR_IOM649_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom6490.h b/cpukit/score/cpu/avr/avr/iom6490.h index f678acf30f..10334d7677 100644 --- a/cpukit/score/cpu/avr/avr/iom6490.h +++ b/cpukit/score/cpu/avr/avr/iom6490.h @@ -1,40 +1,53 @@ -/* Copyright (c) 2004 Eric B. Weddington - Copyright (c) 2005,2006 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - -/* avr/iom6490.h - definitions for ATmega6490 */ +/** + * @file avr/iom6490.h + * + * @brief Definitions for ATmega6490 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2004 Eric B. Weddington + * Copyright (c) 2005,2006 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM6490_H_ #define _AVR_IOM6490_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom6490 ATmega6490 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +57,7 @@ # define _AVR_IOXXX_H_ "iom6490.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* Registers and associated bit numbers */ @@ -1132,7 +1145,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -1141,4 +1154,5 @@ #define SIGNATURE_2 0x04 +/**@}*/ #endif /* _AVR_IOM6490_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom64c1.h b/cpukit/score/cpu/avr/avr/iom64c1.h index a30aee0d98..5895fe9857 100644 --- a/cpukit/score/cpu/avr/avr/iom64c1.h +++ b/cpukit/score/cpu/avr/avr/iom64c1.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega64C1 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2009 Atmel Corporation All rights reserved. @@ -47,6 +55,13 @@ #ifndef _AVR_ATmega64C1_H_ #define _AVR_ATmega64C1_H_ 1 +/** + * @defgroup AvrDef_iom64c1 ATmega64C1 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* Registers and associated bit numbers. */ @@ -1292,6 +1307,7 @@ #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x86 +/** @} */ #endif /* _AVR_ATmega64C1_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom64hve.h b/cpukit/score/cpu/avr/avr/iom64hve.h index 2e2debc19f..913697de98 100644 --- a/cpukit/score/cpu/avr/avr/iom64hve.h +++ b/cpukit/score/cpu/avr/avr/iom64hve.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom64hve.h - definitions for ATmega64HVE */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom64hve.h + * + * @brief Definitions for ATmega64HVE + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom64hve.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATmega64HVE_H_ #define _AVR_ATmega64HVE_H_ 1 +/** + * @defgroup Avr_iom64hve ATmega64HVE Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -958,7 +969,7 @@ #define PI_DDR DDRI #define PI_PORT PORTI #define PI_PIN PINI -#define PI_BIT +#define PI_BIT #define NI_DDR DDRNI #define NI_PORT PORTNI @@ -1015,5 +1026,5 @@ #define OC_PIN PINOC #define OC_BIT OC +/**@}*/ #endif /* _AVR_ATmega64HVE_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iom64m1.h b/cpukit/score/cpu/avr/avr/iom64m1.h index 6a97062440..492e524185 100644 --- a/cpukit/score/cpu/avr/avr/iom64m1.h +++ b/cpukit/score/cpu/avr/avr/iom64m1.h @@ -48,8 +48,11 @@ #define _AVR_ATmega64M1_H_ 1 -/* Registers and associated bit numbers. */ - +/** + * @name Registers and Associated Bit Numbers + * + */ +/**@{**/ #define PINB _SFR_IO8(0x03) #define PINB0 0 #define PINB1 1 @@ -1415,9 +1418,13 @@ #define MSG5 5 #define MSG6 6 #define MSG7 7 +/** @} */ - -/* Interrupt vectors */ +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* Vector 0 is the reset vector */ #define ANACOMP0_vect_num 1 #define ANACOMP0_vect _VECTOR(1) /* Analog Comparator 0 */ @@ -1442,15 +1449,19 @@ #define TIMER1_CAPT_vect_num 11 #define TIMER1_CAPT_vect _VECTOR(11) /* Timer/Counter1 Capture Event */ #define TIMER1_COMPA_vect_num 12 -#define TIMER1_COMPA_vect _VECTOR(12) /* Timer/Counter1 Compare Match A */ +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(12) #define TIMER1_COMPB_vect_num 13 -#define TIMER1_COMPB_vect _VECTOR(13) /* Timer/Counter1 Compare Match B */ +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(13) #define TIMER1_OVF_vect_num 14 #define TIMER1_OVF_vect _VECTOR(14) /* Timer1/Counter1 Overflow */ #define TIMER0_COMPA_vect_num 15 -#define TIMER0_COMPA_vect _VECTOR(15) /* Timer/Counter0 Compare Match A */ +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPA_vect _VECTOR(15) #define TIMER0_COMPB_vect_num 16 -#define TIMER0_COMPB_vect _VECTOR(16) /* Timer/Counter0 Compare Match B */ +/* Timer/Counter0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(16) #define TIMER0_OVF_vect_num 17 #define TIMER0_OVF_vect _VECTOR(17) /* Timer/Counter0 Overflow */ #define CAN_INT_vect_num 18 @@ -1482,9 +1493,13 @@ #define _VECTOR_SIZE 4 /* Size of individual vector. */ #define _VECTORS_SIZE (31 * _VECTOR_SIZE) +/** @} */ - -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE (256) #define RAMSTART (0x0100) #define RAMSIZE (4096) @@ -1495,9 +1510,13 @@ #define E2END (0x7FF) #define E2PAGESIZE (8) #define FLASHEND (0xFFFF) +/** @} */ - -/* Fuses */ +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 3 /* Low Fuse Byte */ @@ -1509,40 +1528,54 @@ #define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ #define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator output option */ #define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ -#define LFUSE_DEFAULT (FUSE_CKDIV8 & FUSE_SUT1 & FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1) +#define LFUSE_DEFAULT (FUSE_CKDIV8 & FUSE_SUT1 & FUSE_SUT0 & \ + FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1) /* High Fuse Byte */ #define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ #define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ #define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ -#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +/* EEPROM memory is preserved through chip erase */ +#define FUSE_EESAVE (unsigned char)~_BV(3) #define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ -#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +/* Enable Serial programming and Data Downloading */ +#define FUSE_SPIEN (unsigned char)~_BV(5) #define FUSE_DWEN (unsigned char)~_BV(6) /* DebugWIRE Enable */ #define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Disable */ #define HFUSE_DEFAULT (FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0) /* Extended Fuse Byte */ -#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector Trigger Level */ -#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector Trigger Level */ -#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector Trigger Level */ +/* Brown-out Detector Trigger Level */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +/* Brown-out Detector Trigger Level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +/* Brown-out Detector Trigger Level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) #define FUSE_PSCRVB (unsigned char)~_BV(3) /* PSC Outputs xB Reset Value */ #define FUSE_PSCRVA (unsigned char)~_BV(4) /* PSC Outputs xA Reset Value */ #define FUSE_PSCRB (unsigned char)~_BV(5) /* PSC Reset Behavior */ #define EFUSE_DEFAULT (FUSE_BODLEVEL2 & FUSE_BODLEVEL1) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x84 - +/** @} */ #endif /* _AVR_ATmega64M1_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom8.h b/cpukit/score/cpu/avr/avr/iom8.h index 02ad8e1ac3..c918b43dfb 100644 --- a/cpukit/score/cpu/avr/avr/iom8.h +++ b/cpukit/score/cpu/avr/avr/iom8.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega8 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2002, Marek Michalkiewicz All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_iom8 ATmega8 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */ @@ -609,5 +625,6 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x07 +/** @} */ #endif /* _AVR_IOM8_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom8515.h b/cpukit/score/cpu/avr/avr/iom8515.h index 0516670064..7576f8df4e 100644 --- a/cpukit/score/cpu/avr/avr/iom8515.h +++ b/cpukit/score/cpu/avr/avr/iom8515.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002, Steinar Haugen - All rights reserved. +/** + * @file avr/iom8515.h + * + * @brief Definitions for ATmega8515 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iom8515.h - definitions for ATmega8515 */ +/* + * Copyright (c) 2002, Steinar Haugen + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOM8515_H_ #define _AVR_IOM8515_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iom8515 ATmega8515 Definitons + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom8515.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -623,7 +635,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -631,5 +643,5 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x06 - +/**@}*/ #endif /* _AVR_IOM8515_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom8535.h b/cpukit/score/cpu/avr/avr/iom8535.h index 035587103e..061a0fce6b 100644 --- a/cpukit/score/cpu/avr/avr/iom8535.h +++ b/cpukit/score/cpu/avr/avr/iom8535.h @@ -46,8 +46,11 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif -/* I/O registers */ - +/** + * @name I/O Registers + * + */ +/**@{**/ /* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */ #define TWBR _SFR_IO8(0x00) #define TWSR _SFR_IO8(0x01) @@ -227,9 +230,13 @@ /* 0x3D..0x3E SP */ /* 0x3F SREG */ +/** @} */ -/* Interrupt vectors */ - +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* External Interrupt 0 */ #define INT0_vect _VECTOR(1) #define SIG_INTERRUPT0 _VECTOR(1) @@ -311,10 +318,10 @@ #define SIG_SPM_READY _VECTOR(20) #define _VECTORS_SIZE 42 - +/** @} */ /* - The Register Bit names are represented by their bit number (0-7). -*/ + * The Register Bit names are represented by their bit number (0-7). + */ /* General Interrupt Control Register */ #define INT1 7 @@ -394,10 +401,10 @@ #define CS00 0 /* - The ADHSM bit has been removed from all documentation, - as being not needed at all since the comparator has proven - to be fast enough even without feeding it more power. -*/ + * The ADHSM bit has been removed from all documentation, + * as being not needed at all since the comparator has proven + * to be fast enough even without feeding it more power. + */ /* Special Function IO Register */ #define ADTS2 7 @@ -663,17 +670,24 @@ #define EEWE 1 #define EERE 0 -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE 64 #define RAMEND 0x25F /* Last On-Chip SRAM Location */ #define XRAMEND RAMEND #define E2END 0x1FF #define E2PAGESIZE 4 #define FLASHEND 0x1FFF +/** @} */ - -/* Fuses */ - +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 2 /* Low Fuse Byte */ @@ -685,7 +699,8 @@ #define FUSE_SUT1 (unsigned char)~_BV(5) #define FUSE_BODEN (unsigned char)~_BV(6) #define FUSE_BODLEVEL (unsigned char)~_BV(7) -#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1) +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & \ + FUSE_SUT0 & FUSE_SUT1) /* High Fuse Byte */ #define FUSE_BOOTRST (unsigned char)~_BV(0) @@ -697,18 +712,26 @@ #define FUSE_WDTON (unsigned char)~_BV(6) #define FUSE_S8535C (unsigned char)~_BV(7) #define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x08 - +/** @} */ #endif /* _AVR_IOM8535_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom88.h b/cpukit/score/cpu/avr/avr/iom88.h index 063b1faecc..f3e5e64c45 100644 --- a/cpukit/score/cpu/avr/avr/iom88.h +++ b/cpukit/score/cpu/avr/avr/iom88.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Definitions for ATmega88 + */ + /* Copyright (c) 2004, Theodore A. Roth All rights reserved. @@ -32,6 +38,14 @@ #ifndef _AVR_IOM88_H_ #define _AVR_IOM88_H_ 1 +/** + * @defgroup AvrDef_iom88 ATmega88 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + #include <avr/iomx8.h> /* Constants */ @@ -86,5 +100,6 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x0A +/** @} */ #endif /* _AVR_IOM88_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom88p.h b/cpukit/score/cpu/avr/avr/iom88p.h index a95fad464b..0c98183d58 100644 --- a/cpukit/score/cpu/avr/avr/iom88p.h +++ b/cpukit/score/cpu/avr/avr/iom88p.h @@ -1,38 +1,42 @@ -/* Copyright (c) 2007 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. -*/ - - -/* avr/iom88p.h - definitions for ATmega88P. */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iom88p.h + * + * @brief Definitions for ATmega88P + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2007 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -42,12 +46,19 @@ # define _AVR_IOXXX_H_ "iom88p.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_IOM88P_H_ #define _AVR_IOM88P_H_ 1 +/** + * @defgroup Avr_iom88p ATmega88P Definitions + * + * @ingroup avr + */ +/**@{*/ + /* Registers and associated bit numbers */ #define PINB _SFR_IO8(0x03) @@ -330,7 +341,7 @@ #define WDRF 3 #define MCUCR _SFR_IO8(0x35) -#define IVCE 0 +#define IVCE 0 #define IVSEL 1 #define PUD 4 #define BODSE 5 @@ -795,7 +806,7 @@ #define TIMER2_OVF_vect _VECTOR(9) /* Timer/Counter2 Overflow */ #define TIMER1_CAPT_vect _VECTOR(10) /* Timer/Counter1 Capture Event */ #define TIMER1_COMPA_vect _VECTOR(11) /* Timer/Counter1 Compare Match A */ -#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ #define TIMER1_OVF_vect _VECTOR(13) /* Timer/Counter1 Overflow */ #define TIMER0_COMPA_vect _VECTOR(14) /* TimerCounter0 Compare Match A */ #define TIMER0_COMPB_vect _VECTOR(15) /* TimerCounter0 Compare Match B */ @@ -861,7 +872,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -869,5 +880,5 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x0F - +/**@}*/ #endif /* _AVR_IOM88P_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom8hva.h b/cpukit/score/cpu/avr/avr/iom8hva.h index 804ff526bf..fc36eabb25 100644 --- a/cpukit/score/cpu/avr/avr/iom8hva.h +++ b/cpukit/score/cpu/avr/avr/iom8hva.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Definitions for ATmega8HVA + */ + /* Copyright (c) 2007, Anatoly Sokolov All rights reserved. @@ -36,6 +42,14 @@ #include <avr/iomxxhva.h> +/** + * @defgroup AvrDef_iom8hva ATmega8HVA Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Constants */ #define SPM_PAGESIZE 128 #define RAMEND 0x2FF @@ -64,6 +78,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST +/** @} */ #endif /* _AVR_IOM8HVA_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iom8u2.h b/cpukit/score/cpu/avr/avr/iom8u2.h index 24c8ff12d8..c3ee0ba211 100644 --- a/cpukit/score/cpu/avr/avr/iom8u2.h +++ b/cpukit/score/cpu/avr/avr/iom8u2.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATmega8U2 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2009 Atmel Corporation All rights reserved. @@ -47,6 +55,13 @@ #ifndef _AVR_ATmega8U2_H_ #define _AVR_ATmega8U2_H_ 1 +/** + * @defgroup AvrDef_iom8u2 ATmega8U2 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* Registers and associated bit numbers. */ @@ -960,7 +975,9 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x89 - /* Device Pin Definitions */ + +/** @} */ + #endif /* _AVR_ATmega8U2_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iomx8.h b/cpukit/score/cpu/avr/avr/iomx8.h index 46ffc47589..f145d9d27d 100644 --- a/cpukit/score/cpu/avr/avr/iomx8.h +++ b/cpukit/score/cpu/avr/avr/iomx8.h @@ -46,8 +46,11 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif -/* I/O registers */ - +/** + * @name I/O Registers + * + */ +/**@{**/ /* Port B */ #define PINB _SFR_IO8 (0x03) @@ -203,16 +206,19 @@ #define EEARL _SFR_IO8(0x21) #define EEARH _SFR_IO8(0X22) /* -Even though EEARH is not used by the mega48, the EEAR8 bit in the register -must be written to 0, according to the datasheet, hence the EEARH register -must be defined for the mega48. -*/ -/* 6-char sequence denoting where to find the EEPROM registers in memory space. - Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM - subroutines. - First two letters: EECR address. - Second two letters: EEDR address. - Last two letters: EEAR address. */ + * Even though EEARH is not used by the mega48, the EEAR8 bit in the register + * must be written to 0, according to the datasheet, hence the EEARH register + * must be defined for the mega48. + */ +/* + * 6-char sequence denoting where to find the EEPROM registers in + * memory space. + * Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + * subroutines. + * First two letters: EECR address. + * Second two letters: EEDR address. + * Last two letters: EEAR address. + */ #define __EEPROM_REG_LOCATIONS__ 1F2021 @@ -617,9 +623,13 @@ must be defined for the mega48. #define UBRR0L _SFR_MEM8 (0xC4) #define UBRR0H _SFR_MEM8 (0xC5) #define UDR0 _SFR_MEM8 (0xC6) +/** @} */ -/* Interrupt vectors */ - +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* External Interrupt Request 0 */ #define INT0_vect _VECTOR(1) #define SIG_INTERRUPT0 _VECTOR(1) @@ -721,14 +731,17 @@ must be defined for the mega48. #define SPM_READY_vect _VECTOR(25) #define SIG_SPM_READY _VECTOR(25) -/* The mega48 and mega88 vector tables are single instruction entries (16 bits - per entry for an RJMP) while the mega168 table has double instruction - entries (32 bits per entry for a JMP). */ +/* + * The mega48 and mega88 vector tables are single instruction entries (16 bits + * per entry for an RJMP) while the mega168 table has double instruction + * entries (32 bits per entry for a JMP). + */ #if defined (__AVR_ATmega168__) # define _VECTORS_SIZE 104 #else # define _VECTORS_SIZE 52 #endif +/** @} */ #endif /* _AVR_IOM8_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iomxx0_1.h b/cpukit/score/cpu/avr/avr/iomxx0_1.h index 3abc5cb0ea..2e62117ce9 100644 --- a/cpukit/score/cpu/avr/avr/iomxx0_1.h +++ b/cpukit/score/cpu/avr/avr/iomxx0_1.h @@ -1,41 +1,52 @@ -/* Copyright (c) 2005 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iomxx0_1.h - definitions for ATmega640, Atmega1280, ATmega1281, - ATmega2560 and ATmega2561. */ +/** + * @file avr/iomxx0_1.h + * + * @brief Definitions for ATmega640/1280/1281/2560/2561 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2005, Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOMXX0_1_H_ #define _AVR_IOMXX0_1_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iomxx0_1 ATmega640/1280/1281/2560/2561 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -45,7 +56,7 @@ # define _AVR_IOXXX_H_ "iomxx0_1.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) # define __ATmegaxx0__ @@ -298,7 +309,7 @@ #define TOV5 0 #define PCIFR _SFR_IO8(0x1B) -#if defined(__ATmegaxx0__) +#if defined(__ATmegaxx0__) # define PCIF2 2 #endif /* __ATmegaxx0__ */ #define PCIF1 1 @@ -321,7 +332,7 @@ #define INT4 4 #define INT3 3 #define INT2 2 -#define INT1 1 +#define INT1 1 #define INT0 0 #define GPIOR0 _SFR_IO8(0x1E) @@ -555,7 +566,7 @@ #define PCINT9 1 #define PCINT8 0 -#if defined(__ATmegaxx0__) +#if defined(__ATmegaxx0__) # define PCMSK2 _SFR_MEM8(0x6D) # define PCINT23 7 # define PCINT22 6 @@ -1250,7 +1261,7 @@ /* Reserved [0x12E..0x12F] */ -#if defined(__ATmegaxx0__) +#if defined(__ATmegaxx0__) # define UCSR3A _SFR_MEM8(0x130) # define RXC3 7 @@ -1549,4 +1560,5 @@ # undef __ATmegaxx1__ #endif +/**@}*/ #endif /* _AVR_IOMXX0_1_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iomxx4.h b/cpukit/score/cpu/avr/avr/iomxx4.h index 4b88642f74..9dd64d875d 100644 --- a/cpukit/score/cpu/avr/avr/iomxx4.h +++ b/cpukit/score/cpu/avr/avr/iomxx4.h @@ -1,40 +1,53 @@ -/* Copyright (c) 2005, 2006, 2007 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - -/* avr/iomXX4.h - definitions for ATmega164P/324P/644P and ATmega644 */ +/** + * @file avr/iomXX4.h + * + * @brief Definitions for ATmega164P/324P/644P and ATmega644 + * + * This file should only be included from <avr/io.h>, never directly. + */ +/* + * Copyright (c) 2005, 2006, 2007 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOMXX4_H_ #define _AVR_IOMXX4_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup AvrDef_iomXX4 ATmega164P/324P/644P , ATmega644 Defintions + * + * @ingroup avr + * + */ +/**@{**/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -865,4 +878,5 @@ #endif /* defined(__AVR_ATmega644__) */ +/** @} */ #endif /* _AVR_IOMXX4_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iomxxhva.h b/cpukit/score/cpu/avr/avr/iomxxhva.h index 5b6bfdd7ed..2f62e18a0b 100644 --- a/cpukit/score/cpu/avr/avr/iomxxhva.h +++ b/cpukit/score/cpu/avr/avr/iomxxhva.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2007, Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* iomxxhva.h - definitions for ATmega8HVA and ATmega16HVA. */ +/** + * @file iomxxhva.h + * + * @brief Definitions for ATmega8HVA and ATmega16HVA + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2007 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOMXXHVA_H_ #define _AVR_IOMXXHVA_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iomxxhva ATmega8HVA, ATmega16HVA Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iomxxhva.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* Registers and associated bit numbers */ @@ -114,7 +126,7 @@ #define EIMSK _SFR_IO8(0x1D) #define INT2 2 -#define INT1 1 +#define INT1 1 #define INT0 0 #define GPIOR0 _SFR_IO8(0x1E) @@ -518,5 +530,5 @@ # define _VECTORS_SIZE 42 #endif - +/**@}*/ #endif /* _AVR_IOMXXHVA_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn11.h b/cpukit/score/cpu/avr/avr/iotn11.h index 176b2dd0d3..8310f560ed 100644 --- a/cpukit/score/cpu/avr/avr/iotn11.h +++ b/cpukit/score/cpu/avr/avr/iotn11.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002,2005 Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/iotn11.h + * + * @brief Definitions for ATtiny10/11 + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/iotn11.h - definitions for ATtiny10/11 */ +/* + * Copyright (c) 2002, 2005 Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOTN11_H_ #define _AVR_IOTN11_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iotn11 ATtiny10/11 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iotn11.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef __ASSEMBLER__ # warning "MCU not supported by the C compiler" @@ -230,4 +242,5 @@ #define SIGNATURE_2 0x04 +/**@}*/ #endif /* _AVR_IOTN11_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn12.h b/cpukit/score/cpu/avr/avr/iotn12.h index 7762ec0169..5851dee68b 100644 --- a/cpukit/score/cpu/avr/avr/iotn12.h +++ b/cpukit/score/cpu/avr/avr/iotn12.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2002,2005 Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/iotn12.h + * + * @brief Definitions for ATtiny12 + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/iotn12.h - definitions for ATtiny12 */ +/* + * Copyright (c) 2002,2005 Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOTN12_H_ #define _AVR_IOTN12_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iotn12 ATtiny12 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iotn12.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef __ASSEMBLER__ # warning "MCU not supported by the C compiler" @@ -260,5 +272,5 @@ #define SIGNATURE_1 0x90 #define SIGNATURE_2 0x05 - +/**@}*/ #endif /* _AVR_IOTN12_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn13.h b/cpukit/score/cpu/avr/avr/iotn13.h index ae13f703b9..3f491fa914 100644 --- a/cpukit/score/cpu/avr/avr/iotn13.h +++ b/cpukit/score/cpu/avr/avr/iotn13.h @@ -1,42 +1,54 @@ -/* Copyright (c) 2004, Theodore A. Roth - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn13.h - definitions for ATtiny13 */ - -/* Verified 5/20/04 by Bruce Graham */ +/** + * @file avr/iotn13.h + * + * @brief Definitions for ATtiny13 + * + * Verified 5/20/04 by Bruce Graham + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2004, Theodore A. Roth + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOTN13_H_ #define _AVR_IOTN13_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iotn13 ATtiny13 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -46,7 +58,7 @@ # define _AVR_IOXXX_H_ "iotn13.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers and bit names */ @@ -360,4 +372,5 @@ #define SIGNATURE_2 0x07 +/**@}*/ #endif /* _AVR_IOTN13_H_*/ diff --git a/cpukit/score/cpu/avr/avr/iotn13a.h b/cpukit/score/cpu/avr/avr/iotn13a.h index 4ca5b0751a..689f4032d6 100644 --- a/cpukit/score/cpu/avr/avr/iotn13a.h +++ b/cpukit/score/cpu/avr/avr/iotn13a.h @@ -47,9 +47,11 @@ #ifndef _AVR_ATTINY13A_H_ #define _AVR_ATTINY13A_H_ 1 - -/* Registers and associated bit numbers. */ - +/** + * @name Registers and Associated Bit Numbers + * + */ +/**@{**/ #define ADCSRB _SFR_IO8(0x03) #define ADTS0 0 #define ADTS1 1 @@ -306,9 +308,13 @@ #define GIMSK _SFR_IO8(0x3B) #define PCIE 5 #define INT0 6 +/** @} */ - -/* Interrupt vectors */ +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* Vector 0 is the reset vector */ #define INT0_vect_num 1 #define INT0_vect _VECTOR(1) /* External Interrupt 0 */ @@ -331,9 +337,13 @@ #define _VECTOR_SIZE 2 /* Size of individual vector. */ #define _VECTORS_SIZE (10 * _VECTOR_SIZE) +/** @} */ - -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE (32) #define RAMSTART (0x60) #define RAMSIZE (64) @@ -344,9 +354,13 @@ #define E2END (64 - 1) #define E2PAGESIZE (4) #define FLASHEND (1024 - 1) +/** @} */ - -/* Fuses */ +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 2 /* Low Fuse Byte */ @@ -354,30 +368,42 @@ #define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ #define FUSE_SUT0 (unsigned char)~_BV(2) /* Select start-up time */ #define FUSE_SUT1 (unsigned char)~_BV(3) /* Select start-up time */ -#define FUSE_CKDIV8 (unsigned char)~_BV(4) /* Start up with system clock divided by 8 */ +/* Start up with system clock divided by 8 */ +#define FUSE_CKDIV8 (unsigned char)~_BV(4) #define FUSE_WDTON (unsigned char)~_BV(5) /* Watch dog timer always on */ -#define FUSE_EESAVE (unsigned char)~_BV(6) /* Keep EEprom contents during chip erase */ +/* Keep EEprom contents during chip erase */ +#define FUSE_EESAVE (unsigned char)~_BV(6) #define FUSE_SPIEN (unsigned char)~_BV(7) /* SPI programming enable */ #define LFUSE_DEFAULT (FUSE_SPIEN & FUSE_CKDIV8 & FUSE_SUT0 & FUSE_CKSEL0) /* High Fuse Byte */ #define FUSE_RSTDISBL (unsigned char)~_BV(0) /* Disable external reset */ -#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) /* Enable BOD and select level */ -#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) /* Enable BOD and select level */ +/* Enable BOD and select level */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +/* Enable BOD and select level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) #define FUSE_DWEN (unsigned char)~_BV(3) /* DebugWire Enable */ #define FUSE_SELFPRGEN (unsigned char)~_BV(4) /* Self Programming Enable */ #define HFUSE_DEFAULT (0xFF) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x90 #define SIGNATURE_2 0x07 - +/** @} */ #endif /* _AVR_ATTINY13A_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn15.h b/cpukit/score/cpu/avr/avr/iotn15.h index ffffee1798..3e7ac81487 100644 --- a/cpukit/score/cpu/avr/avr/iotn15.h +++ b/cpukit/score/cpu/avr/avr/iotn15.h @@ -1,40 +1,53 @@ -/* Copyright (c) 2002,2005 Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file avr/iotn15.h + * + * @brief Definitions for ATtiny15 + * + * This file should only be included from <avr/io.h>, never directly. + */ -/* avr/iotn15.h - definitions for ATtiny15 */ +/* + * Copyright (c) 2002,2005 Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOTN15_H_ #define _AVR_IOTN15_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup AvrDef_iotn15 ATtiny15 Definitions + * + * @ingroup avr + * + */ +/**@{**/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +57,7 @@ # define _AVR_IOXXX_H_ "iotn15.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef __ASSEMBLER__ # warning "MCU not supported by the C compiler" @@ -328,5 +341,5 @@ #define SIGNATURE_1 0x90 #define SIGNATURE_2 0x06 - +/** @} */ #endif /* _AVR_IOTN15_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn167.h b/cpukit/score/cpu/avr/avr/iotn167.h index 0717faaada..53202b33a2 100644 --- a/cpukit/score/cpu/avr/avr/iotn167.h +++ b/cpukit/score/cpu/avr/avr/iotn167.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATtiny167 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2008 Atmel Corporation All rights reserved. @@ -48,6 +56,13 @@ #ifndef _AVR_IOTN167_H_ #define _AVR_IOTN167_H_ 1 +/** + * @defgroup AvrDef_iotn167 ATtiny167 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* Registers and associated bit numbers */ @@ -826,6 +841,6 @@ #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x87 - +/** @} */ #endif /* _AVR_IOTN167_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn2313.h b/cpukit/score/cpu/avr/avr/iotn2313.h index 9495acabb6..21a00522a3 100644 --- a/cpukit/score/cpu/avr/avr/iotn2313.h +++ b/cpukit/score/cpu/avr/avr/iotn2313.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATtiny2313 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2004, 2005, 2006 Bob Paddock All rights reserved. @@ -71,6 +79,14 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_iotn2313 ATtiny2313 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ /* @@ -628,5 +644,6 @@ #define SIGNATURE_1 0x91 #define SIGNATURE_2 0x0A +/** @} */ #endif /* _AVR_IOTN2313_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn2313a.h b/cpukit/score/cpu/avr/avr/iotn2313a.h index eb3da33fd2..a84e4ee3a3 100644 --- a/cpukit/score/cpu/avr/avr/iotn2313a.h +++ b/cpukit/score/cpu/avr/avr/iotn2313a.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn2313a.h - definitions for ATtiny2313A */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotn2313a.h + * + * @brief Definitions for ATtiny2313A + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn2313a.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATtiny2313A_H_ #define _AVR_ATtiny2313A_H_ 1 +/** + * @defgroup Avr_io4434 AT90S4434 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -764,5 +775,5 @@ #define SCL_PIN PINB #define SCL_BIT 7 +/**@}*/ #endif /* _AVR_ATtiny2313A_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iotn24.h b/cpukit/score/cpu/avr/avr/iotn24.h index 57baa1d1c6..2fc94b10da 100644 --- a/cpukit/score/cpu/avr/avr/iotn24.h +++ b/cpukit/score/cpu/avr/avr/iotn24.h @@ -1,39 +1,51 @@ -/* Copyright (c) 2005, Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn24.h - definitions for ATtiny24 */ +/** + * @file avr/iotn24.h + * + * @brief Definitions for ATtiny24 + */ + +/* + * Copyright (c) 2005 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOTN24_H_ #define _AVR_IOTN24_H_ 1 +/** + * @defgroup Avr_iotn24 ATtiny24 Definitions + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iotnx4.h> #define SPM_PAGESIZE 32 @@ -85,4 +97,5 @@ #define SIGNATURE_2 0x0B +/**@}*/ #endif /* _AVR_IOTN24_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn24a.h b/cpukit/score/cpu/avr/avr/iotn24a.h index a413c405a0..266bc94db8 100644 --- a/cpukit/score/cpu/avr/avr/iotn24a.h +++ b/cpukit/score/cpu/avr/avr/iotn24a.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn24a.h - definitions for ATtiny24A */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotn24a.h + * + * @brief Definitions for ATtiny24A + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn24a.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATtiny24A_H_ #define _AVR_ATtiny24A_H_ 1 +/** + * @defgroup Avr_iotn24a ATtiny24A Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -826,5 +837,5 @@ #define PCINT5_PIN PINA #define PCINT5_BIT 5 +/**@}*/ #endif /* _AVR_ATtiny24A_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iotn26.h b/cpukit/score/cpu/avr/avr/iotn26.h index 068d7f98f8..7fcf2a3b59 100644 --- a/cpukit/score/cpu/avr/avr/iotn26.h +++ b/cpukit/score/cpu/avr/avr/iotn26.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATtiny26 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2004,2005 Eric B. Weddington All rights reserved. @@ -46,6 +54,14 @@ #ifndef _AVR_IOTN26_H_ #define _AVR_IOTN26_H_ 1 +/** + * @defgroup AvrDef_iotn26 ATtiny26 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Registers and associated bit numbers */ /* Reserved [0x00..0x03] */ @@ -380,5 +396,6 @@ #define SIGNATURE_1 0x91 #define SIGNATURE_2 0x09 +/** @} */ #endif /* _AVR_IOTN26_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn261.h b/cpukit/score/cpu/avr/avr/iotn261.h index 6e18069b5b..129e595a34 100644 --- a/cpukit/score/cpu/avr/avr/iotn261.h +++ b/cpukit/score/cpu/avr/avr/iotn261.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Definitions for ATtiny261 + */ + /* Copyright (c) 2006, Anatoly Sokolov All rights reserved. @@ -34,6 +40,14 @@ #ifndef _AVR_IOTN261_H_ #define _AVR_IOTN261_H_ 1 +/** + * @defgroup AvrDef_iotn261 ATtiny261 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + #include <avr/iotnx61.h> #define SPM_PAGESIZE 32 @@ -83,5 +97,6 @@ #define SIGNATURE_1 0x91 #define SIGNATURE_2 0x0C +/** @} */ #endif /* _AVR_IOTN261_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn261a.h b/cpukit/score/cpu/avr/avr/iotn261a.h index 2d7169b8c8..607642fe88 100644 --- a/cpukit/score/cpu/avr/avr/iotn261a.h +++ b/cpukit/score/cpu/avr/avr/iotn261a.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn261a.h - definitions for ATtiny261A */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotn261a.h + * + * @brief Definitions for ATtiny261A + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn261a.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATtiny261A_H_ #define _AVR_ATtiny261A_H_ 1 +/** + * @defgroup Avr_iotn261a ATtiny261A Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -971,5 +982,5 @@ #define PA0_PIN PINADC #define PA0_BIT ADC0 +/**@}*/ #endif /* _AVR_ATtiny261A_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iotn28.h b/cpukit/score/cpu/avr/avr/iotn28.h index e91d67ae11..28a68e5ca2 100644 --- a/cpukit/score/cpu/avr/avr/iotn28.h +++ b/cpukit/score/cpu/avr/avr/iotn28.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATtiny28 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2002, Marek Michalkiewicz All rights reserved. @@ -50,6 +58,14 @@ # warning "MCU not supported by the C compiler" #endif +/** + * @defgroup AvrDef_iotn28 ATtiny28 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* I/O registers */ #define OSCCAL _SFR_IO8(0x00) @@ -270,5 +286,6 @@ #define SIGNATURE_1 0x91 #define SIGNATURE_2 0x07 +/** @} */ #endif /* _AVR_IOTN28_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn4313.h b/cpukit/score/cpu/avr/avr/iotn4313.h index 43719da625..f3744853fd 100644 --- a/cpukit/score/cpu/avr/avr/iotn4313.h +++ b/cpukit/score/cpu/avr/avr/iotn4313.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn4313.h - definitions for ATtiny4313 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotn4313.h + * + * @brief Definitions for ATtiny4313 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn4313.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATtiny4313_H_ #define _AVR_ATtiny4313_H_ 1 +/** + * @defgroup Avr_iotn4313 ATtiny4313 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -764,5 +775,5 @@ #define SCL_PIN PINB #define SCL_BIT 7 +/**@}*/ #endif /* _AVR_ATtiny4313_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iotn43u.h b/cpukit/score/cpu/avr/avr/iotn43u.h index 060cff9898..52038673ad 100644 --- a/cpukit/score/cpu/avr/avr/iotn43u.h +++ b/cpukit/score/cpu/avr/avr/iotn43u.h @@ -1,38 +1,42 @@ -/* Copyright (c) 2007 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. -*/ - - -/* avr/iotn43u.h - definitions for ATtiny43U */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotn43u.h + * + * @brief Definitions for ATtiny43U + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2007 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -42,12 +46,19 @@ # define _AVR_IOXXX_H_ "iotn43u.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_IOTN43U_H_ #define _AVR_IOTN43U_H_ 1 +/** + * @defgroup Avr_iotn43u ATtiny43U Definitions + * + * @ingroup avr + */ +/**@{*/ + /* Registers and associated bit numbers */ #define PRR _SFR_IO8(0x00) @@ -554,7 +565,7 @@ #define FUSE_SPIEN (unsigned char)~_BV(5) #define FUSE_DWEN (unsigned char)~_BV(6) #define FUSE_RSTDISBL (unsigned char)~_BV(7) -#define HFUSE_DEFAULT (FUSE_SPIEN) +#define HFUSE_DEFAULT (FUSE_SPIEN) /* Extended Fuse Byte */ #define FUSE_SELFPRGEN (unsigned char)~_BV(0) @@ -571,4 +582,5 @@ #define SIGNATURE_2 0x0C +/**@}*/ #endif /* _AVR_IOTN43U_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn44.h b/cpukit/score/cpu/avr/avr/iotn44.h index 7a49d39e13..5c41ef5484 100644 --- a/cpukit/score/cpu/avr/avr/iotn44.h +++ b/cpukit/score/cpu/avr/avr/iotn44.h @@ -1,39 +1,52 @@ -/* Copyright (c) 2005, Anatoly Sokolov - All rights reserved. +/** + * @file avr/iotn44.h + * + * @brief Definitions for ATtiny44 + */ + +/* + * Copyright (c) 2005, Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn44.h - definitions for ATtiny44 */ #ifndef _AVR_IOTN44_H_ #define _AVR_IOTN44_H_ 1 +/** + * @defgroup Avr_iotn44 ATtiny44 Definitions + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iotnx4.h> /* Constants */ @@ -84,5 +97,5 @@ #define SIGNATURE_1 0x92 #define SIGNATURE_2 0x07 - +/**@}*/ #endif /* _AVR_IOTN44_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn45.h b/cpukit/score/cpu/avr/avr/iotn45.h index f368f9ecd7..b8351210b0 100644 --- a/cpukit/score/cpu/avr/avr/iotn45.h +++ b/cpukit/score/cpu/avr/avr/iotn45.h @@ -1,39 +1,51 @@ -/* Copyright (c) 2005, Joerg Wunsch - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn45.h - definitions for ATtiny45 */ +/** + * @file avr/iotn45.h + * + * @brief Definitions for ATtiny45 + */ + +/* + * Copyright (c) 2005, Joerg Wunsch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOTN45_H_ #define _AVR_IOTN45_H_ 1 +/** + * @defgroup Avr_iotn45 ATtiny45 Definitions + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iotnx5.h> /* Constants */ @@ -85,4 +97,5 @@ #define SIGNATURE_2 0x06 +/**@}*/ #endif /* _AVR_IOTN45_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn461.h b/cpukit/score/cpu/avr/avr/iotn461.h index 2867e3e41a..0b14646486 100644 --- a/cpukit/score/cpu/avr/avr/iotn461.h +++ b/cpukit/score/cpu/avr/avr/iotn461.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Definitions for ATtiny461 + */ + /* Copyright (c) 2006, Anatoly Sokolov All rights reserved. @@ -36,6 +42,14 @@ #include <avr/iotnx61.h> +/** + * @defgroup AvrDef_iotn461 ATtiny461 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Constants */ #define SPM_PAGESIZE 64 #define RAMEND 0x15F @@ -84,5 +98,6 @@ #define SIGNATURE_1 0x92 #define SIGNATURE_2 0x08 +/** @} */ #endif /* _AVR_IOTN461_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn461a.h b/cpukit/score/cpu/avr/avr/iotn461a.h index f92ef46d1b..8aac4fbba9 100644 --- a/cpukit/score/cpu/avr/avr/iotn461a.h +++ b/cpukit/score/cpu/avr/avr/iotn461a.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn461a.h - definitions for ATtiny461A */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotn461a.h + * + * @brief Definitions for ATtiny461A + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn461a.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATtiny461A_H_ #define _AVR_ATtiny461A_H_ 1 +/** + * @defgroup Avr_iotn461a ATtiny461A Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -971,5 +982,5 @@ #define PA0_PIN PINADC #define PA0_BIT ADC0 +/**@}*/ #endif /* _AVR_ATtiny461A_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iotn48.h b/cpukit/score/cpu/avr/avr/iotn48.h index b9204a562c..d878e98305 100644 --- a/cpukit/score/cpu/avr/avr/iotn48.h +++ b/cpukit/score/cpu/avr/avr/iotn48.h @@ -1,38 +1,42 @@ -/* Copyright (c) 2007 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. -*/ - - -/* avr/iotn48.h - definitions for ATtiny48 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotn48.h + * + * @brief Definitions for ATtiny48 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2007 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -42,12 +46,19 @@ # define _AVR_IOXXX_H_ "iotn48.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_IOTN48_H_ #define _AVR_IOTN48_H_ 1 +/** + * @defgroup Avr_iotn48 ATtiny48 Definitons + * + * @ingroup avr + */ +/**@{*/ + /* Registers and associated bit numbers */ #define PINB _SFR_IO8(0x03) @@ -736,7 +747,7 @@ #define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ #define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ #define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ -#define HFUSE_DEFAULT (FUSE_SPIEN) +#define HFUSE_DEFAULT (FUSE_SPIEN) /* Extended Fuse Byte */ #define FUSE_SELFPRGEN (unsigned char)~_BV(0) /* Self Programming Enable */ @@ -752,5 +763,5 @@ #define SIGNATURE_1 0x92 #define SIGNATURE_2 0x09 - +/**@}*/ #endif /* _AVR_IOTN48_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn85.h b/cpukit/score/cpu/avr/avr/iotn85.h index 34cf692eb3..2fa4d3f0b1 100644 --- a/cpukit/score/cpu/avr/avr/iotn85.h +++ b/cpukit/score/cpu/avr/avr/iotn85.h @@ -1,39 +1,52 @@ -/* Copyright (c) 2005, Joerg Wunsch - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn85.h - definitions for ATtiny85 */ +/** + * @file avr/iotn85.h + * + * @brief Definitions for ATtiny85 + */ + +/* + * Copyright (c) 2005, Joerg Wunsch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOTN85_H_ #define _AVR_IOTN85_H_ 1 +/** + * @defgroup Avr_iotn85 ATtiny85 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + #include <avr/iotnx5.h> /* Constants */ @@ -84,5 +97,5 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x0B - +/** @} */ #endif /* _AVR_IOTN85_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn861.h b/cpukit/score/cpu/avr/avr/iotn861.h index 8226d2b254..54c86570c0 100644 --- a/cpukit/score/cpu/avr/avr/iotn861.h +++ b/cpukit/score/cpu/avr/avr/iotn861.h @@ -36,16 +36,24 @@ #include <avr/iotnx61.h> -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE 64 #define RAMEND 0x25F #define XRAMEND RAMEND #define E2END 0x1FF #define E2PAGESIZE 4 #define FLASHEND 0x1FFF +/** @} */ - -/* Fuses */ +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 3 /* Low Fuse Byte */ @@ -57,7 +65,8 @@ #define FUSE_SUT1 (unsigned char)~_BV(5) #define FUSE_CKOUT (unsigned char)~_BV(6) #define FUSE_CKDIV8 (unsigned char)~_BV(7) -#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & \ + FUSE_SUT0 & FUSE_CKDIV8) /* High Fuse Byte */ #define FUSE_BODLEVEL0 (unsigned char)~_BV(0) @@ -73,16 +82,24 @@ /* Extended Fuse Byte */ #define FUSE_SELFPRGEN (unsigned char)~_BV(0) #define EFUSE_DEFAULT (0xFF) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x0D - +/** @} */ #endif /* _AVR_IOTN861_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotn861a.h b/cpukit/score/cpu/avr/avr/iotn861a.h index 0177134bdd..654f0959fd 100644 --- a/cpukit/score/cpu/avr/avr/iotn861a.h +++ b/cpukit/score/cpu/avr/avr/iotn861a.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn861a.h - definitions for ATtiny861A */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotn861a.h + * + * @brief Definitions for ATtiny861A + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn861a.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATtiny861A_H_ #define _AVR_ATtiny861A_H_ 1 +/** + * @defgroup Avr_iotn861a ATtiny861A Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -971,5 +982,5 @@ #define PA0_PIN PINADC #define PA0_BIT ADC0 +/**@}*/ #endif /* _AVR_ATtiny861A_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iotn87.h b/cpukit/score/cpu/avr/avr/iotn87.h index b8affdfa12..099d81c05f 100644 --- a/cpukit/score/cpu/avr/avr/iotn87.h +++ b/cpukit/score/cpu/avr/avr/iotn87.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotn87.h - definitions for ATtiny87 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotn87.h + * + * @brief Definitions for ATtiny87 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn87.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATtiny87_H_ #define _AVR_ATtiny87_H_ 1 +/** + * @defgroup Avr_iotn87 ATtiny87 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Registers and associated bit numbers. */ @@ -841,6 +852,5 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x87 - +/**@}*/ #endif /* _AVR_ATtiny87_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iotn88.h b/cpukit/score/cpu/avr/avr/iotn88.h index 427fc8fd4d..829d13f283 100644 --- a/cpukit/score/cpu/avr/avr/iotn88.h +++ b/cpukit/score/cpu/avr/avr/iotn88.h @@ -1,3 +1,11 @@ +/** + * @file + * + * @brief Definitions for ATtiny88 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2007 Atmel Corporation All rights reserved. @@ -44,6 +52,13 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif +/** + * @defgroup AvrDef_iotn88 ATtiny88 Definitions + * + * @ingroup avr + * + */ +/**@{**/ #ifndef _AVR_IOTN88_H_ #define _AVR_IOTN88_H_ 1 @@ -752,5 +767,6 @@ #define SIGNATURE_1 0x93 #define SIGNATURE_2 0x11 +/** @} */ #endif /* _AVR_IOTN88_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotnx4.h b/cpukit/score/cpu/avr/avr/iotnx4.h index cc1ed9d263..8bb310ba13 100644 --- a/cpukit/score/cpu/avr/avr/iotnx4.h +++ b/cpukit/score/cpu/avr/avr/iotnx4.h @@ -46,8 +46,11 @@ # error "Attempt to include more than one <avr/ioXXX.h> file." #endif -/* I/O registers */ - +/** + * @name I/O Registers + * + */ +/**@{**/ #define PRR _SFR_IO8 (0x00) #define PRTIM1 3 #define PRTIM0 2 @@ -378,9 +381,13 @@ /* 0x3D..0x3E SP [defined in <avr/io.h>] */ /* 0x3F SREG [defined in <avr/io.h>] */ -///--- +/** @} */ -/* Interrupt vectors */ +/** + * @name Interrupt Vectors + * + */ +/**@{**/ /* Interrupt vector 0 is the reset vector. */ /* External Interrupt Request 0 */ #define INT0_vect _VECTOR(1) @@ -452,4 +459,6 @@ #define _VECTORS_SIZE 34 +/** @} */ + #endif /* _AVR_IOTNX4_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotnx5.h b/cpukit/score/cpu/avr/avr/iotnx5.h index 57863b10ae..34edf06e8b 100644 --- a/cpukit/score/cpu/avr/avr/iotnx5.h +++ b/cpukit/score/cpu/avr/avr/iotnx5.h @@ -1,40 +1,52 @@ -/* Copyright (c) 2005, 2007, 2009 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotnx5.h - definitions for ATtiny25, ATtiny45 and ATtiny85 */ +/** + * @file avr/iotnx5.h + * + * @brief Definitions for ATtiny25, ATtiny45 and ATtiny85 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2005, 2007, 2009 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOTNX5_H_ #define _AVR_IOTNX5_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iotnx5 ATtiny25, ATtiny45, ATtiny85 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iotnx5.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* I/O registers */ @@ -107,7 +119,7 @@ #define USITC 0 #define USISR _SFR_IO8(0x0E) -#define USISIF 7 +#define USISIF 7 #define USIOIF 6 #define USIPF 5 #define USIDC 4 @@ -128,7 +140,7 @@ #define ADC2D 4 #define ADC3D 3 #define ADC1D 2 -#define AIN1D 1 +#define AIN1D 1 #define AIN0D 0 #define PCMSK _SFR_IO8(0x15) @@ -412,4 +424,5 @@ #define _VECTORS_SIZE 30 +/**@}*/ #endif /* _AVR_IOTNX5_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iotnx61.h b/cpukit/score/cpu/avr/avr/iotnx61.h index 6a4bd87553..58cba5c493 100644 --- a/cpukit/score/cpu/avr/avr/iotnx61.h +++ b/cpukit/score/cpu/avr/avr/iotnx61.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2006, 2007 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iotnx61.h - definitions for ATtiny261, ATtiny461 and ATtiny861 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @file avr/iotnx61.h + * + * @brief Definitions for ATtiny261, ATtiny461 and ATtiny861 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2006, 2007 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,11 +46,19 @@ # define _AVR_IOXXX_H_ "iotnx61.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_IOTNx61_H_ #define _AVR_IOTNx61_H_ 1 +/** + * @defgroup AvrDef_iotnx61 ATtiny261, ATtiny461, ATtiny861 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Registers and associated bit numbers */ #define TCCR1E _SFR_IO8(0x00) @@ -511,4 +524,5 @@ #define _VECTORS_SIZE 38 +/** @} */ #endif /* _AVR_IOTNx61_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iousb1286.h b/cpukit/score/cpu/avr/avr/iousb1286.h index b245b95b05..5f9411daff 100644 --- a/cpukit/score/cpu/avr/avr/iousb1286.h +++ b/cpukit/score/cpu/avr/avr/iousb1286.h @@ -1,39 +1,51 @@ -/* Copyright (c) 2006 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iousb1286.h - definitions for AT90USB1286 */ +/** + * @file avr/iousb1286.h + * + * @brief Definitions for AT90USB1286 + */ + +/* + * Copyright (c) 2006 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_AT90USB1286_H_ #define _AVR_AT90USB1286_H_ 1 +/** + * @defgroup Avr_iousb1286 AT90USB1286 Definitons + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iousbxx6_7.h> /* Constants */ @@ -81,7 +93,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -89,5 +101,5 @@ #define SIGNATURE_1 0x97 #define SIGNATURE_2 0x82 - +/**@}*/ #endif /* _AVR_AT90USB1286_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iousb1287.h b/cpukit/score/cpu/avr/avr/iousb1287.h index 4a1db39670..f75894bdbc 100644 --- a/cpukit/score/cpu/avr/avr/iousb1287.h +++ b/cpukit/score/cpu/avr/avr/iousb1287.h @@ -1,39 +1,51 @@ -/* Copyright (c) 2006 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iousb1287.h - definitions for AT90USB1287 */ +/** + * @file avr/iousb1287.h + * + * @brief Definitions for AT90USB1287 + */ + +/* + * Copyright (c) 2006 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_AT90USB1287_H_ #define _AVR_AT90USB1287_H_ 1 +/** + * @defgroup Avr_iousb1287 AT90USB1287 Definitions + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iousbxx6_7.h> /* Constants */ @@ -81,7 +93,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -90,4 +102,5 @@ #define SIGNATURE_2 0x82 +/**@}*/ #endif /* _AVR_AT90USB1287_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iousb162.h b/cpukit/score/cpu/avr/avr/iousb162.h index c9094be89d..89709a7279 100644 --- a/cpukit/score/cpu/avr/avr/iousb162.h +++ b/cpukit/score/cpu/avr/avr/iousb162.h @@ -36,16 +36,24 @@ #include <avr/iousbxx2.h> -/* Constants */ +/** + * @name Constants + * + */ +/**@{**/ #define SPM_PAGESIZE 128 #define RAMEND 0x2FF #define XRAMEND RAMEND #define E2END 0x1FF #define E2PAGESIZE 4 #define FLASHEND 0x3FFF +/** @} */ - -/* Fuses */ +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 3 /* Low Fuse Byte */ @@ -76,18 +84,26 @@ #define FUSE_BODLEVEL2 (unsigned char)~_BV(2) #define FUSE_HWBE (unsigned char)~_BV(3) #define EFUSE_DEFAULT (BODLEVEL0 & BODLEVEL1 & HWBE) +/** @} */ - -/* Lock Bits */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ - -/* Signature */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x94 #define SIGNATURE_2 0x82 - +/** @} */ #endif /* _AVR_AT90USB162_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iousb646.h b/cpukit/score/cpu/avr/avr/iousb646.h index d7a1d3a0f1..035cbcd2bc 100644 --- a/cpukit/score/cpu/avr/avr/iousb646.h +++ b/cpukit/score/cpu/avr/avr/iousb646.h @@ -1,39 +1,51 @@ -/* Copyright (c) 2006 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iousb646.h - definitions for AT90USB646 */ +/** + * @file avr/iousb646.h + * + * @brief Definitions for AT90USB646 + */ + +/* + * Copyright (c) 2006 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_AT90USB646_H_ #define _AVR_AT90USB646_H_ 1 +/** + * @defgroup Avr_iousb646 AT90USB646 Definitions + * + * @ingroup avr + */ +/**@{*/ + #include <avr/iousbxx6_7.h> /* Constants */ @@ -81,7 +93,7 @@ /* Lock Bits */ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_BITS_0_EXIST -#define __BOOT_LOCK_BITS_1_EXIST +#define __BOOT_LOCK_BITS_1_EXIST /* Signature */ @@ -90,4 +102,5 @@ #define SIGNATURE_2 0x82 +/**@}*/ #endif /* _AVR_AT90USB646_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iousb647.h b/cpukit/score/cpu/avr/avr/iousb647.h index 3b93048149..2e1288accb 100644 --- a/cpukit/score/cpu/avr/avr/iousb647.h +++ b/cpukit/score/cpu/avr/avr/iousb647.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Definitions for AT90USB647 + */ + /* Copyright (c) 2006 Anatoly Sokolov All rights reserved. @@ -36,6 +42,14 @@ #include <avr/iousbxx6_7.h> +/** + * @defgroup AvrDef_iousb647 AT90USB647 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Constants */ #define SPM_PAGESIZE 256 #define RAMEND 0x10FF @@ -89,5 +103,6 @@ #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x82 +/** @} */ #endif /* _AVR_AT90USB647_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iousb82.h b/cpukit/score/cpu/avr/avr/iousb82.h index 428ed9b566..2d66bd5d70 100644 --- a/cpukit/score/cpu/avr/avr/iousb82.h +++ b/cpukit/score/cpu/avr/avr/iousb82.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Ddefinitions for AT90USB82 + */ + /* Copyright (c) 2007 Anatoly Sokolov All rights reserved. @@ -36,6 +42,14 @@ #include <avr/iousbxx2.h> +/** + * @defgroup AvrDef_iousb82 AT90USB82 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Constants */ #define SPM_PAGESIZE 128 #define RAMEND 0x2FF @@ -83,5 +97,6 @@ #define __BOOT_LOCK_BITS_0_EXIST #define __BOOT_LOCK_BITS_1_EXIST +/** @} */ #endif /* _AVR_AT90USB82_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iousbxx2.h b/cpukit/score/cpu/avr/avr/iousbxx2.h index cf1840c557..3dcbc76262 100644 --- a/cpukit/score/cpu/avr/avr/iousbxx2.h +++ b/cpukit/score/cpu/avr/avr/iousbxx2.h @@ -1,40 +1,53 @@ -/* Copyright (c) 2007 Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* iousbxx2.h - definitions for AT90USB82 and AT90USB162. */ +/** + * @file iousbxx2.h + * + * @brief Definitions for AT90USB82 and AT90USB162 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2007 Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOUSBXX2_H_ #define _AVR_IOUSBXX2_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup AvrDef_iousbxx2 AT90USB82, AT90USB162 Definitions + * + * @ingroup avr + * + */ +/**@{**/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -44,7 +57,7 @@ # define _AVR_IOXXX_H_ "iousbxx2.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif /* Registers and associated bit numbers */ @@ -174,7 +187,7 @@ #define INT4 4 #define INT3 3 #define INT2 2 -#define INT1 1 +#define INT1 1 #define INT0 0 #define GPIOR0 _SFR_IO8(0x1E) @@ -762,4 +775,5 @@ #define _VECTORS_SIZE 116 +/** @} */ #endif /* _AVR_IOUSBXX2_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iousbxx6_7.h b/cpukit/score/cpu/avr/avr/iousbxx6_7.h index ee4fe1e6a2..c923c22c82 100644 --- a/cpukit/score/cpu/avr/avr/iousbxx6_7.h +++ b/cpukit/score/cpu/avr/avr/iousbxx6_7.h @@ -1,41 +1,52 @@ -/* Copyright (c) 2006, Anatoly Sokolov - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* iousbxx6_7.h - definitions for AT90USB646, AT90USB647, AT90USB1286 - and AT90USB1287 */ +/** + * @file iousbxx6_7.h + * + * @brief Definitions for AT90USB646, AT90USB647, AT90USB1286, AT90USB1287 + * + * This file should only be included from <avr/io.h>, never directly. + */ + +/* + * Copyright (c) 2006, Anatoly Sokolov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IOUSBXX6_7_H_ #define _AVR_IOUSBXX6_7_H_ 1 -/* This file should only be included from <avr/io.h>, never directly. */ +/** + * @defgroup Avr_iomxx0_1 AT90USB-646/647/1286/1287 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -45,7 +56,7 @@ # define _AVR_IOXXX_H_ "iousbxx6_7.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) # define __AT90USBxx6__ 1 @@ -283,7 +294,7 @@ #define INT4 4 #define INT3 3 #define INT2 2 -#define INT1 1 +#define INT1 1 #define INT0 0 #define GPIOR0 _SFR_IO8(0x1E) @@ -1281,4 +1292,5 @@ # undef __AT90USBxx7__ #endif /* __AT90USBxx7__ */ +/**@}*/ #endif /* _AVR_IOUSBXX6_7_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iox128a1.h b/cpukit/score/cpu/avr/avr/iox128a1.h index 9feffd4f38..4ce4c47e64 100644 --- a/cpukit/score/cpu/avr/avr/iox128a1.h +++ b/cpukit/score/cpu/avr/avr/iox128a1.h @@ -117,13 +117,11 @@ typedef volatile uint32_t register32_t; }; \ } - -/* -========================================================================== -IO Module Structures -========================================================================== -*/ - +/** + * @name IO Module Structures + * + */ +/**@{**/ /* -------------------------------------------------------------------------- @@ -186,7 +184,8 @@ typedef enum CLK_SCLKSEL_enum CLK_SCLKSEL_RC2M_gc = (0x00<<0), /* Internal 2MHz RC Oscillator */ CLK_SCLKSEL_RC32M_gc = (0x01<<0), /* Internal 32MHz RC Oscillator */ CLK_SCLKSEL_RC32K_gc = (0x02<<0), /* Internal 32kHz RC Oscillator */ - CLK_SCLKSEL_XOSC_gc = (0x03<<0), /* External Crystal Oscillator or Clock */ + /* External Crystal Oscillator or Clock */ + CLK_SCLKSEL_XOSC_gc = (0x03<<0), CLK_SCLKSEL_PLL_gc = (0x04<<0), /* Phase Locked Loop */ } CLK_SCLKSEL_t; @@ -218,9 +217,12 @@ typedef enum CLK_PSBCDIV_enum typedef enum CLK_RTCSRC_enum { CLK_RTCSRC_ULP_gc = (0x00<<1), /* 1kHz from internal 32kHz ULP */ - CLK_RTCSRC_TOSC_gc = (0x01<<1), /* 1kHz from 32kHz crystal oscillator on TOSC */ - CLK_RTCSRC_RCOSC_gc = (0x02<<1), /* 1kHz from internal 32kHz RC oscillator */ - CLK_RTCSRC_TOSC32_gc = (0x05<<1), /* 32kHz from 32kHz crystal oscillator on TOSC */ + /* 1kHz from 32kHz crystal oscillator on TOSC */ + CLK_RTCSRC_TOSC_gc = (0x01<<1), + /* 1kHz from internal 32kHz RC oscillator */ + CLK_RTCSRC_RCOSC_gc = (0x02<<1), + /* 32kHz from 32kHz crystal oscillator on TOSC */ + CLK_RTCSRC_TOSC32_gc = (0x05<<1), } CLK_RTCSRC_t; @@ -259,8 +261,10 @@ typedef struct OSC_struct register8_t CTRL; /* Control Register */ register8_t STATUS; /* Status Register */ register8_t XOSCCTRL; /* External Oscillator Control Register */ - register8_t XOSCFAIL; /* External Oscillator Failure Detection Register */ - register8_t RC32KCAL; /* 32kHz Internal Oscillator Calibration Register */ + /* External Oscillator Failure Detection Register */ + register8_t XOSCFAIL; + /* 32kHz Internal Oscillator Calibration Register */ + register8_t RC32KCAL; register8_t PLLCTRL; /* PLL Control REgister */ register8_t DFLLCTRL; /* DFLL Control Register */ } OSC_t; @@ -484,7 +488,8 @@ typedef enum DMA_CH_SRCRELOAD_enum DMA_CH_SRCRELOAD_NONE_gc = (0x00<<6), /* No reload */ DMA_CH_SRCRELOAD_BLOCK_gc = (0x01<<6), /* Reload at end of block */ DMA_CH_SRCRELOAD_BURST_gc = (0x02<<6), /* Reload at end of burst */ - DMA_CH_SRCRELOAD_TRANSACTION_gc = (0x03<<6), /* Reload at end of transaction */ + /* Reload at end of transaction */ + DMA_CH_SRCRELOAD_TRANSACTION_gc = (0x03<<6), } DMA_CH_SRCRELOAD_t; /* Source addressing mode */ @@ -501,7 +506,8 @@ typedef enum DMA_CH_DESTRELOAD_enum DMA_CH_DESTRELOAD_NONE_gc = (0x00<<2), /* No reload */ DMA_CH_DESTRELOAD_BLOCK_gc = (0x01<<2), /* Reload at end of block */ DMA_CH_DESTRELOAD_BURST_gc = (0x02<<2), /* Reload at end of burst */ - DMA_CH_DESTRELOAD_TRANSACTION_gc = (0x03<<2), /* Reload at end of transaction */ + /* Reload at end of transaction */ + DMA_CH_DESTRELOAD_TRANSACTION_gc = (0x03<<2), } DMA_CH_DESTRELOAD_t; /* Destination adressing mode */ @@ -523,94 +529,142 @@ typedef enum DMA_CH_TRIGSRC_enum DMA_CH_TRIGSRC_ADCA_CH1_gc = (0x11<<0), /* ADCA Channel 1 */ DMA_CH_TRIGSRC_ADCA_CH2_gc = (0x12<<0), /* ADCA Channel 2 */ DMA_CH_TRIGSRC_ADCA_CH3_gc = (0x13<<0), /* ADCA Channel 3 */ - DMA_CH_TRIGSRC_ADCA_CH4_gc = (0x14<<0), /* ADCA Channel 0,1,2,3 combined */ + /* ADCA Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_ADCA_CH4_gc = (0x14<<0), DMA_CH_TRIGSRC_DACA_CH0_gc = (0x15<<0), /* DACA Channel 0 */ DMA_CH_TRIGSRC_DACA_CH1_gc = (0x16<<0), /* DACA Channel 1 */ DMA_CH_TRIGSRC_ADCB_CH0_gc = (0x20<<0), /* ADCB Channel 0 */ DMA_CH_TRIGSRC_ADCB_CH1_gc = (0x21<<0), /* ADCB Channel 1 */ DMA_CH_TRIGSRC_ADCB_CH2_gc = (0x22<<0), /* ADCB Channel 2 */ DMA_CH_TRIGSRC_ADCB_CH3_gc = (0x23<<0), /* ADCB Channel 3 */ - DMA_CH_TRIGSRC_ADCB_CH4_gc = (0x24<<0), /* ADCB Channel 0,1,2,3 combined */ + /* ADCB Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_ADCB_CH4_gc = (0x24<<0), DMA_CH_TRIGSRC_DACB_CH0_gc = (0x25<<0), /* DACB Channel 0 */ DMA_CH_TRIGSRC_DACB_CH1_gc = (0x26<<0), /* DACB Channel 1 */ DMA_CH_TRIGSRC_TCC0_OVF_gc = (0x40<<0), /* Timer/Counter C0 Overflow */ DMA_CH_TRIGSRC_TCC0_ERR_gc = (0x41<<0), /* Timer/Counter C0 Error */ - DMA_CH_TRIGSRC_TCC0_CCA_gc = (0x42<<0), /* Timer/Counter C0 Compare or Capture A */ - DMA_CH_TRIGSRC_TCC0_CCB_gc = (0x43<<0), /* Timer/Counter C0 Compare or Capture B */ - DMA_CH_TRIGSRC_TCC0_CCC_gc = (0x44<<0), /* Timer/Counter C0 Compare or Capture C */ - DMA_CH_TRIGSRC_TCC0_CCD_gc = (0x45<<0), /* Timer/Counter C0 Compare or Capture D */ + /* Timer/Counter C0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC0_CCA_gc = (0x42<<0), + /* Timer/Counter C0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCC0_CCB_gc = (0x43<<0), + /* Timer/Counter C0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCC0_CCC_gc = (0x44<<0), + /* Timer/Counter C0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCC0_CCD_gc = (0x45<<0), DMA_CH_TRIGSRC_TCC1_OVF_gc = (0x46<<0), /* Timer/Counter C1 Overflow */ DMA_CH_TRIGSRC_TCC1_ERR_gc = (0x47<<0), /* Timer/Counter C1 Error */ - DMA_CH_TRIGSRC_TCC1_CCA_gc = (0x48<<0), /* Timer/Counter C1 Compare or Capture A */ - DMA_CH_TRIGSRC_TCC1_CCB_gc = (0x49<<0), /* Timer/Counter C1 Compare or Capture B */ + /* Timer/Counter C1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC1_CCA_gc = (0x48<<0), + /* Timer/Counter C1 Compare or Capture B */ + DMA_CH_TRIGSRC_TCC1_CCB_gc = (0x49<<0), DMA_CH_TRIGSRC_SPIC_gc = (0x4A<<0), /* SPI C Transfer Complete */ - DMA_CH_TRIGSRC_USARTC0_RXC_gc = (0x4B<<0), /* USART C0 Receive Complete */ - DMA_CH_TRIGSRC_USARTC0_DRE_gc = (0x4C<<0), /* USART C0 Data Register Empty */ - DMA_CH_TRIGSRC_USARTC1_RXC_gc = (0x4E<<0), /* USART C1 Receive Complete */ - DMA_CH_TRIGSRC_USARTC1_DRE_gc = (0x4F<<0), /* USART C1 Data Register Empty */ + /* USART C0 Receive Complete */ + DMA_CH_TRIGSRC_USARTC0_RXC_gc = (0x4B<<0), + /* USART C0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTC0_DRE_gc = (0x4C<<0), + /* USART C1 Receive Complete */ + DMA_CH_TRIGSRC_USARTC1_RXC_gc = (0x4E<<0), + /* USART C1 Data Register Empty */ + DMA_CH_TRIGSRC_USARTC1_DRE_gc = (0x4F<<0), DMA_CH_TRIGSRC_TCD0_OVF_gc = (0x60<<0), /* Timer/Counter D0 Overflow */ DMA_CH_TRIGSRC_TCD0_ERR_gc = (0x61<<0), /* Timer/Counter D0 Error */ - DMA_CH_TRIGSRC_TCD0_CCA_gc = (0x62<<0), /* Timer/Counter D0 Compare or Capture A */ - DMA_CH_TRIGSRC_TCD0_CCB_gc = (0x63<<0), /* Timer/Counter D0 Compare or Capture B */ - DMA_CH_TRIGSRC_TCD0_CCC_gc = (0x64<<0), /* Timer/Counter D0 Compare or Capture C */ - DMA_CH_TRIGSRC_TCD0_CCD_gc = (0x65<<0), /* Timer/Counter D0 Compare or Capture D */ + /* Timer/Counter D0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD0_CCA_gc = (0x62<<0), + /* Timer/Counter D0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCD0_CCB_gc = (0x63<<0), + /* Timer/Counter D0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCD0_CCC_gc = (0x64<<0), + /* Timer/Counter D0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCD0_CCD_gc = (0x65<<0), DMA_CH_TRIGSRC_TCD1_OVF_gc = (0x66<<0), /* Timer/Counter D1 Overflow */ DMA_CH_TRIGSRC_TCD1_ERR_gc = (0x67<<0), /* Timer/Counter D1 Error */ - DMA_CH_TRIGSRC_TCD1_CCA_gc = (0x68<<0), /* Timer/Counter D1 Compare or Capture A */ - DMA_CH_TRIGSRC_TCD1_CCB_gc = (0x69<<0), /* Timer/Counter D1 Compare or Capture B */ + /* Timer/Counter D1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD1_CCA_gc = (0x68<<0), + /* Timer/Counter D1 Compare or Capture B */ + DMA_CH_TRIGSRC_TCD1_CCB_gc = (0x69<<0), DMA_CH_TRIGSRC_SPID_gc = (0x6A<<0), /* SPI D Transfer Complete */ - DMA_CH_TRIGSRC_USARTD0_RXC_gc = (0x6B<<0), /* USART D0 Receive Complete */ - DMA_CH_TRIGSRC_USARTD0_DRE_gc = (0x6C<<0), /* USART D0 Data Register Empty */ - DMA_CH_TRIGSRC_USARTD1_RXC_gc = (0x6E<<0), /* USART D1 Receive Complete */ - DMA_CH_TRIGSRC_USARTD1_DRE_gc = (0x6F<<0), /* USART D1 Data Register Empty */ + /* USART D0 Receive Complete */ + DMA_CH_TRIGSRC_USARTD0_RXC_gc = (0x6B<<0), + /* USART D0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTD0_DRE_gc = (0x6C<<0), + /* USART D1 Receive Complete */ + DMA_CH_TRIGSRC_USARTD1_RXC_gc = (0x6E<<0), + /* USART D1 Data Register Empty */ + DMA_CH_TRIGSRC_USARTD1_DRE_gc = (0x6F<<0), DMA_CH_TRIGSRC_TCE0_OVF_gc = (0x80<<0), /* Timer/Counter E0 Overflow */ DMA_CH_TRIGSRC_TCE0_ERR_gc = (0x81<<0), /* Timer/Counter E0 Error */ - DMA_CH_TRIGSRC_TCE0_CCA_gc = (0x82<<0), /* Timer/Counter E0 Compare or Capture A */ - DMA_CH_TRIGSRC_TCE0_CCB_gc = (0x83<<0), /* Timer/Counter E0 Compare or Capture B */ - DMA_CH_TRIGSRC_TCE0_CCC_gc = (0x84<<0), /* Timer/Counter E0 Compare or Capture C */ - DMA_CH_TRIGSRC_TCE0_CCD_gc = (0x85<<0), /* Timer/Counter E0 Compare or Capture D */ + /* Timer/Counter E0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE0_CCA_gc = (0x82<<0), + /* Timer/Counter E0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCE0_CCB_gc = (0x83<<0), + /* Timer/Counter E0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCE0_CCC_gc = (0x84<<0), + /* Timer/Counter E0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCE0_CCD_gc = (0x85<<0), DMA_CH_TRIGSRC_TCE1_OVF_gc = (0x86<<0), /* Timer/Counter E1 Overflow */ DMA_CH_TRIGSRC_TCE1_ERR_gc = (0x87<<0), /* Timer/Counter E1 Error */ - DMA_CH_TRIGSRC_TCE1_CCA_gc = (0x88<<0), /* Timer/Counter E1 Compare or Capture A */ - DMA_CH_TRIGSRC_TCE1_CCB_gc = (0x89<<0), /* Timer/Counter E1 Compare or Capture B */ + /* Timer/Counter E1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE1_CCA_gc = (0x88<<0), + /* Timer/Counter E1 Compare or Capture B */ + DMA_CH_TRIGSRC_TCE1_CCB_gc = (0x89<<0), DMA_CH_TRIGSRC_SPIE_gc = (0x8A<<0), /* SPI E Transfer Complete */ - DMA_CH_TRIGSRC_USARTE0_RXC_gc = (0x8B<<0), /* USART E0 Receive Complete */ - DMA_CH_TRIGSRC_USARTE0_DRE_gc = (0x8C<<0), /* USART E0 Data Register Empty */ - DMA_CH_TRIGSRC_USARTE1_RXC_gc = (0x8E<<0), /* USART E1 Receive Complete */ - DMA_CH_TRIGSRC_USARTE1_DRE_gc = (0x8F<<0), /* USART E1 Data Register Empty */ + /* USART E0 Receive Complete */ + DMA_CH_TRIGSRC_USARTE0_RXC_gc = (0x8B<<0), + /* USART E0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTE0_DRE_gc = (0x8C<<0), + /* USART E1 Receive Complete */ + DMA_CH_TRIGSRC_USARTE1_RXC_gc = (0x8E<<0), + /* USART E1 Data Register Empty */ + DMA_CH_TRIGSRC_USARTE1_DRE_gc = (0x8F<<0), DMA_CH_TRIGSRC_TCF0_OVF_gc = (0xA0<<0), /* Timer/Counter F0 Overflow */ DMA_CH_TRIGSRC_TCF0_ERR_gc = (0xA1<<0), /* Timer/Counter F0 Error */ - DMA_CH_TRIGSRC_TCF0_CCA_gc = (0xA2<<0), /* Timer/Counter F0 Compare or Capture A */ - DMA_CH_TRIGSRC_TCF0_CCB_gc = (0xA3<<0), /* Timer/Counter F0 Compare or Capture B */ - DMA_CH_TRIGSRC_TCF0_CCC_gc = (0xA4<<0), /* Timer/Counter F0 Compare or Capture C */ - DMA_CH_TRIGSRC_TCF0_CCD_gc = (0xA5<<0), /* Timer/Counter F0 Compare or Capture D */ + /* Timer/Counter F0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF0_CCA_gc = (0xA2<<0), + /* Timer/Counter F0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCF0_CCB_gc = (0xA3<<0), + /* Timer/Counter F0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCF0_CCC_gc = (0xA4<<0), + /* Timer/Counter F0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCF0_CCD_gc = (0xA5<<0), DMA_CH_TRIGSRC_TCF1_OVF_gc = (0xA6<<0), /* Timer/Counter F1 Overflow */ DMA_CH_TRIGSRC_TCF1_ERR_gc = (0xA7<<0), /* Timer/Counter F1 Error */ - DMA_CH_TRIGSRC_TCF1_CCA_gc = (0xA8<<0), /* Timer/Counter F1 Compare or Capture A */ - DMA_CH_TRIGSRC_TCF1_CCB_gc = (0xA9<<0), /* Timer/Counter F1 Compare or Capture B */ + /* Timer/Counter F1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF1_CCA_gc = (0xA8<<0), + /* Timer/Counter F1 Compare or Capture B */ + DMA_CH_TRIGSRC_TCF1_CCB_gc = (0xA9<<0), DMA_CH_TRIGSRC_SPIF_gc = (0xAA<<0), /* SPI F Transfer Complete */ - DMA_CH_TRIGSRC_USARTF0_RXC_gc = (0xAB<<0), /* USART F0 Receive Complete */ - DMA_CH_TRIGSRC_USARTF0_DRE_gc = (0xAC<<0), /* USART F0 Data Register Empty */ - DMA_CH_TRIGSRC_USARTF1_RXC_gc = (0xAE<<0), /* USART F1 Receive Complete */ - DMA_CH_TRIGSRC_USARTF1_DRE_gc = (0xAF<<0), /* USART F1 Data Register Empty */ + /* USART F0 Receive Complete */ + DMA_CH_TRIGSRC_USARTF0_RXC_gc = (0xAB<<0), + /* USART F0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTF0_DRE_gc = (0xAC<<0), + /* USART F1 Receive Complete */ + DMA_CH_TRIGSRC_USARTF1_RXC_gc = (0xAE<<0), + /* USART F1 Data Register Empty */ + DMA_CH_TRIGSRC_USARTF1_DRE_gc = (0xAF<<0), } DMA_CH_TRIGSRC_t; /* Double buffering mode */ typedef enum DMA_DBUFMODE_enum { DMA_DBUFMODE_DISABLED_gc = (0x00<<2), /* Double buffering disabled */ - DMA_DBUFMODE_CH01_gc = (0x01<<2), /* Double buffering enabled on channel 0/1 */ - DMA_DBUFMODE_CH23_gc = (0x02<<2), /* Double buffering enabled on channel 2/3 */ - DMA_DBUFMODE_CH01CH23_gc = (0x03<<2), /* Double buffering enabled on ch. 0/1 and ch. 2/3 */ + /* Double buffering enabled on channel 0/1 */ + DMA_DBUFMODE_CH01_gc = (0x01<<2), + /* Double buffering enabled on channel 2/3 */ + DMA_DBUFMODE_CH23_gc = (0x02<<2), + /* Double buffering enabled on ch. 0/1 and ch. 2/3 */ + DMA_DBUFMODE_CH01CH23_gc = (0x03<<2), } DMA_DBUFMODE_t; /* Priority mode */ typedef enum DMA_PRIMODE_enum { DMA_PRIMODE_RR0123_gc = (0x00<<0), /* Round Robin */ - DMA_PRIMODE_CH0RR123_gc = (0x01<<0), /* Channel 0 > Round Robin on channel 1/2/3 */ - DMA_PRIMODE_CH01RR23_gc = (0x02<<0), /* Channel 0 > channel 1 > Round Robin on channel 2/3 */ - DMA_PRIMODE_CH0123_gc = (0x03<<0), /* Channel 0 > channel 1 > channel 2 > channel 3 */ + /* Channel 0 > Round Robin on channel 1/2/3 */ + DMA_PRIMODE_CH0RR123_gc = (0x01<<0), + /* Channel 0 > channel 1 > Round Robin on channel 2/3 */ + DMA_PRIMODE_CH01RR23_gc = (0x02<<0), + /* Channel 0 > channel 1 > channel 2 > channel 3 */ + DMA_PRIMODE_CH0123_gc = (0x03<<0), } DMA_PRIMODE_t; /* Interrupt level */ @@ -761,52 +815,82 @@ typedef enum EVSYS_CHMUX_enum EVSYS_CHMUX_PRESCALER_128_gc = (0x87<<0), /* Prescaler, divide by 128 */ EVSYS_CHMUX_PRESCALER_256_gc = (0x88<<0), /* Prescaler, divide by 256 */ EVSYS_CHMUX_PRESCALER_512_gc = (0x89<<0), /* Prescaler, divide by 512 */ - EVSYS_CHMUX_PRESCALER_1024_gc = (0x8A<<0), /* Prescaler, divide by 1024 */ - EVSYS_CHMUX_PRESCALER_2048_gc = (0x8B<<0), /* Prescaler, divide by 2048 */ - EVSYS_CHMUX_PRESCALER_4096_gc = (0x8C<<0), /* Prescaler, divide by 4096 */ - EVSYS_CHMUX_PRESCALER_8192_gc = (0x8D<<0), /* Prescaler, divide by 8192 */ - EVSYS_CHMUX_PRESCALER_16384_gc = (0x8E<<0), /* Prescaler, divide by 16384 */ - EVSYS_CHMUX_PRESCALER_32768_gc = (0x8F<<0), /* Prescaler, divide by 32768 */ + /* Prescaler, divide by 1024 */ + EVSYS_CHMUX_PRESCALER_1024_gc = (0x8A<<0), + /* Prescaler, divide by 2048 */ + EVSYS_CHMUX_PRESCALER_2048_gc = (0x8B<<0), + /* Prescaler, divide by 4096 */ + EVSYS_CHMUX_PRESCALER_4096_gc = (0x8C<<0), + /* Prescaler, divide by 8192 */ + EVSYS_CHMUX_PRESCALER_8192_gc = (0x8D<<0), + /* Prescaler, divide by 16384 */ + EVSYS_CHMUX_PRESCALER_16384_gc = (0x8E<<0), + /* Prescaler, divide by 32768 */ + EVSYS_CHMUX_PRESCALER_32768_gc = (0x8F<<0), EVSYS_CHMUX_TCC0_OVF_gc = (0xC0<<0), /* Timer/Counter C0 Overflow */ EVSYS_CHMUX_TCC0_ERR_gc = (0xC1<<0), /* Timer/Counter C0 Error */ - EVSYS_CHMUX_TCC0_CCA_gc = (0xC4<<0), /* Timer/Counter C0 Compare or Capture A */ - EVSYS_CHMUX_TCC0_CCB_gc = (0xC5<<0), /* Timer/Counter C0 Compare or Capture B */ - EVSYS_CHMUX_TCC0_CCC_gc = (0xC6<<0), /* Timer/Counter C0 Compare or Capture C */ - EVSYS_CHMUX_TCC0_CCD_gc = (0xC7<<0), /* Timer/Counter C0 Compare or Capture D */ + /* Timer/Counter C0 Compare or Capture A */ + EVSYS_CHMUX_TCC0_CCA_gc = (0xC4<<0), + /* Timer/Counter C0 Compare or Capture B */ + EVSYS_CHMUX_TCC0_CCB_gc = (0xC5<<0), + /* Timer/Counter C0 Compare or Capture C */ + EVSYS_CHMUX_TCC0_CCC_gc = (0xC6<<0), + /* Timer/Counter C0 Compare or Capture D */ + EVSYS_CHMUX_TCC0_CCD_gc = (0xC7<<0), EVSYS_CHMUX_TCC1_OVF_gc = (0xC8<<0), /* Timer/Counter C1 Overflow */ EVSYS_CHMUX_TCC1_ERR_gc = (0xC9<<0), /* Timer/Counter C1 Error */ - EVSYS_CHMUX_TCC1_CCA_gc = (0xCC<<0), /* Timer/Counter C1 Compare or Capture A */ - EVSYS_CHMUX_TCC1_CCB_gc = (0xCD<<0), /* Timer/Counter C1 Compare or Capture B */ + /* Timer/Counter C1 Compare or Capture A */ + EVSYS_CHMUX_TCC1_CCA_gc = (0xCC<<0), + /* Timer/Counter C1 Compare or Capture B */ + EVSYS_CHMUX_TCC1_CCB_gc = (0xCD<<0), EVSYS_CHMUX_TCD0_OVF_gc = (0xD0<<0), /* Timer/Counter D0 Overflow */ EVSYS_CHMUX_TCD0_ERR_gc = (0xD1<<0), /* Timer/Counter D0 Error */ - EVSYS_CHMUX_TCD0_CCA_gc = (0xD4<<0), /* Timer/Counter D0 Compare or Capture A */ - EVSYS_CHMUX_TCD0_CCB_gc = (0xD5<<0), /* Timer/Counter D0 Compare or Capture B */ - EVSYS_CHMUX_TCD0_CCC_gc = (0xD6<<0), /* Timer/Counter D0 Compare or Capture C */ - EVSYS_CHMUX_TCD0_CCD_gc = (0xD7<<0), /* Timer/Counter D0 Compare or Capture D */ + /* Timer/Counter D0 Compare or Capture A */ + EVSYS_CHMUX_TCD0_CCA_gc = (0xD4<<0), + /* Timer/Counter D0 Compare or Capture B */ + EVSYS_CHMUX_TCD0_CCB_gc = (0xD5<<0), + /* Timer/Counter D0 Compare or Capture C */ + EVSYS_CHMUX_TCD0_CCC_gc = (0xD6<<0), + /* Timer/Counter D0 Compare or Capture D */ + EVSYS_CHMUX_TCD0_CCD_gc = (0xD7<<0), EVSYS_CHMUX_TCD1_OVF_gc = (0xD8<<0), /* Timer/Counter D1 Overflow */ EVSYS_CHMUX_TCD1_ERR_gc = (0xD9<<0), /* Timer/Counter D1 Error */ - EVSYS_CHMUX_TCD1_CCA_gc = (0xDC<<0), /* Timer/Counter D1 Compare or Capture A */ - EVSYS_CHMUX_TCD1_CCB_gc = (0xDD<<0), /* Timer/Counter D1 Compare or Capture B */ + /* Timer/Counter D1 Compare or Capture A */ + EVSYS_CHMUX_TCD1_CCA_gc = (0xDC<<0), + /* Timer/Counter D1 Compare or Capture B */ + EVSYS_CHMUX_TCD1_CCB_gc = (0xDD<<0), EVSYS_CHMUX_TCE0_OVF_gc = (0xE0<<0), /* Timer/Counter E0 Overflow */ EVSYS_CHMUX_TCE0_ERR_gc = (0xE1<<0), /* Timer/Counter E0 Error */ - EVSYS_CHMUX_TCE0_CCA_gc = (0xE4<<0), /* Timer/Counter E0 Compare or Capture A */ - EVSYS_CHMUX_TCE0_CCB_gc = (0xE5<<0), /* Timer/Counter E0 Compare or Capture B */ - EVSYS_CHMUX_TCE0_CCC_gc = (0xE6<<0), /* Timer/Counter E0 Compare or Capture C */ - EVSYS_CHMUX_TCE0_CCD_gc = (0xE7<<0), /* Timer/Counter E0 Compare or Capture D */ + /* Timer/Counter E0 Compare or Capture A */ + EVSYS_CHMUX_TCE0_CCA_gc = (0xE4<<0), + /* Timer/Counter E0 Compare or Capture B */ + EVSYS_CHMUX_TCE0_CCB_gc = (0xE5<<0), + /* Timer/Counter E0 Compare or Capture C */ + EVSYS_CHMUX_TCE0_CCC_gc = (0xE6<<0), + /* Timer/Counter E0 Compare or Capture D */ + EVSYS_CHMUX_TCE0_CCD_gc = (0xE7<<0), EVSYS_CHMUX_TCE1_OVF_gc = (0xE8<<0), /* Timer/Counter E1 Overflow */ EVSYS_CHMUX_TCE1_ERR_gc = (0xE9<<0), /* Timer/Counter E1 Error */ - EVSYS_CHMUX_TCE1_CCA_gc = (0xEC<<0), /* Timer/Counter E1 Compare or Capture A */ - EVSYS_CHMUX_TCE1_CCB_gc = (0xED<<0), /* Timer/Counter E1 Compare or Capture B */ + /* Timer/Counter E1 Compare or Capture A */ + EVSYS_CHMUX_TCE1_CCA_gc = (0xEC<<0), + /* Timer/Counter E1 Compare or Capture B */ + EVSYS_CHMUX_TCE1_CCB_gc = (0xED<<0), EVSYS_CHMUX_TCF0_OVF_gc = (0xF0<<0), /* Timer/Counter F0 Overflow */ EVSYS_CHMUX_TCF0_ERR_gc = (0xF1<<0), /* Timer/Counter F0 Error */ - EVSYS_CHMUX_TCF0_CCA_gc = (0xF4<<0), /* Timer/Counter F0 Compare or Capture A */ - EVSYS_CHMUX_TCF0_CCB_gc = (0xF5<<0), /* Timer/Counter F0 Compare or Capture B */ - EVSYS_CHMUX_TCF0_CCC_gc = (0xF6<<0), /* Timer/Counter F0 Compare or Capture C */ - EVSYS_CHMUX_TCF0_CCD_gc = (0xF7<<0), /* Timer/Counter F0 Compare or Capture D */ + /* Timer/Counter F0 Compare or Capture A */ + EVSYS_CHMUX_TCF0_CCA_gc = (0xF4<<0), + /* Timer/Counter F0 Compare or Capture B */ + EVSYS_CHMUX_TCF0_CCB_gc = (0xF5<<0), + /* Timer/Counter F0 Compare or Capture C */ + EVSYS_CHMUX_TCF0_CCC_gc = (0xF6<<0), + /* Timer/Counter F0 Compare or Capture D */ + EVSYS_CHMUX_TCF0_CCD_gc = (0xF7<<0), EVSYS_CHMUX_TCF1_OVF_gc = (0xF8<<0), /* Timer/Counter F1 Overflow */ EVSYS_CHMUX_TCF1_ERR_gc = (0xF9<<0), /* Timer/Counter F1 Error */ - EVSYS_CHMUX_TCF1_CCA_gc = (0xFC<<0), /* Timer/Counter F1 Compare or Capture A */ - EVSYS_CHMUX_TCF1_CCB_gc = (0xFD<<0), /* Timer/Counter F1 Compare or Capture B */ + /* Timer/Counter F1 Compare or Capture A */ + EVSYS_CHMUX_TCF1_CCA_gc = (0xFC<<0), + /* Timer/Counter F1 Compare or Capture B */ + EVSYS_CHMUX_TCF1_CCB_gc = (0xFD<<0), } EVSYS_CHMUX_t; @@ -953,20 +1037,27 @@ typedef enum NVM_CMD_enum NVM_CMD_ERASE_USER_SIG_ROW_gc = (0x18<<0), /* Erase user signature row */ NVM_CMD_WRITE_USER_SIG_ROW_gc = (0x1A<<0), /* Write user signature row */ NVM_CMD_ERASE_APP_gc = (0x20<<0), /* Erase Application Section */ - NVM_CMD_ERASE_APP_PAGE_gc = (0x22<<0), /* Erase Application Section page */ + /* Erase Application Section page */ + NVM_CMD_ERASE_APP_PAGE_gc = (0x22<<0), NVM_CMD_LOAD_FLASH_BUFFER_gc = (0x23<<0), /* Load Flash page buffer */ - NVM_CMD_WRITE_APP_PAGE_gc = (0x24<<0), /* Write Application Section page */ - NVM_CMD_ERASE_WRITE_APP_PAGE_gc = (0x25<<0), /* Erase-and-write Application Section page */ - NVM_CMD_ERASE_FLASH_BUFFER_gc = (0x26<<0), /* Erase/flush Flash page buffer */ + /* Write Application Section page */ + NVM_CMD_WRITE_APP_PAGE_gc = (0x24<<0), + /* Erase-and-write Application Section page */ + NVM_CMD_ERASE_WRITE_APP_PAGE_gc = (0x25<<0), + /* Erase/flush Flash page buffer */ + NVM_CMD_ERASE_FLASH_BUFFER_gc = (0x26<<0), NVM_CMD_ERASE_BOOT_PAGE_gc = (0x2A<<0), /* Erase Boot Section page */ NVM_CMD_WRITE_BOOT_PAGE_gc = (0x2C<<0), /* Write Boot Section page */ - NVM_CMD_ERASE_WRITE_BOOT_PAGE_gc = (0x2D<<0), /* Erase-and-write Boot Section page */ + /* Erase-and-write Boot Section page */ + NVM_CMD_ERASE_WRITE_BOOT_PAGE_gc = (0x2D<<0), NVM_CMD_ERASE_EEPROM_gc = (0x30<<0), /* Erase EEPROM */ NVM_CMD_ERASE_EEPROM_PAGE_gc = (0x32<<0), /* Erase EEPROM page */ NVM_CMD_LOAD_EEPROM_BUFFER_gc = (0x33<<0), /* Load EEPROM page buffer */ NVM_CMD_WRITE_EEPROM_PAGE_gc = (0x34<<0), /* Write EEPROM page */ - NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc = (0x35<<0), /* Erase-and-write EEPROM page */ - NVM_CMD_ERASE_EEPROM_BUFFER_gc = (0x36<<0), /* Erase/flush EEPROM page buffer */ + /* Erase-and-write EEPROM page */ + NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc = (0x35<<0), + /* Erase/flush EEPROM page buffer */ + NVM_CMD_ERASE_EEPROM_BUFFER_gc = (0x36<<0), NVM_CMD_APP_CRC_gc = (0x38<<0), /* Generate Application section CRC */ NVM_CMD_BOOT_CRC_gc = (0x39<<0), /* Generate Boot Section CRC */ NVM_CMD_FLASH_RANGE_CRC_gc = (0x3A<<0), /* Generate Flash Range CRC */ @@ -1272,9 +1363,11 @@ typedef enum ADC_CH_MUXNEG_enum typedef enum ADC_CH_INPUTMODE_enum { ADC_CH_INPUTMODE_INTERNAL_gc = (0x00<<0), /* Internal inputs, no gain */ - ADC_CH_INPUTMODE_SINGLEENDED_gc = (0x01<<0), /* Single-ended input, no gain */ + /* Single-ended input, no gain */ + ADC_CH_INPUTMODE_SINGLEENDED_gc = (0x01<<0), ADC_CH_INPUTMODE_DIFF_gc = (0x02<<0), /* Differential input, no gain */ - ADC_CH_INPUTMODE_DIFFWGAIN_gc = (0x03<<0), /* Differential input, with gain */ + /* Differential input, with gain */ + ADC_CH_INPUTMODE_DIFFWGAIN_gc = (0x03<<0), } ADC_CH_INPUTMODE_t; /* Gain factor */ @@ -1294,7 +1387,8 @@ typedef enum ADC_RESOLUTION_enum { ADC_RESOLUTION_12BIT_gc = (0x00<<1), /* 12-bit right-adjusted result */ ADC_RESOLUTION_8BIT_gc = (0x02<<1), /* 8-bit right-adjusted result */ - ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), /* 12-bit left-adjusted result */ + /* 12-bit left-adjusted result */ + ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), } ADC_RESOLUTION_t; /* Voltage reference selection */ @@ -1334,18 +1428,23 @@ typedef enum ADC_EVACT_enum ADC_EVACT_NONE_gc = (0x00<<0), /* No event action */ ADC_EVACT_CH0_gc = (0x01<<0), /* First event triggers channel 0 */ ADC_EVACT_CH01_gc = (0x02<<0), /* First two events trigger channel 0,1 */ - ADC_EVACT_CH012_gc = (0x03<<0), /* First three events trigger channel 0,1,2 */ + /* First three events trigger channel 0,1,2 */ + ADC_EVACT_CH012_gc = (0x03<<0), ADC_EVACT_CH0123_gc = (0x04<<0), /* Events trigger channel 0,1,2,3 */ ADC_EVACT_SWEEP_gc = (0x05<<0), /* First event triggers sweep */ - ADC_EVACT_SYNCHSWEEP_gc = (0x06<<0), /* First event triggers synchronized sweep */ + /* First event triggers synchronized sweep */ + ADC_EVACT_SYNCHSWEEP_gc = (0x06<<0), } ADC_EVACT_t; /* Interupt mode */ typedef enum ADC_CH_INTMODE_enum { - ADC_CH_INTMODE_COMPLETE_gc = (0x00<<2), /* Interrupt on conversion complete */ - ADC_CH_INTMODE_BELOW_gc = (0x01<<2), /* Interrupt on result below compare value */ - ADC_CH_INTMODE_ABOVE_gc = (0x03<<2), /* Interrupt on result above compare value */ + /* Interrupt on conversion complete */ + ADC_CH_INTMODE_COMPLETE_gc = (0x00<<2), + /* Interrupt on result below compare value */ + ADC_CH_INTMODE_BELOW_gc = (0x01<<2), + /* Interrupt on result above compare value */ + ADC_CH_INTMODE_ABOVE_gc = (0x03<<2), } ADC_CH_INTMODE_t; /* Interrupt level */ @@ -1420,8 +1519,10 @@ typedef struct DAC_struct /* Output channel selection */ typedef enum DAC_CHSEL_enum { - DAC_CHSEL_SINGLE_gc = (0x00<<5), /* Single channel operation (Channel A only) */ - DAC_CHSEL_DUAL_gc = (0x02<<5), /* Dual channel operation (S/H on both channels) */ + /* Single channel operation (Channel A only) */ + DAC_CHSEL_SINGLE_gc = (0x00<<5), + /* Dual channel operation (S/H on both channels) */ + DAC_CHSEL_DUAL_gc = (0x02<<5), } DAC_CHSEL_t; /* Reference voltage selection */ @@ -1429,8 +1530,10 @@ typedef enum DAC_REFSEL_enum { DAC_REFSEL_INT1V_gc = (0x00<<3), /* Internal 1V */ DAC_REFSEL_AVCC_gc = (0x01<<3), /* Analog supply voltage */ - DAC_REFSEL_AREFA_gc = (0x02<<3), /* External reference on AREF on PORTA */ - DAC_REFSEL_AREFB_gc = (0x03<<3), /* External reference on AREF on PORTB */ + /* External reference on AREF on PORTA */ + DAC_REFSEL_AREFA_gc = (0x02<<3), + /* External reference on AREF on PORTB */ + DAC_REFSEL_AREFB_gc = (0x03<<3), } DAC_REFSEL_t; /* Event channel selection */ @@ -1810,7 +1913,8 @@ typedef enum TWI_MASTER_TIMEOUT_enum typedef enum TWI_MASTER_CMD_enum { TWI_MASTER_CMD_NOACT_gc = (0x00<<0), /* No Action */ - TWI_MASTER_CMD_REPSTART_gc = (0x01<<0), /* Issue Repeated Start Condition */ + /* Issue Repeated Start Condition */ + TWI_MASTER_CMD_REPSTART_gc = (0x01<<0), TWI_MASTER_CMD_RECVTRANS_gc = (0x02<<0), /* Receive or Transmit Data */ TWI_MASTER_CMD_STOP_gc = (0x03<<0), /* Issue Stop Condition */ } TWI_MASTER_CMD_t; @@ -1820,7 +1924,8 @@ typedef enum TWI_MASTER_BUSSTATE_enum { TWI_MASTER_BUSSTATE_UNKNOWN_gc = (0x00<<0), /* Unknown Bus State */ TWI_MASTER_BUSSTATE_IDLE_gc = (0x01<<0), /* Bus is Idle */ - TWI_MASTER_BUSSTATE_OWNER_gc = (0x02<<0), /* This Module Controls The Bus */ + /* This Module Controls The Bus */ + TWI_MASTER_BUSSTATE_OWNER_gc = (0x02<<0), TWI_MASTER_BUSSTATE_BUSY_gc = (0x03<<0), /* The Bus is Busy */ } TWI_MASTER_BUSSTATE_t; @@ -1837,8 +1942,10 @@ typedef enum TWI_SLAVE_INTLVL_enum typedef enum TWI_SLAVE_CMD_enum { TWI_SLAVE_CMD_NOACT_gc = (0x00<<0), /* No Action */ - TWI_SLAVE_CMD_COMPTRANS_gc = (0x02<<0), /* Used To Complete a Transaction */ - TWI_SLAVE_CMD_RESPONSE_gc = (0x03<<0), /* Used in Response to Address/Data Interrupt */ + /* Used To Complete a Transaction */ + TWI_SLAVE_CMD_COMPTRANS_gc = (0x02<<0), + /* Used in Response to Address/Data Interrupt */ + TWI_SLAVE_CMD_RESPONSE_gc = (0x03<<0), } TWI_SLAVE_CMD_t; @@ -2005,9 +2112,12 @@ typedef enum PORTCFG_CLKOUT_enum typedef enum PORTCFG_EVOUT_enum { PORTCFG_EVOUT_OFF_gc = (0x00<<4), /* Event Output Disabled */ - PORTCFG_EVOUT_PC7_gc = (0x01<<4), /* Event Channel 7 Output on Port C pin 7 */ - PORTCFG_EVOUT_PD7_gc = (0x02<<4), /* Event Channel 7 Output on Port D pin 7 */ - PORTCFG_EVOUT_PE7_gc = (0x03<<4), /* Event Channel 7 Output on Port E pin 7 */ + /* Event Channel 7 Output on Port C pin 7 */ + PORTCFG_EVOUT_PC7_gc = (0x01<<4), + /* Event Channel 7 Output on Port D pin 7 */ + PORTCFG_EVOUT_PD7_gc = (0x02<<4), + /* Event Channel 7 Output on Port E pin 7 */ + PORTCFG_EVOUT_PE7_gc = (0x03<<4), } PORTCFG_EVOUT_t; /* Port Interrupt 0 Level */ @@ -2032,7 +2142,8 @@ typedef enum PORT_INT1LVL_enum typedef enum PORT_OPC_enum { PORT_OPC_TOTEM_gc = (0x00<<3), /* Totempole */ - PORT_OPC_BUSKEEPER_gc = (0x01<<3), /* Totempole w/ Bus keeper on Input and Output */ + /* Totempole w/ Bus keeper on Input and Output */ + PORT_OPC_BUSKEEPER_gc = (0x01<<3), PORT_OPC_PULLDOWN_gc = (0x02<<3), /* Totempole w/ Pull-down on Input */ PORT_OPC_PULLUP_gc = (0x03<<3), /* Totempole w/ Pull-up on Input */ PORT_OPC_WIREDOR_gc = (0x04<<3), /* Wired OR */ @@ -2244,7 +2355,8 @@ typedef enum TC_WGMODE_enum TC_WGMODE_FRQ_gc = (0x01<<0), /* Frequency Generation Mode */ TC_WGMODE_SS_gc = (0x03<<0), /* Single Slope */ TC_WGMODE_DS_T_gc = (0x05<<0), /* Dual Slope, Update on TOP */ - TC_WGMODE_DS_TB_gc = (0x06<<0), /* Dual Slope, Update on TOP and BOTTOM */ + /* Dual Slope, Update on TOP and BOTTOM */ + TC_WGMODE_DS_TB_gc = (0x06<<0), TC_WGMODE_DS_B_gc = (0x07<<0), /* Dual Slope, Update on BOTTOM */ } TC_WGMODE_t; @@ -2349,9 +2461,12 @@ typedef enum AWEX_FDACT_enum typedef enum HIRES_HREN_enum { HIRES_HREN_NONE_gc = (0x00<<0), /* No Fault Protection */ - HIRES_HREN_TC0_gc = (0x01<<0), /* Enable High Resolution on Timer/Counter 0 */ - HIRES_HREN_TC1_gc = (0x02<<0), /* Enable High Resolution on Timer/Counter 1 */ - HIRES_HREN_BOTH_gc = (0x03<<0), /* Enable High Resolution both Timer/Counters */ + /* Enable High Resolution on Timer/Counter 0 */ + HIRES_HREN_TC0_gc = (0x01<<0), + /* Enable High Resolution on Timer/Counter 1 */ + HIRES_HREN_TC1_gc = (0x02<<0), + /* Enable High Resolution both Timer/Counters */ + HIRES_HREN_BOTH_gc = (0x03<<0), } HIRES_HREN_t; @@ -2482,7 +2597,8 @@ IRCOM - IR Communication Module typedef struct IRCOM_struct { register8_t CTRL; /* Control Register */ - register8_t TXPLCTRL; /* IrDA Transmitter Pulse Length Control Register */ + /* IrDA Transmitter Pulse Length Control Register */ + register8_t TXPLCTRL; register8_t RXPLCTRL; /* IrDA Receiver Pulse Length Control Register */ } IRCOM_t; @@ -2525,15 +2641,13 @@ typedef enum AES_INTLVL_enum AES_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ AES_INTLVL_HI_gc = (0x03<<0), /* High Level */ } AES_INTLVL_t; +/** @} */ - - -/* -========================================================================== -IO Module Instances. Mapped to memory. -========================================================================== -*/ - +/** + * @name IO Module Instances. Mapped to Memory + * + */ +/**@{**/ #define GPIO (*(GPIO_t *) 0x0000) /* General Purpose IO Registers */ #define VPORT0 (*(VPORT_t *) 0x0010) /* Virtual Port 0 */ #define VPORT1 (*(VPORT_t *) 0x0014) /* Virtual Port 1 */ @@ -2583,35 +2697,47 @@ IO Module Instances. Mapped to memory. #define TCC1 (*(TC1_t *) 0x0840) /* Timer/Counter C1 */ #define AWEXC (*(AWEX_t *) 0x0880) /* Advanced Waveform Extension C */ #define HIRESC (*(HIRES_t *) 0x0890) /* High-Resolution Extension C */ -#define USARTC0 (*(USART_t *) 0x08A0) /* Universal Asynchronous Receiver-Transmitter C0 */ -#define USARTC1 (*(USART_t *) 0x08B0) /* Universal Asynchronous Receiver-Transmitter C1 */ +/* Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC0 (*(USART_t *) 0x08A0) +/* Universal Asynchronous Receiver-Transmitter C1 */ +#define USARTC1 (*(USART_t *) 0x08B0) #define SPIC (*(SPI_t *) 0x08C0) /* Serial Peripheral Interface C */ #define IRCOM (*(IRCOM_t *) 0x08F8) /* IR Communication Module */ #define TCD0 (*(TC0_t *) 0x0900) /* Timer/Counter D0 */ #define TCD1 (*(TC1_t *) 0x0940) /* Timer/Counter D1 */ #define HIRESD (*(HIRES_t *) 0x0990) /* High-Resolution Extension D */ -#define USARTD0 (*(USART_t *) 0x09A0) /* Universal Asynchronous Receiver-Transmitter D0 */ -#define USARTD1 (*(USART_t *) 0x09B0) /* Universal Asynchronous Receiver-Transmitter D1 */ +/* Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD0 (*(USART_t *) 0x09A0) +/* Universal Asynchronous Receiver-Transmitter D1 */ +#define USARTD1 (*(USART_t *) 0x09B0) #define SPID (*(SPI_t *) 0x09C0) /* Serial Peripheral Interface D */ #define TCE0 (*(TC0_t *) 0x0A00) /* Timer/Counter E0 */ #define TCE1 (*(TC1_t *) 0x0A40) /* Timer/Counter E1 */ #define AWEXE (*(AWEX_t *) 0x0A80) /* Advanced Waveform Extension E */ #define HIRESE (*(HIRES_t *) 0x0A90) /* High-Resolution Extension E */ -#define USARTE0 (*(USART_t *) 0x0AA0) /* Universal Asynchronous Receiver-Transmitter E0 */ -#define USARTE1 (*(USART_t *) 0x0AB0) /* Universal Asynchronous Receiver-Transmitter E1 */ +/* Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE0 (*(USART_t *) 0x0AA0) +/* Universal Asynchronous Receiver-Transmitter E1 */ +#define USARTE1 (*(USART_t *) 0x0AB0) #define SPIE (*(SPI_t *) 0x0AC0) /* Serial Peripheral Interface E */ #define TCF0 (*(TC0_t *) 0x0B00) /* Timer/Counter F0 */ #define TCF1 (*(TC1_t *) 0x0B40) /* Timer/Counter F1 */ #define HIRESF (*(HIRES_t *) 0x0B90) /* High-Resolution Extension F */ -#define USARTF0 (*(USART_t *) 0x0BA0) /* Universal Asynchronous Receiver-Transmitter F0 */ -#define USARTF1 (*(USART_t *) 0x0BB0) /* Universal Asynchronous Receiver-Transmitter F1 */ +/* Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF0 (*(USART_t *) 0x0BA0) +/* Universal Asynchronous Receiver-Transmitter F1 */ +#define USARTF1 (*(USART_t *) 0x0BB0) #define SPIF (*(SPI_t *) 0x0BC0) /* Serial Peripheral Interface F */ #endif /* !defined (__ASSEMBLER__) */ +/** @} */ - -/* ========== Flattened fully qualified IO register names ========== */ +/** + * @name Flattened Fully Qualified IO Register Names + * + */ +/**@{**/ /* GPIO - General Purpose IO Registers */ #define GPIO_GPIO0 _SFR_MEM8(0x0000) @@ -3629,11 +3755,13 @@ IO Module Instances. Mapped to memory. #define SPIF_INTCTRL _SFR_MEM8(0x0BC1) #define SPIF_STATUS _SFR_MEM8(0x0BC2) #define SPIF_DATA _SFR_MEM8(0x0BC3) +/** @} */ - - -/*================== Bitfield Definitions ================== */ - +/** + * @name Bitfield Definitions + * + */ +/**@{**/ /* XOCD - On-Chip Debug System */ /* OCD.OCDR1 bit masks and bit positions */ #define OCD_OCDRD_bm 0x01 /* OCDR Dirty bit mask. */ @@ -3714,12 +3842,18 @@ IO Module Instances. Mapped to memory. #define CLK_PSADIV4_bm (1<<6) /* Prescaler A Division Factor bit 4 mask. */ #define CLK_PSADIV4_bp 6 /* Prescaler A Division Factor bit 4 position. */ -#define CLK_PSBCDIV_gm 0x03 /* Prescaler B and C Division factor group mask. */ -#define CLK_PSBCDIV_gp 0 /* Prescaler B and C Division factor group position. */ -#define CLK_PSBCDIV0_bm (1<<0) /* Prescaler B and C Division factor bit 0 mask. */ -#define CLK_PSBCDIV0_bp 0 /* Prescaler B and C Division factor bit 0 position. */ -#define CLK_PSBCDIV1_bm (1<<1) /* Prescaler B and C Division factor bit 1 mask. */ -#define CLK_PSBCDIV1_bp 1 /* Prescaler B and C Division factor bit 1 position. */ +/* Prescaler B and C Division factor group mask. */ +#define CLK_PSBCDIV_gm 0x03 +/* Prescaler B and C Division factor group position. */ +#define CLK_PSBCDIV_gp 0 +/* Prescaler B and C Division factor bit 0 mask. */ +#define CLK_PSBCDIV0_bm (1<<0) +/* Prescaler B and C Division factor bit 0 position. */ +#define CLK_PSBCDIV0_bp 0 +/* Prescaler B and C Division factor bit 1 mask. */ +#define CLK_PSBCDIV1_bm (1<<1) +/* Prescaler B and C Division factor bit 1 position. */ +#define CLK_PSBCDIV1_bp 1 /* CLK.LOCK bit masks and bit positions */ @@ -3895,14 +4029,20 @@ IO Module Instances. Mapped to memory. #define OSC_XOSCEN_bm 0x08 /* External Oscillator Enable bit mask. */ #define OSC_XOSCEN_bp 3 /* External Oscillator Enable bit position. */ -#define OSC_RC32KEN_bm 0x04 /* Internal 32kHz RC Oscillator Enable bit mask. */ -#define OSC_RC32KEN_bp 2 /* Internal 32kHz RC Oscillator Enable bit position. */ +/* Internal 32kHz RC Oscillator Enable bit mask. */ +#define OSC_RC32KEN_bm 0x04 +/* Internal 32kHz RC Oscillator Enable bit position. */ +#define OSC_RC32KEN_bp 2 -#define OSC_RC32MEN_bm 0x02 /* Internal 32MHz RC Oscillator Enable bit mask. */ -#define OSC_RC32MEN_bp 1 /* Internal 32MHz RC Oscillator Enable bit position. */ +/* Internal 32MHz RC Oscillator Enable bit mask. */ +#define OSC_RC32MEN_bm 0x02 +/* Internal 32MHz RC Oscillator Enable bit position. */ +#define OSC_RC32MEN_bp 1 -#define OSC_RC2MEN_bm 0x01 /* Internal 2MHz RC Oscillator Enable bit mask. */ -#define OSC_RC2MEN_bp 0 /* Internal 2MHz RC Oscillator Enable bit position. */ +/* Internal 2MHz RC Oscillator Enable bit mask. */ +#define OSC_RC2MEN_bm 0x01 +/* Internal 2MHz RC Oscillator Enable bit position. */ +#define OSC_RC2MEN_bp 0 /* OSC.STATUS bit masks and bit positions */ @@ -3912,14 +4052,20 @@ IO Module Instances. Mapped to memory. #define OSC_XOSCRDY_bm 0x08 /* External Oscillator Ready bit mask. */ #define OSC_XOSCRDY_bp 3 /* External Oscillator Ready bit position. */ -#define OSC_RC32KRDY_bm 0x04 /* Internal 32kHz RC Oscillator Ready bit mask. */ -#define OSC_RC32KRDY_bp 2 /* Internal 32kHz RC Oscillator Ready bit position. */ +/* Internal 32kHz RC Oscillator Ready bit mask. */ +#define OSC_RC32KRDY_bm 0x04 +/* Internal 32kHz RC Oscillator Ready bit position. */ +#define OSC_RC32KRDY_bp 2 -#define OSC_RC32MRDY_bm 0x02 /* Internal 32MHz RC Oscillator Ready bit mask. */ -#define OSC_RC32MRDY_bp 1 /* Internal 32MHz RC Oscillator Ready bit position. */ +/* Internal 32MHz RC Oscillator Ready bit mask. */ +#define OSC_RC32MRDY_bm 0x02 +/* Internal 32MHz RC Oscillator Ready bit position. */ +#define OSC_RC32MRDY_bp 1 -#define OSC_RC2MRDY_bm 0x01 /* Internal 2MHz RC Oscillator Ready bit mask. */ -#define OSC_RC2MRDY_bp 0 /* Internal 2MHz RC Oscillator Ready bit position. */ +/* Internal 2MHz RC Oscillator Ready bit mask. */ +#define OSC_RC2MRDY_bm 0x01 +/* Internal 2MHz RC Oscillator Ready bit position. */ +#define OSC_RC2MRDY_bp 0 /* OSC.XOSCCTRL bit masks and bit positions */ @@ -3933,21 +4079,33 @@ IO Module Instances. Mapped to memory. #define OSC_X32KLPM_bm 0x20 /* 32kHz XTAL OSC Low-power Mode bit mask. */ #define OSC_X32KLPM_bp 5 /* 32kHz XTAL OSC Low-power Mode bit position. */ -#define OSC_XOSCSEL_gm 0x0F /* External Oscillator Selection and Startup Time group mask. */ -#define OSC_XOSCSEL_gp 0 /* External Oscillator Selection and Startup Time group position. */ -#define OSC_XOSCSEL0_bm (1<<0) /* External Oscillator Selection and Startup Time bit 0 mask. */ -#define OSC_XOSCSEL0_bp 0 /* External Oscillator Selection and Startup Time bit 0 position. */ -#define OSC_XOSCSEL1_bm (1<<1) /* External Oscillator Selection and Startup Time bit 1 mask. */ -#define OSC_XOSCSEL1_bp 1 /* External Oscillator Selection and Startup Time bit 1 position. */ -#define OSC_XOSCSEL2_bm (1<<2) /* External Oscillator Selection and Startup Time bit 2 mask. */ -#define OSC_XOSCSEL2_bp 2 /* External Oscillator Selection and Startup Time bit 2 position. */ -#define OSC_XOSCSEL3_bm (1<<3) /* External Oscillator Selection and Startup Time bit 3 mask. */ -#define OSC_XOSCSEL3_bp 3 /* External Oscillator Selection and Startup Time bit 3 position. */ +/* External Oscillator Selection and Startup Time group mask. */ +#define OSC_XOSCSEL_gm 0x0F +/* External Oscillator Selection and Startup Time group position. */ +#define OSC_XOSCSEL_gp 0 +/* External Oscillator Selection and Startup Time bit 0 mask. */ +#define OSC_XOSCSEL0_bm (1<<0) +/* External Oscillator Selection and Startup Time bit 0 position. */ +#define OSC_XOSCSEL0_bp 0 +/* External Oscillator Selection and Startup Time bit 1 mask. */ +#define OSC_XOSCSEL1_bm (1<<1) +/* External Oscillator Selection and Startup Time bit 1 position. */ +#define OSC_XOSCSEL1_bp 1 +/* External Oscillator Selection and Startup Time bit 2 mask. */ +#define OSC_XOSCSEL2_bm (1<<2) +/* External Oscillator Selection and Startup Time bit 2 position. */ +#define OSC_XOSCSEL2_bp 2 +/* External Oscillator Selection and Startup Time bit 3 mask. */ +#define OSC_XOSCSEL3_bm (1<<3) +/* External Oscillator Selection and Startup Time bit 3 position. */ +#define OSC_XOSCSEL3_bp 3 /* OSC.XOSCFAIL bit masks and bit positions */ -#define OSC_XOSCFDIF_bm 0x02 /* Failure Detection Interrupt Flag bit mask. */ -#define OSC_XOSCFDIF_bp 1 /* Failure Detection Interrupt Flag bit position. */ +/* Failure Detection Interrupt Flag bit mask. */ +#define OSC_XOSCFDIF_bm 0x02 +/* Failure Detection Interrupt Flag bit position. */ +#define OSC_XOSCFDIF_bp 1 #define OSC_XOSCFDEN_bm 0x01 /* Failure Detection Enable bit mask. */ #define OSC_XOSCFDEN_bp 0 /* Failure Detection Enable bit position. */ @@ -4033,8 +4191,10 @@ IO Module Instances. Mapped to memory. #define RST_SRF_bm 0x20 /* Software Reset Flag bit mask. */ #define RST_SRF_bp 5 /* Software Reset Flag bit position. */ -#define RST_PDIRF_bm 0x10 /* Programming and Debug Interface Interface Reset Flag bit mask. */ -#define RST_PDIRF_bp 4 /* Programming and Debug Interface Interface Reset Flag bit position. */ +/* Programming and Debug Interface Interface Reset Flag bit mask. */ +#define RST_PDIRF_bm 0x10 +/* Programming and Debug Interface Interface Reset Flag bit position. */ +#define RST_PDIRF_bp 4 #define RST_WDRF_bm 0x08 /* Watchdog Reset Flag bit mask. */ #define RST_WDRF_bp 3 /* Watchdog Reset Flag bit position. */ @@ -4128,8 +4288,10 @@ IO Module Instances. Mapped to memory. #define PMIC_HILVLEX_bm 0x04 /* High Level Interrupt Executing bit mask. */ #define PMIC_HILVLEX_bp 2 /* High Level Interrupt Executing bit position. */ -#define PMIC_MEDLVLEX_bm 0x02 /* Medium Level Interrupt Executing bit mask. */ -#define PMIC_MEDLVLEX_bp 1 /* Medium Level Interrupt Executing bit position. */ +/* Medium Level Interrupt Executing bit mask. */ +#define PMIC_MEDLVLEX_bm 0x02 +/* Medium Level Interrupt Executing bit position. */ +#define PMIC_MEDLVLEX_bp 1 #define PMIC_LOLVLEX_bm 0x01 /* Low Level Interrupt Executing bit mask. */ #define PMIC_LOLVLEX_bp 0 /* Low Level Interrupt Executing bit position. */ @@ -4166,8 +4328,10 @@ IO Module Instances. Mapped to memory. #define DMA_CH_TRFREQ_bm 0x10 /* Channel Transfer Request bit mask. */ #define DMA_CH_TRFREQ_bp 4 /* Channel Transfer Request bit position. */ -#define DMA_CH_SINGLE_bm 0x04 /* Channel Single Shot Data Transfer bit mask. */ -#define DMA_CH_SINGLE_bp 2 /* Channel Single Shot Data Transfer bit position. */ +/* Channel Single Shot Data Transfer bit mask. */ +#define DMA_CH_SINGLE_bm 0x04 +/* Channel Single Shot Data Transfer bit position. */ +#define DMA_CH_SINGLE_bp 2 #define DMA_CH_BURSTLEN_gm 0x03 /* Channel Transfer Mode group mask. */ #define DMA_CH_BURSTLEN_gp 0 /* Channel Transfer Mode group position. */ @@ -4184,55 +4348,93 @@ IO Module Instances. Mapped to memory. #define DMA_CH_CHPEND_bm 0x40 /* Block Transfer Pending bit mask. */ #define DMA_CH_CHPEND_bp 6 /* Block Transfer Pending bit position. */ -#define DMA_CH_ERRIF_bm 0x20 /* Block Transfer Error Interrupt Flag bit mask. */ -#define DMA_CH_ERRIF_bp 5 /* Block Transfer Error Interrupt Flag bit position. */ - -#define DMA_CH_TRNIF_bm 0x10 /* Transaction Complete Interrup Flag bit mask. */ -#define DMA_CH_TRNIF_bp 4 /* Transaction Complete Interrup Flag bit position. */ - -#define DMA_CH_ERRINTLVL_gm 0x0C /* Transfer Error Interrupt Level group mask. */ -#define DMA_CH_ERRINTLVL_gp 2 /* Transfer Error Interrupt Level group position. */ -#define DMA_CH_ERRINTLVL0_bm (1<<2) /* Transfer Error Interrupt Level bit 0 mask. */ -#define DMA_CH_ERRINTLVL0_bp 2 /* Transfer Error Interrupt Level bit 0 position. */ -#define DMA_CH_ERRINTLVL1_bm (1<<3) /* Transfer Error Interrupt Level bit 1 mask. */ -#define DMA_CH_ERRINTLVL1_bp 3 /* Transfer Error Interrupt Level bit 1 position. */ - -#define DMA_CH_TRNINTLVL_gm 0x03 /* Transaction Complete Interrupt Level group mask. */ -#define DMA_CH_TRNINTLVL_gp 0 /* Transaction Complete Interrupt Level group position. */ -#define DMA_CH_TRNINTLVL0_bm (1<<0) /* Transaction Complete Interrupt Level bit 0 mask. */ -#define DMA_CH_TRNINTLVL0_bp 0 /* Transaction Complete Interrupt Level bit 0 position. */ -#define DMA_CH_TRNINTLVL1_bm (1<<1) /* Transaction Complete Interrupt Level bit 1 mask. */ -#define DMA_CH_TRNINTLVL1_bp 1 /* Transaction Complete Interrupt Level bit 1 position. */ +/* Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH_ERRIF_bm 0x20 +/* Block Transfer Error Interrupt Flag bit position. */ +#define DMA_CH_ERRIF_bp 5 + +/* Transaction Complete Interrup Flag bit mask. */ +#define DMA_CH_TRNIF_bm 0x10 +/* Transaction Complete Interrup Flag bit position. */ +#define DMA_CH_TRNIF_bp 4 + +/* Transfer Error Interrupt Level group mask. */ +#define DMA_CH_ERRINTLVL_gm 0x0C +/* Transfer Error Interrupt Level group position. */ +#define DMA_CH_ERRINTLVL_gp 2 +/* Transfer Error Interrupt Level bit 0 mask. */ +#define DMA_CH_ERRINTLVL0_bm (1<<2) +/* Transfer Error Interrupt Level bit 0 position. */ +#define DMA_CH_ERRINTLVL0_bp 2 +/* Transfer Error Interrupt Level bit 1 mask. */ +#define DMA_CH_ERRINTLVL1_bm (1<<3) + /* Transfer Error Interrupt Level bit 1 position. */ +#define DMA_CH_ERRINTLVL1_bp 3 + +/* Transaction Complete Interrupt Level group mask. */ +#define DMA_CH_TRNINTLVL_gm 0x03 +/* Transaction Complete Interrupt Level group position. */ +#define DMA_CH_TRNINTLVL_gp 0 +/* Transaction Complete Interrupt Level bit 0 mask. */ +#define DMA_CH_TRNINTLVL0_bm (1<<0) +/* Transaction Complete Interrupt Level bit 0 position. */ +#define DMA_CH_TRNINTLVL0_bp 0 +/* Transaction Complete Interrupt Level bit 1 mask. */ +#define DMA_CH_TRNINTLVL1_bm (1<<1) +/* Transaction Complete Interrupt Level bit 1 position. */ +#define DMA_CH_TRNINTLVL1_bp 1 /* DMA_CH.ADDRCTRL bit masks and bit positions */ -#define DMA_CH_SRCRELOAD_gm 0xC0 /* Channel Source Address Reload group mask. */ -#define DMA_CH_SRCRELOAD_gp 6 /* Channel Source Address Reload group position. */ -#define DMA_CH_SRCRELOAD0_bm (1<<6) /* Channel Source Address Reload bit 0 mask. */ -#define DMA_CH_SRCRELOAD0_bp 6 /* Channel Source Address Reload bit 0 position. */ -#define DMA_CH_SRCRELOAD1_bm (1<<7) /* Channel Source Address Reload bit 1 mask. */ -#define DMA_CH_SRCRELOAD1_bp 7 /* Channel Source Address Reload bit 1 position. */ +/* Channel Source Address Reload group mask. */ +#define DMA_CH_SRCRELOAD_gm 0xC0 +/* Channel Source Address Reload group position. */ +#define DMA_CH_SRCRELOAD_gp 6 +/* Channel Source Address Reload bit 0 mask. */ +#define DMA_CH_SRCRELOAD0_bm (1<<6) +/* Channel Source Address Reload bit 0 position. */ +#define DMA_CH_SRCRELOAD0_bp 6 +/* Channel Source Address Reload bit 1 mask. */ +#define DMA_CH_SRCRELOAD1_bm (1<<7) +/* Channel Source Address Reload bit 1 position. */ +#define DMA_CH_SRCRELOAD1_bp 7 #define DMA_CH_SRCDIR_gm 0x30 /* Channel Source Address Mode group mask. */ #define DMA_CH_SRCDIR_gp 4 /* Channel Source Address Mode group position. */ -#define DMA_CH_SRCDIR0_bm (1<<4) /* Channel Source Address Mode bit 0 mask. */ -#define DMA_CH_SRCDIR0_bp 4 /* Channel Source Address Mode bit 0 position. */ -#define DMA_CH_SRCDIR1_bm (1<<5) /* Channel Source Address Mode bit 1 mask. */ -#define DMA_CH_SRCDIR1_bp 5 /* Channel Source Address Mode bit 1 position. */ - -#define DMA_CH_DESTRELOAD_gm 0x0C /* Channel Destination Address Reload group mask. */ -#define DMA_CH_DESTRELOAD_gp 2 /* Channel Destination Address Reload group position. */ -#define DMA_CH_DESTRELOAD0_bm (1<<2) /* Channel Destination Address Reload bit 0 mask. */ -#define DMA_CH_DESTRELOAD0_bp 2 /* Channel Destination Address Reload bit 0 position. */ -#define DMA_CH_DESTRELOAD1_bm (1<<3) /* Channel Destination Address Reload bit 1 mask. */ -#define DMA_CH_DESTRELOAD1_bp 3 /* Channel Destination Address Reload bit 1 position. */ - -#define DMA_CH_DESTDIR_gm 0x03 /* Channel Destination Address Mode group mask. */ -#define DMA_CH_DESTDIR_gp 0 /* Channel Destination Address Mode group position. */ -#define DMA_CH_DESTDIR0_bm (1<<0) /* Channel Destination Address Mode bit 0 mask. */ -#define DMA_CH_DESTDIR0_bp 0 /* Channel Destination Address Mode bit 0 position. */ -#define DMA_CH_DESTDIR1_bm (1<<1) /* Channel Destination Address Mode bit 1 mask. */ -#define DMA_CH_DESTDIR1_bp 1 /* Channel Destination Address Mode bit 1 position. */ +/* Channel Source Address Mode bit 0 mask. */ +#define DMA_CH_SRCDIR0_bm (1<<4) +/* Channel Source Address Mode bit 0 position. */ +#define DMA_CH_SRCDIR0_bp 4 +/* Channel Source Address Mode bit 1 mask. */ +#define DMA_CH_SRCDIR1_bm (1<<5) +/* Channel Source Address Mode bit 1 position. */ +#define DMA_CH_SRCDIR1_bp 5 + +/* Channel Destination Address Reload group mask. */ +#define DMA_CH_DESTRELOAD_gm 0x0C +/* Channel Destination Address Reload group position. */ +#define DMA_CH_DESTRELOAD_gp 2 +/* Channel Destination Address Reload bit 0 mask. */ +#define DMA_CH_DESTRELOAD0_bm (1<<2) +/* Channel Destination Address Reload bit 0 position. */ +#define DMA_CH_DESTRELOAD0_bp 2 +/* Channel Destination Address Reload bit 1 mask. */ +#define DMA_CH_DESTRELOAD1_bm (1<<3) +/* Channel Destination Address Reload bit 1 position. */ +#define DMA_CH_DESTRELOAD1_bp 3 + +/* Channel Destination Address Mode group mask. */ +#define DMA_CH_DESTDIR_gm 0x03 +/* Channel Destination Address Mode group position. */ +#define DMA_CH_DESTDIR_gp 0 +/* Channel Destination Address Mode bit 0 mask. */ +#define DMA_CH_DESTDIR0_bm (1<<0) +/* Channel Destination Address Mode bit 0 position. */ +#define DMA_CH_DESTDIR0_bp 0 +/* Channel Destination Address Mode bit 1 mask. */ +#define DMA_CH_DESTDIR1_bm (1<<1) +/* Channel Destination Address Mode bit 1 position. */ +#define DMA_CH_DESTDIR1_bp 1 /* DMA_CH.TRIGSRC bit masks and bit positions */ @@ -4279,29 +4481,45 @@ IO Module Instances. Mapped to memory. /* DMA.INTFLAGS bit masks and bit positions */ -#define DMA_CH3ERRIF_bm 0x80 /* Channel 3 Block Transfer Error Interrupt Flag bit mask. */ -#define DMA_CH3ERRIF_bp 7 /* Channel 3 Block Transfer Error Interrupt Flag bit position. */ - -#define DMA_CH2ERRIF_bm 0x40 /* Channel 2 Block Transfer Error Interrupt Flag bit mask. */ -#define DMA_CH2ERRIF_bp 6 /* Channel 2 Block Transfer Error Interrupt Flag bit position. */ - -#define DMA_CH1ERRIF_bm 0x20 /* Channel 1 Block Transfer Error Interrupt Flag bit mask. */ -#define DMA_CH1ERRIF_bp 5 /* Channel 1 Block Transfer Error Interrupt Flag bit position. */ - -#define DMA_CH0ERRIF_bm 0x10 /* Channel 0 Block Transfer Error Interrupt Flag bit mask. */ -#define DMA_CH0ERRIF_bp 4 /* Channel 0 Block Transfer Error Interrupt Flag bit position. */ - -#define DMA_CH3TRNIF_bm 0x08 /* Channel 3 Transaction Complete Interrupt Flag bit mask. */ -#define DMA_CH3TRNIF_bp 3 /* Channel 3 Transaction Complete Interrupt Flag bit position. */ - -#define DMA_CH2TRNIF_bm 0x04 /* Channel 2 Transaction Complete Interrupt Flag bit mask. */ -#define DMA_CH2TRNIF_bp 2 /* Channel 2 Transaction Complete Interrupt Flag bit position. */ - -#define DMA_CH1TRNIF_bm 0x02 /* Channel 1 Transaction Complete Interrupt Flag bit mask. */ -#define DMA_CH1TRNIF_bp 1 /* Channel 1 Transaction Complete Interrupt Flag bit position. */ - -#define DMA_CH0TRNIF_bm 0x01 /* Channel 0 Transaction Complete Interrupt Flag bit mask. */ -#define DMA_CH0TRNIF_bp 0 /* Channel 0 Transaction Complete Interrupt Flag bit position. */ +/* Channel 3 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH3ERRIF_bm 0x80 +/* Channel 3 Block Transfer Error Interrupt Flag bit position. */ +#define DMA_CH3ERRIF_bp 7 + +/* Channel 2 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH2ERRIF_bm 0x40 +/* Channel 2 Block Transfer Error Interrupt Flag bit position. */ +#define DMA_CH2ERRIF_bp 6 + +/* Channel 1 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH1ERRIF_bm 0x20 +/* Channel 1 Block Transfer Error Interrupt Flag bit position. */ +#define DMA_CH1ERRIF_bp 5 + +/* Channel 0 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH0ERRIF_bm 0x10 +/* Channel 0 Block Transfer Error Interrupt Flag bit position. */ +#define DMA_CH0ERRIF_bp 4 + +/* Channel 3 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH3TRNIF_bm 0x08 +/* Channel 3 Transaction Complete Interrupt Flag bit position. */ +#define DMA_CH3TRNIF_bp 3 + +/* Channel 2 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH2TRNIF_bm 0x04 +/* Channel 2 Transaction Complete Interrupt Flag bit position. */ +#define DMA_CH2TRNIF_bp 2 + +/* Channel 1 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH1TRNIF_bm 0x02 +/* Channel 1 Transaction Complete Interrupt Flag bit position. */ +#define DMA_CH1TRNIF_bp 1 + +/* Channel 0 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH0TRNIF_bm 0x01 +/* Channel 0 Transaction Complete Interrupt Flag bit position. */ +#define DMA_CH0TRNIF_bp 0 /* DMA.STATUS bit masks and bit positions */ @@ -4318,16 +4536,20 @@ IO Module Instances. Mapped to memory. #define DMA_CH0BUSY_bp 4 /* Channel 0 Block Transfer Busy bit position. */ #define DMA_CH3PEND_bm 0x08 /* Channel 3 Block Transfer Pending bit mask. */ -#define DMA_CH3PEND_bp 3 /* Channel 3 Block Transfer Pending bit position. */ +/* Channel 3 Block Transfer Pending bit position. */ +#define DMA_CH3PEND_bp 3 #define DMA_CH2PEND_bm 0x04 /* Channel 2 Block Transfer Pending bit mask. */ -#define DMA_CH2PEND_bp 2 /* Channel 2 Block Transfer Pending bit position. */ +/* Channel 2 Block Transfer Pending bit position. */ +#define DMA_CH2PEND_bp 2 #define DMA_CH1PEND_bm 0x02 /* Channel 1 Block Transfer Pending bit mask. */ -#define DMA_CH1PEND_bp 1 /* Channel 1 Block Transfer Pending bit position. */ +/* Channel 1 Block Transfer Pending bit position. */ +#define DMA_CH1PEND_bp 1 #define DMA_CH0PEND_bm 0x01 /* Channel 0 Block Transfer Pending bit mask. */ -#define DMA_CH0PEND_bp 0 /* Channel 0 Block Transfer Pending bit position. */ +/* Channel 0 Block Transfer Pending bit position. */ +#define DMA_CH0PEND_bp 0 /* EVSYS - Event System */ @@ -4500,12 +4722,18 @@ IO Module Instances. Mapped to memory. /* EVSYS.CH0CTRL bit masks and bit positions */ -#define EVSYS_QDIRM_gm 0x60 /* Quadrature Decoder Index Recognition Mode group mask. */ -#define EVSYS_QDIRM_gp 5 /* Quadrature Decoder Index Recognition Mode group position. */ -#define EVSYS_QDIRM0_bm (1<<5) /* Quadrature Decoder Index Recognition Mode bit 0 mask. */ -#define EVSYS_QDIRM0_bp 5 /* Quadrature Decoder Index Recognition Mode bit 0 position. */ -#define EVSYS_QDIRM1_bm (1<<6) /* Quadrature Decoder Index Recognition Mode bit 1 mask. */ -#define EVSYS_QDIRM1_bp 6 /* Quadrature Decoder Index Recognition Mode bit 1 position. */ +/* Quadrature Decoder Index Recognition Mode group mask. */ +#define EVSYS_QDIRM_gm 0x60 +/* Quadrature Decoder Index Recognition Mode group position. */ +#define EVSYS_QDIRM_gp 5 +/* Quadrature Decoder Index Recognition Mode bit 0 mask. */ +#define EVSYS_QDIRM0_bm (1<<5) +/* Quadrature Decoder Index Recognition Mode bit 0 position. */ +#define EVSYS_QDIRM0_bp 5 +/* Quadrature Decoder Index Recognition Mode bit 1 mask. */ +#define EVSYS_QDIRM1_bm (1<<6) +/* Quadrature Decoder Index Recognition Mode bit 1 position. */ +#define EVSYS_QDIRM1_bp 6 #define EVSYS_QDIEN_bm 0x10 /* Quadrature Decoder Index Enable bit mask. */ #define EVSYS_QDIEN_bp 4 /* Quadrature Decoder Index Enable bit position. */ @@ -4691,7 +4919,8 @@ IO Module Instances. Mapped to memory. #define NVM_FBUSY_bp 6 /* Flash Memory Busy bit position. */ #define NVM_EELOAD_bm 0x02 /* EEPROM Page Buffer Active Loading bit mask. */ -#define NVM_EELOAD_bp 1 /* EEPROM Page Buffer Active Loading bit position. */ +/* EEPROM Page Buffer Active Loading bit position. */ +#define NVM_EELOAD_bp 1 #define NVM_FLOAD_bm 0x01 /* Flash Page Buffer Active Loading bit mask. */ #define NVM_FLOAD_bp 0 /* Flash Page Buffer Active Loading bit position. */ @@ -4705,19 +4934,31 @@ IO Module Instances. Mapped to memory. #define NVM_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ #define NVM_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ -#define NVM_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ -#define NVM_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ -#define NVM_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ -#define NVM_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ -#define NVM_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ -#define NVM_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ - -#define NVM_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ -#define NVM_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ -#define NVM_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ -#define NVM_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ -#define NVM_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ -#define NVM_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ +/* Boot Lock Bits - Application Section group mask. */ +#define NVM_BLBA_gm 0x30 +/* Boot Lock Bits - Application Section group position. */ +#define NVM_BLBA_gp 4 + /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_BLBA0_bm (1<<4) +/* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_BLBA0_bp 4 +/* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_BLBA1_bm (1<<5) +/* Boot Lock Bits - Application Section bit 1 position. */ +#define NVM_BLBA1_bp 5 + +/* Boot Lock Bits - Application Table group mask. */ +#define NVM_BLBAT_gm 0x0C +/* Boot Lock Bits - Application Table group position. */ +#define NVM_BLBAT_gp 2 +/* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_BLBAT0_bm (1<<2) +/* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_BLBAT0_bp 2 +/* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_BLBAT1_bm (1<<3) +/* Boot Lock Bits - Application Table bit 1 position. */ +#define NVM_BLBAT1_bp 3 #define NVM_LB_gm 0x03 /* Lock Bits group mask. */ #define NVM_LB_gp 0 /* Lock Bits group position. */ @@ -4728,26 +4969,44 @@ IO Module Instances. Mapped to memory. /* NVM_LOCKBITS.LOCKBITS bit masks and bit positions */ -#define NVM_LOCKBITS_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ -#define NVM_LOCKBITS_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ -#define NVM_LOCKBITS_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ -#define NVM_LOCKBITS_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ -#define NVM_LOCKBITS_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ -#define NVM_LOCKBITS_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ - -#define NVM_LOCKBITS_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ -#define NVM_LOCKBITS_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ -#define NVM_LOCKBITS_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ -#define NVM_LOCKBITS_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ -#define NVM_LOCKBITS_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ -#define NVM_LOCKBITS_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ - -#define NVM_LOCKBITS_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ -#define NVM_LOCKBITS_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ -#define NVM_LOCKBITS_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ -#define NVM_LOCKBITS_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ -#define NVM_LOCKBITS_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ -#define NVM_LOCKBITS_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ +/* Boot Lock Bits - Boot Section group mask. */ +#define NVM_LOCKBITS_BLBB_gm 0xC0 +/* Boot Lock Bits - Boot Section group position. */ +#define NVM_LOCKBITS_BLBB_gp 6 +/* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBB0_bm (1<<6) + /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_LOCKBITS_BLBB0_bp 6 +/* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBB1_bm (1<<7) +/* Boot Lock Bits - Boot Section bit 1 position. */ +#define NVM_LOCKBITS_BLBB1_bp 7 + +/* Boot Lock Bits - Application Section group mask. */ +#define NVM_LOCKBITS_BLBA_gm 0x30 +/* Boot Lock Bits - Application Section group position. */ +#define NVM_LOCKBITS_BLBA_gp 4 +/* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBA0_bm (1<<4) +/* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_LOCKBITS_BLBA0_bp 4 +/* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBA1_bm (1<<5) +/* Boot Lock Bits - Application Section bit 1 position. */ +#define NVM_LOCKBITS_BLBA1_bp 5 + +/* Boot Lock Bits - Application Table group mask. */ +#define NVM_LOCKBITS_BLBAT_gm 0x0C +/* Boot Lock Bits - Application Table group position. */ +#define NVM_LOCKBITS_BLBAT_gp 2 +/* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_LOCKBITS_BLBAT0_bm (1<<2) +/* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_LOCKBITS_BLBAT0_bp 2 +/* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_LOCKBITS_BLBAT1_bm (1<<3) +/* Boot Lock Bits - Application Table bit 1 position. */ +#define NVM_LOCKBITS_BLBAT1_bp 3 #define NVM_LOCKBITS_LB_gm 0x03 /* Lock Bits group mask. */ #define NVM_LOCKBITS_LB_gp 0 /* Lock Bits group position. */ @@ -4779,16 +5038,26 @@ IO Module Instances. Mapped to memory. /* NVM_FUSES.FUSEBYTE1 bit masks and bit positions */ -#define NVM_FUSES_WDWP_gm 0xF0 /* Watchdog Window Timeout Period group mask. */ -#define NVM_FUSES_WDWP_gp 4 /* Watchdog Window Timeout Period group position. */ -#define NVM_FUSES_WDWP0_bm (1<<4) /* Watchdog Window Timeout Period bit 0 mask. */ -#define NVM_FUSES_WDWP0_bp 4 /* Watchdog Window Timeout Period bit 0 position. */ -#define NVM_FUSES_WDWP1_bm (1<<5) /* Watchdog Window Timeout Period bit 1 mask. */ -#define NVM_FUSES_WDWP1_bp 5 /* Watchdog Window Timeout Period bit 1 position. */ -#define NVM_FUSES_WDWP2_bm (1<<6) /* Watchdog Window Timeout Period bit 2 mask. */ -#define NVM_FUSES_WDWP2_bp 6 /* Watchdog Window Timeout Period bit 2 position. */ -#define NVM_FUSES_WDWP3_bm (1<<7) /* Watchdog Window Timeout Period bit 3 mask. */ -#define NVM_FUSES_WDWP3_bp 7 /* Watchdog Window Timeout Period bit 3 position. */ +/* Watchdog Window Timeout Period group mask. */ +#define NVM_FUSES_WDWP_gm 0xF0 +/* Watchdog Window Timeout Period group position. */ +#define NVM_FUSES_WDWP_gp 4 +/* Watchdog Window Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDWP0_bm (1<<4) +/* Watchdog Window Timeout Period bit 0 position. */ +#define NVM_FUSES_WDWP0_bp 4 +/* Watchdog Window Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDWP1_bm (1<<5) +/* Watchdog Window Timeout Period bit 1 position. */ +#define NVM_FUSES_WDWP1_bp 5 +/* Watchdog Window Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDWP2_bm (1<<6) +/* Watchdog Window Timeout Period bit 2 position. */ +#define NVM_FUSES_WDWP2_bp 6 +/* Watchdog Window Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDWP3_bm (1<<7) +/* Watchdog Window Timeout Period bit 3 position. */ +#define NVM_FUSES_WDWP3_bp 7 #define NVM_FUSES_WDP_gm 0x0F /* Watchdog Timeout Period group mask. */ #define NVM_FUSES_WDP_gp 0 /* Watchdog Timeout Period group position. */ @@ -4806,22 +5075,36 @@ IO Module Instances. Mapped to memory. #define NVM_FUSES_DVSDON_bm 0x80 /* Spike Detector Enable bit mask. */ #define NVM_FUSES_DVSDON_bp 7 /* Spike Detector Enable bit position. */ -#define NVM_FUSES_BOOTRST_bm 0x40 /* Boot Loader Section Reset Vector bit mask. */ -#define NVM_FUSES_BOOTRST_bp 6 /* Boot Loader Section Reset Vector bit position. */ - -#define NVM_FUSES_BODACT_gm 0x0C /* BOD Operation in Active Mode group mask. */ -#define NVM_FUSES_BODACT_gp 2 /* BOD Operation in Active Mode group position. */ -#define NVM_FUSES_BODACT0_bm (1<<2) /* BOD Operation in Active Mode bit 0 mask. */ -#define NVM_FUSES_BODACT0_bp 2 /* BOD Operation in Active Mode bit 0 position. */ -#define NVM_FUSES_BODACT1_bm (1<<3) /* BOD Operation in Active Mode bit 1 mask. */ -#define NVM_FUSES_BODACT1_bp 3 /* BOD Operation in Active Mode bit 1 position. */ - -#define NVM_FUSES_BODPD_gm 0x03 /* BOD Operation in Power-Down Mode group mask. */ -#define NVM_FUSES_BODPD_gp 0 /* BOD Operation in Power-Down Mode group position. */ -#define NVM_FUSES_BODPD0_bm (1<<0) /* BOD Operation in Power-Down Mode bit 0 mask. */ -#define NVM_FUSES_BODPD0_bp 0 /* BOD Operation in Power-Down Mode bit 0 position. */ -#define NVM_FUSES_BODPD1_bm (1<<1) /* BOD Operation in Power-Down Mode bit 1 mask. */ -#define NVM_FUSES_BODPD1_bp 1 /* BOD Operation in Power-Down Mode bit 1 position. */ +/* Boot Loader Section Reset Vector bit mask. */ +#define NVM_FUSES_BOOTRST_bm 0x40 +/* Boot Loader Section Reset Vector bit position. */ +#define NVM_FUSES_BOOTRST_bp 6 + +/* BOD Operation in Active Mode group mask. */ +#define NVM_FUSES_BODACT_gm 0x0C +/* BOD Operation in Active Mode group position. */ +#define NVM_FUSES_BODACT_gp 2 +/* BOD Operation in Active Mode bit 0 mask. */ +#define NVM_FUSES_BODACT0_bm (1<<2) +/* BOD Operation in Active Mode bit 0 position. */ +#define NVM_FUSES_BODACT0_bp 2 +/* BOD Operation in Active Mode bit 1 mask. */ +#define NVM_FUSES_BODACT1_bm (1<<3) +/* BOD Operation in Active Mode bit 1 position. */ +#define NVM_FUSES_BODACT1_bp 3 + +/* BOD Operation in Power-Down Mode group mask. */ +#define NVM_FUSES_BODPD_gm 0x03 +/* BOD Operation in Power-Down Mode group position. */ +#define NVM_FUSES_BODPD_gp 0 +/* BOD Operation in Power-Down Mode bit 0 mask. */ +#define NVM_FUSES_BODPD0_bm (1<<0) +/* BOD Operation in Power-Down Mode bit 0 position. */ +#define NVM_FUSES_BODPD0_bp 0 +/* BOD Operation in Power-Down Mode bit 1 mask. */ +#define NVM_FUSES_BODPD1_bm (1<<1) +/* BOD Operation in Power-Down Mode bit 1 position. */ +#define NVM_FUSES_BODPD1_bp 1 /* NVM_FUSES.FUSEBYTE4 bit masks and bit positions */ @@ -4840,17 +5123,27 @@ IO Module Instances. Mapped to memory. /* NVM_FUSES.FUSEBYTE5 bit masks and bit positions */ -#define NVM_FUSES_EESAVE_bm 0x08 /* Preserve EEPROM Through Chip Erase bit mask. */ -#define NVM_FUSES_EESAVE_bp 3 /* Preserve EEPROM Through Chip Erase bit position. */ - -#define NVM_FUSES_BODLVL_gm 0x07 /* Brown Out Detection Voltage Level group mask. */ -#define NVM_FUSES_BODLVL_gp 0 /* Brown Out Detection Voltage Level group position. */ -#define NVM_FUSES_BODLVL0_bm (1<<0) /* Brown Out Detection Voltage Level bit 0 mask. */ -#define NVM_FUSES_BODLVL0_bp 0 /* Brown Out Detection Voltage Level bit 0 position. */ -#define NVM_FUSES_BODLVL1_bm (1<<1) /* Brown Out Detection Voltage Level bit 1 mask. */ -#define NVM_FUSES_BODLVL1_bp 1 /* Brown Out Detection Voltage Level bit 1 position. */ -#define NVM_FUSES_BODLVL2_bm (1<<2) /* Brown Out Detection Voltage Level bit 2 mask. */ -#define NVM_FUSES_BODLVL2_bp 2 /* Brown Out Detection Voltage Level bit 2 position. */ +/* Preserve EEPROM Through Chip Erase bit mask. */ +#define NVM_FUSES_EESAVE_bm 0x08 +/* Preserve EEPROM Through Chip Erase bit position. */ +#define NVM_FUSES_EESAVE_bp 3 + +/* Brown Out Detection Voltage Level group mask. */ +#define NVM_FUSES_BODLVL_gm 0x07 +/* Brown Out Detection Voltage Level group position. */ +#define NVM_FUSES_BODLVL_gp 0 +/* Brown Out Detection Voltage Level bit 0 mask. */ +#define NVM_FUSES_BODLVL0_bm (1<<0) +/* Brown Out Detection Voltage Level bit 0 position. */ +#define NVM_FUSES_BODLVL0_bp 0 +/* Brown Out Detection Voltage Level bit 1 mask. */ +#define NVM_FUSES_BODLVL1_bm (1<<1) +/* Brown Out Detection Voltage Level bit 1 position. */ +#define NVM_FUSES_BODLVL1_bp 1 +/* Brown Out Detection Voltage Level bit 2 mask. */ +#define NVM_FUSES_BODLVL2_bm (1<<2) +/* Brown Out Detection Voltage Level bit 2 position. */ +#define NVM_FUSES_BODLVL2_bp 2 /* AC - Analog Comparator */ @@ -5309,12 +5602,18 @@ IO Module Instances. Mapped to memory. /* RTC.INTCTRL bit masks and bit positions */ -#define RTC_COMPINTLVL_gm 0x0C /* Compare Match Interrupt Level group mask. */ -#define RTC_COMPINTLVL_gp 2 /* Compare Match Interrupt Level group position. */ -#define RTC_COMPINTLVL0_bm (1<<2) /* Compare Match Interrupt Level bit 0 mask. */ -#define RTC_COMPINTLVL0_bp 2 /* Compare Match Interrupt Level bit 0 position. */ -#define RTC_COMPINTLVL1_bm (1<<3) /* Compare Match Interrupt Level bit 1 mask. */ -#define RTC_COMPINTLVL1_bp 3 /* Compare Match Interrupt Level bit 1 position. */ +/* Compare Match Interrupt Level group mask. */ +#define RTC_COMPINTLVL_gm 0x0C +/* Compare Match Interrupt Level group position. */ +#define RTC_COMPINTLVL_gp 2 + /* Compare Match Interrupt Level bit 0 mask. */ +#define RTC_COMPINTLVL0_bm (1<<2) +/* Compare Match Interrupt Level bit 0 position. */ +#define RTC_COMPINTLVL0_bp 2 +/* Compare Match Interrupt Level bit 1 mask. */ +#define RTC_COMPINTLVL1_bm (1<<3) +/* Compare Match Interrupt Level bit 1 position. */ +#define RTC_COMPINTLVL1_bp 3 #define RTC_OVFINTLVL_gm 0x03 /* Overflow Interrupt Level group mask. */ #define RTC_OVFINTLVL_gp 0 /* Overflow Interrupt Level group position. */ @@ -5459,14 +5758,22 @@ IO Module Instances. Mapped to memory. #define EBI_WRDLY1_bm (1<<7) /* SDRAM Write Recovery Delay bit 1 mask. */ #define EBI_WRDLY1_bp 7 /* SDRAM Write Recovery Delay bit 1 position. */ -#define EBI_ESRDLY_gm 0x38 /* SDRAM Exit-Self-refresh-to-Active Delay group mask. */ -#define EBI_ESRDLY_gp 3 /* SDRAM Exit-Self-refresh-to-Active Delay group position. */ -#define EBI_ESRDLY0_bm (1<<3) /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 mask. */ -#define EBI_ESRDLY0_bp 3 /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 position. */ -#define EBI_ESRDLY1_bm (1<<4) /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 mask. */ -#define EBI_ESRDLY1_bp 4 /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 position. */ -#define EBI_ESRDLY2_bm (1<<5) /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 mask. */ -#define EBI_ESRDLY2_bp 5 /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 position. */ +/* SDRAM Exit-Self-refresh-to-Active Delay group mask. */ +#define EBI_ESRDLY_gm 0x38 +/* SDRAM Exit-Self-refresh-to-Active Delay group position. */ +#define EBI_ESRDLY_gp 3 +/* SDRAM Exit-Self-refresh-to-Active Delay bit 0 mask. */ +#define EBI_ESRDLY0_bm (1<<3) +/* SDRAM Exit-Self-refresh-to-Active Delay bit 0 position. */ +#define EBI_ESRDLY0_bp 3 +/* SDRAM Exit-Self-refresh-to-Active Delay bit 1 mask. */ +#define EBI_ESRDLY1_bm (1<<4) +/* SDRAM Exit-Self-refresh-to-Active Delay bit 1 position. */ +#define EBI_ESRDLY1_bp 4 +/* SDRAM Exit-Self-refresh-to-Active Delay bit 2 mask. */ +#define EBI_ESRDLY2_bm (1<<5) +/* SDRAM Exit-Self-refresh-to-Active Delay bit 2 position. */ +#define EBI_ESRDLY2_bp 5 #define EBI_ROWCOLDLY_gm 0x07 /* SDRAM Row-to-Column Delay group mask. */ #define EBI_ROWCOLDLY_gp 0 /* SDRAM Row-to-Column Delay group position. */ @@ -5562,8 +5869,10 @@ IO Module Instances. Mapped to memory. #define TWI_SLAVE_DIEN_bm 0x20 /* Data Interrupt Enable bit mask. */ #define TWI_SLAVE_DIEN_bp 5 /* Data Interrupt Enable bit position. */ -#define TWI_SLAVE_APIEN_bm 0x10 /* Address/Stop Interrupt Enable bit mask. */ -#define TWI_SLAVE_APIEN_bp 4 /* Address/Stop Interrupt Enable bit position. */ +/* Address/Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_APIEN_bm 0x10 +/* Address/Stop Interrupt Enable bit position. */ +#define TWI_SLAVE_APIEN_bp 4 #define TWI_SLAVE_ENABLE_bm 0x08 /* Enable TWI Slave bit mask. */ #define TWI_SLAVE_ENABLE_bp 3 /* Enable TWI Slave bit position. */ @@ -6052,33 +6361,57 @@ IO Module Instances. Mapped to memory. /* TC0.INTCTRLB bit masks and bit positions */ -#define TC0_CCDINTLVL_gm 0xC0 /* Compare or Capture D Interrupt Level group mask. */ -#define TC0_CCDINTLVL_gp 6 /* Compare or Capture D Interrupt Level group position. */ -#define TC0_CCDINTLVL0_bm (1<<6) /* Compare or Capture D Interrupt Level bit 0 mask. */ -#define TC0_CCDINTLVL0_bp 6 /* Compare or Capture D Interrupt Level bit 0 position. */ -#define TC0_CCDINTLVL1_bm (1<<7) /* Compare or Capture D Interrupt Level bit 1 mask. */ -#define TC0_CCDINTLVL1_bp 7 /* Compare or Capture D Interrupt Level bit 1 position. */ - -#define TC0_CCCINTLVL_gm 0x30 /* Compare or Capture C Interrupt Level group mask. */ -#define TC0_CCCINTLVL_gp 4 /* Compare or Capture C Interrupt Level group position. */ -#define TC0_CCCINTLVL0_bm (1<<4) /* Compare or Capture C Interrupt Level bit 0 mask. */ -#define TC0_CCCINTLVL0_bp 4 /* Compare or Capture C Interrupt Level bit 0 position. */ -#define TC0_CCCINTLVL1_bm (1<<5) /* Compare or Capture C Interrupt Level bit 1 mask. */ -#define TC0_CCCINTLVL1_bp 5 /* Compare or Capture C Interrupt Level bit 1 position. */ - -#define TC0_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ -#define TC0_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ -#define TC0_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ -#define TC0_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ -#define TC0_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ -#define TC0_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ - -#define TC0_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ -#define TC0_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ -#define TC0_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ -#define TC0_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ -#define TC0_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ -#define TC0_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ +/* Compare or Capture D Interrupt Level group mask. */ +#define TC0_CCDINTLVL_gm 0xC0 +/* Compare or Capture D Interrupt Level group position. */ +#define TC0_CCDINTLVL_gp 6 +/* Compare or Capture D Interrupt Level bit 0 mask. */ +#define TC0_CCDINTLVL0_bm (1<<6) +/* Compare or Capture D Interrupt Level bit 0 position. */ +#define TC0_CCDINTLVL0_bp 6 +/* Compare or Capture D Interrupt Level bit 1 mask. */ +#define TC0_CCDINTLVL1_bm (1<<7) +/* Compare or Capture D Interrupt Level bit 1 position. */ +#define TC0_CCDINTLVL1_bp 7 + +/* Compare or Capture C Interrupt Level group mask. */ +#define TC0_CCCINTLVL_gm 0x30 + /* Compare or Capture C Interrupt Level group position. */ +#define TC0_CCCINTLVL_gp 4 +/* Compare or Capture C Interrupt Level bit 0 mask. */ +#define TC0_CCCINTLVL0_bm (1<<4) +/* Compare or Capture C Interrupt Level bit 0 position. */ +#define TC0_CCCINTLVL0_bp 4 + /* Compare or Capture C Interrupt Level bit 1 mask. */ +#define TC0_CCCINTLVL1_bm (1<<5) +/* Compare or Capture C Interrupt Level bit 1 position. */ +#define TC0_CCCINTLVL1_bp 5 + +/* Compare or Capture B Interrupt Level group mask. */ +#define TC0_CCBINTLVL_gm 0x0C +/* Compare or Capture B Interrupt Level group position. */ +#define TC0_CCBINTLVL_gp 2 +/* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC0_CCBINTLVL0_bm (1<<2) + /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC0_CCBINTLVL0_bp 2 +/* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC0_CCBINTLVL1_bm (1<<3) +/* Compare or Capture B Interrupt Level bit 1 position. */ +#define TC0_CCBINTLVL1_bp 3 + +/* Compare or Capture A Interrupt Level group mask. */ +#define TC0_CCAINTLVL_gm 0x03 +/* Compare or Capture A Interrupt Level group position. */ +#define TC0_CCAINTLVL_gp 0 +/* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC0_CCAINTLVL0_bm (1<<0) +/* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC0_CCAINTLVL0_bp 0 +/* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC0_CCAINTLVL1_bm (1<<1) +/* Compare or Capture A Interrupt Level bit 1 position. */ +#define TC0_CCAINTLVL1_bp 1 /* TC0.CTRLFCLR bit masks and bit positions */ @@ -6146,17 +6479,25 @@ IO Module Instances. Mapped to memory. /* TC0.INTFLAGS bit masks and bit positions */ -#define TC0_CCDIF_bm 0x80 /* Compare or Capture D Interrupt Flag bit mask. */ -#define TC0_CCDIF_bp 7 /* Compare or Capture D Interrupt Flag bit position. */ - -#define TC0_CCCIF_bm 0x40 /* Compare or Capture C Interrupt Flag bit mask. */ -#define TC0_CCCIF_bp 6 /* Compare or Capture C Interrupt Flag bit position. */ - -#define TC0_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ -#define TC0_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ - -#define TC0_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ -#define TC0_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ +/* Compare or Capture D Interrupt Flag bit mask. */ +#define TC0_CCDIF_bm 0x80 +/* Compare or Capture D Interrupt Flag bit position. */ +#define TC0_CCDIF_bp 7 + +/* Compare or Capture C Interrupt Flag bit mask. */ +#define TC0_CCCIF_bm 0x40 +/* Compare or Capture C Interrupt Flag bit position. */ +#define TC0_CCCIF_bp 6 + +/* Compare or Capture B Interrupt Flag bit mask. */ +#define TC0_CCBIF_bm 0x20 +/* Compare or Capture B Interrupt Flag bit position. */ +#define TC0_CCBIF_bp 5 + +/* Compare or Capture A Interrupt Flag bit mask. */ +#define TC0_CCAIF_bm 0x10 +/* Compare or Capture A Interrupt Flag bit position. */ +#define TC0_CCAIF_bp 4 #define TC0_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ #define TC0_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ @@ -6253,19 +6594,31 @@ IO Module Instances. Mapped to memory. /* TC1.INTCTRLB bit masks and bit positions */ -#define TC1_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ -#define TC1_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ -#define TC1_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ -#define TC1_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ -#define TC1_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ -#define TC1_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ - -#define TC1_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ -#define TC1_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ -#define TC1_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ -#define TC1_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ -#define TC1_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ -#define TC1_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ +/* Compare or Capture B Interrupt Level group mask. */ +#define TC1_CCBINTLVL_gm 0x0C +/* Compare or Capture B Interrupt Level group position. */ +#define TC1_CCBINTLVL_gp 2 +/* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC1_CCBINTLVL0_bm (1<<2) + /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC1_CCBINTLVL0_bp 2 +/* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC1_CCBINTLVL1_bm (1<<3) +/* Compare or Capture B Interrupt Level bit 1 position. */ +#define TC1_CCBINTLVL1_bp 3 + +/* Compare or Capture A Interrupt Level group mask. */ +#define TC1_CCAINTLVL_gm 0x03 +/* Compare or Capture A Interrupt Level group position. */ +#define TC1_CCAINTLVL_gp 0 +/* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC1_CCAINTLVL0_bm (1<<0) +/* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC1_CCAINTLVL0_bp 0 +/* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC1_CCAINTLVL1_bm (1<<1) +/* Compare or Capture A Interrupt Level bit 1 position. */ +#define TC1_CCAINTLVL1_bp 1 /* TC1.CTRLFCLR bit masks and bit positions */ @@ -6321,11 +6674,16 @@ IO Module Instances. Mapped to memory. /* TC1.INTFLAGS bit masks and bit positions */ -#define TC1_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ -#define TC1_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ -#define TC1_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ -#define TC1_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ +/* Compare or Capture B Interrupt Flag bit mask. */ +#define TC1_CCBIF_bm 0x20 +/* Compare or Capture B Interrupt Flag bit position. */ +#define TC1_CCBIF_bp 5 + +/* Compare or Capture A Interrupt Flag bit mask. */ +#define TC1_CCAIF_bm 0x10 +/* Compare or Capture A Interrupt Flag bit position. */ +#define TC1_CCAIF_bp 4 #define TC1_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ #define TC1_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ @@ -6341,22 +6699,32 @@ IO Module Instances. Mapped to memory. #define AWEX_CWCM_bm 0x10 /* Common Waveform Channel Mode bit mask. */ #define AWEX_CWCM_bp 4 /* Common Waveform Channel Mode bit position. */ -#define AWEX_DTICCDEN_bm 0x08 /* Dead Time Insertion Compare Channel D Enable bit mask. */ -#define AWEX_DTICCDEN_bp 3 /* Dead Time Insertion Compare Channel D Enable bit position. */ +/* Dead Time Insertion Compare Channel D Enable bit mask. */ +#define AWEX_DTICCDEN_bm 0x08 +/* Dead Time Insertion Compare Channel D Enable bit position. */ +#define AWEX_DTICCDEN_bp 3 -#define AWEX_DTICCCEN_bm 0x04 /* Dead Time Insertion Compare Channel C Enable bit mask. */ -#define AWEX_DTICCCEN_bp 2 /* Dead Time Insertion Compare Channel C Enable bit position. */ +/* Dead Time Insertion Compare Channel C Enable bit mask. */ +#define AWEX_DTICCCEN_bm 0x04 +/* Dead Time Insertion Compare Channel C Enable bit position. */ +#define AWEX_DTICCCEN_bp 2 -#define AWEX_DTICCBEN_bm 0x02 /* Dead Time Insertion Compare Channel B Enable bit mask. */ -#define AWEX_DTICCBEN_bp 1 /* Dead Time Insertion Compare Channel B Enable bit position. */ +/* Dead Time Insertion Compare Channel B Enable bit mask. */ +#define AWEX_DTICCBEN_bm 0x02 +/* Dead Time Insertion Compare Channel B Enable bit position. */ +#define AWEX_DTICCBEN_bp 1 -#define AWEX_DTICCAEN_bm 0x01 /* Dead Time Insertion Compare Channel A Enable bit mask. */ -#define AWEX_DTICCAEN_bp 0 /* Dead Time Insertion Compare Channel A Enable bit position. */ +/* Dead Time Insertion Compare Channel A Enable bit mask. */ +#define AWEX_DTICCAEN_bm 0x01 +/* Dead Time Insertion Compare Channel A Enable bit position. */ +#define AWEX_DTICCAEN_bp 0 /* AWEX.FDCTRL bit masks and bit positions */ -#define AWEX_FDDBD_bm 0x10 /* Fault Detect on Disable Break Disable bit mask. */ -#define AWEX_FDDBD_bp 4 /* Fault Detect on Disable Break Disable bit position. */ +/* Fault Detect on Disable Break Disable bit mask. */ +#define AWEX_FDDBD_bm 0x10 +/* Fault Detect on Disable Break Disable bit position. */ +#define AWEX_FDDBD_bp 4 #define AWEX_FDMODE_bm 0x04 /* Fault Detect Mode bit mask. */ #define AWEX_FDMODE_bp 2 /* Fault Detect Mode bit position. */ @@ -6373,11 +6741,15 @@ IO Module Instances. Mapped to memory. #define AWEX_FDF_bm 0x04 /* Fault Detect Flag bit mask. */ #define AWEX_FDF_bp 2 /* Fault Detect Flag bit position. */ -#define AWEX_DTHSBUFV_bm 0x02 /* Dead Time High Side Buffer Valid bit mask. */ -#define AWEX_DTHSBUFV_bp 1 /* Dead Time High Side Buffer Valid bit position. */ +/* Dead Time High Side Buffer Valid bit mask. */ +#define AWEX_DTHSBUFV_bm 0x02 +/* Dead Time High Side Buffer Valid bit position. */ +#define AWEX_DTHSBUFV_bp 1 -#define AWEX_DTLSBUFV_bm 0x01 /* Dead Time Low Side Buffer Valid bit mask. */ -#define AWEX_DTLSBUFV_bp 0 /* Dead Time Low Side Buffer Valid bit position. */ +/* Dead Time Low Side Buffer Valid bit mask. */ +#define AWEX_DTLSBUFV_bm 0x01 +/* Dead Time Low Side Buffer Valid bit position. */ +#define AWEX_DTLSBUFV_bp 0 /* HIRES.CTRL bit masks and bit positions */ @@ -6423,17 +6795,25 @@ IO Module Instances. Mapped to memory. #define USART_TXCINTLVL_gm 0x0C /* Transmit Interrupt Level group mask. */ #define USART_TXCINTLVL_gp 2 /* Transmit Interrupt Level group position. */ -#define USART_TXCINTLVL0_bm (1<<2) /* Transmit Interrupt Level bit 0 mask. */ +/* Transmit Interrupt Level bit 0 mask. */ +#define USART_TXCINTLVL0_bm (1<<2) #define USART_TXCINTLVL0_bp 2 /* Transmit Interrupt Level bit 0 position. */ -#define USART_TXCINTLVL1_bm (1<<3) /* Transmit Interrupt Level bit 1 mask. */ +/* Transmit Interrupt Level bit 1 mask. */ +#define USART_TXCINTLVL1_bm (1<<3) #define USART_TXCINTLVL1_bp 3 /* Transmit Interrupt Level bit 1 position. */ -#define USART_DREINTLVL_gm 0x03 /* Data Register Empty Interrupt Level group mask. */ -#define USART_DREINTLVL_gp 0 /* Data Register Empty Interrupt Level group position. */ -#define USART_DREINTLVL0_bm (1<<0) /* Data Register Empty Interrupt Level bit 0 mask. */ -#define USART_DREINTLVL0_bp 0 /* Data Register Empty Interrupt Level bit 0 position. */ -#define USART_DREINTLVL1_bm (1<<1) /* Data Register Empty Interrupt Level bit 1 mask. */ -#define USART_DREINTLVL1_bp 1 /* Data Register Empty Interrupt Level bit 1 position. */ +/* Data Register Empty Interrupt Level group mask. */ +#define USART_DREINTLVL_gm 0x03 +/* Data Register Empty Interrupt Level group position. */ +#define USART_DREINTLVL_gp 0 +/* Data Register Empty Interrupt Level bit 0 mask. */ +#define USART_DREINTLVL0_bm (1<<0) +/* Data Register Empty Interrupt Level bit 0 position. */ +#define USART_DREINTLVL0_bp 0 +/* Data Register Empty Interrupt Level bit 1 mask. */ +#define USART_DREINTLVL1_bm (1<<1) +/* Data Register Empty Interrupt Level bit 1 position. */ +#define USART_DREINTLVL1_bp 1 /* USART.CTRLB bit masks and bit positions */ @@ -6446,8 +6826,10 @@ IO Module Instances. Mapped to memory. #define USART_CLK2X_bm 0x04 /* Double transmission speed bit mask. */ #define USART_CLK2X_bp 2 /* Double transmission speed bit position. */ -#define USART_MPCM_bm 0x02 /* Multi-processor Communication Mode bit mask. */ -#define USART_MPCM_bp 1 /* Multi-processor Communication Mode bit position. */ +/* Multi-processor Communication Mode bit mask. */ +#define USART_MPCM_bm 0x02 +/* Multi-processor Communication Mode bit position. */ +#define USART_MPCM_bp 1 #define USART_TXB8_bm 0x01 /* Transmit bit 8 bit mask. */ #define USART_TXB8_bp 0 /* Transmit bit 8 bit position. */ @@ -6484,22 +6866,38 @@ IO Module Instances. Mapped to memory. /* USART.BAUDCTRLA bit masks and bit positions */ #define USART_BSEL_gm 0xFF /* Baud Rate Selection Bits [7:0] group mask. */ #define USART_BSEL_gp 0 /* Baud Rate Selection Bits [7:0] group position. */ -#define USART_BSEL0_bm (1<<0) /* Baud Rate Selection Bits [7:0] bit 0 mask. */ -#define USART_BSEL0_bp 0 /* Baud Rate Selection Bits [7:0] bit 0 position. */ -#define USART_BSEL1_bm (1<<1) /* Baud Rate Selection Bits [7:0] bit 1 mask. */ -#define USART_BSEL1_bp 1 /* Baud Rate Selection Bits [7:0] bit 1 position. */ -#define USART_BSEL2_bm (1<<2) /* Baud Rate Selection Bits [7:0] bit 2 mask. */ -#define USART_BSEL2_bp 2 /* Baud Rate Selection Bits [7:0] bit 2 position. */ -#define USART_BSEL3_bm (1<<3) /* Baud Rate Selection Bits [7:0] bit 3 mask. */ -#define USART_BSEL3_bp 3 /* Baud Rate Selection Bits [7:0] bit 3 position. */ -#define USART_BSEL4_bm (1<<4) /* Baud Rate Selection Bits [7:0] bit 4 mask. */ -#define USART_BSEL4_bp 4 /* Baud Rate Selection Bits [7:0] bit 4 position. */ -#define USART_BSEL5_bm (1<<5) /* Baud Rate Selection Bits [7:0] bit 5 mask. */ -#define USART_BSEL5_bp 5 /* Baud Rate Selection Bits [7:0] bit 5 position. */ -#define USART_BSEL6_bm (1<<6) /* Baud Rate Selection Bits [7:0] bit 6 mask. */ -#define USART_BSEL6_bp 6 /* Baud Rate Selection Bits [7:0] bit 6 position. */ -#define USART_BSEL7_bm (1<<7) /* Baud Rate Selection Bits [7:0] bit 7 mask. */ -#define USART_BSEL7_bp 7 /* Baud Rate Selection Bits [7:0] bit 7 position. */ +/* Baud Rate Selection Bits [7:0] bit 0 mask. */ +#define USART_BSEL0_bm (1<<0) +/* Baud Rate Selection Bits [7:0] bit 0 position. */ +#define USART_BSEL0_bp 0 +/* Baud Rate Selection Bits [7:0] bit 1 mask. */ +#define USART_BSEL1_bm (1<<1) +/* Baud Rate Selection Bits [7:0] bit 1 position. */ +#define USART_BSEL1_bp 1 +/* Baud Rate Selection Bits [7:0] bit 2 mask. */ +#define USART_BSEL2_bm (1<<2) +/* Baud Rate Selection Bits [7:0] bit 2 position. */ +#define USART_BSEL2_bp 2 +/* Baud Rate Selection Bits [7:0] bit 3 mask. */ +#define USART_BSEL3_bm (1<<3) +/* Baud Rate Selection Bits [7:0] bit 3 position. */ +#define USART_BSEL3_bp 3 +/* Baud Rate Selection Bits [7:0] bit 4 mask. */ +#define USART_BSEL4_bm (1<<4) +/* Baud Rate Selection Bits [7:0] bit 4 position. */ +#define USART_BSEL4_bp 4 +/* Baud Rate Selection Bits [7:0] bit 5 mask. */ +#define USART_BSEL5_bm (1<<5) +/* Baud Rate Selection Bits [7:0] bit 5 position. */ +#define USART_BSEL5_bp 5 +/* Baud Rate Selection Bits [7:0] bit 6 mask. */ +#define USART_BSEL6_bm (1<<6) +/* Baud Rate Selection Bits [7:0] bit 6 position. */ +#define USART_BSEL6_bp 6 +/* Baud Rate Selection Bits [7:0] bit 7 mask. */ +#define USART_BSEL7_bm (1<<7) +/* Baud Rate Selection Bits [7:0] bit 7 position. */ +#define USART_BSEL7_bp 7 /* USART.BAUDCTRLB bit masks and bit positions */ @@ -6640,14 +7038,19 @@ IO Module Instances. Mapped to memory. #define PIN6_bp 6 #define PIN7_bm 0x80 #define PIN7_bp 7 +/** @} */ - -/* ========== Interrupt Vector Definitions ========== */ +/** + * @name Interrupt Vector Definitions + * + */ +/**@{**/ /* Vector 0 is the reset vector */ /* OSC interrupt vectors */ #define OSC_XOSCF_vect_num 1 -#define OSC_XOSCF_vect _VECTOR(1) /* External Oscillator Failure Interrupt (NMI) */ +/* External Oscillator Failure Interrupt (NMI) */ +#define OSC_XOSCF_vect _VECTOR(1) /* PORTC interrupt vectors */ #define PORTC_INT0_vect_num 2 @@ -6717,7 +7120,8 @@ IO Module Instances. Mapped to memory. #define USARTC0_DRE_vect_num 26 #define USARTC0_DRE_vect _VECTOR(26) /* Data Register Empty Interrupt */ #define USARTC0_TXC_vect_num 27 -#define USARTC0_TXC_vect _VECTOR(27) /* Transmission Complete Interrupt */ +/* Transmission Complete Interrupt */ +#define USARTC0_TXC_vect _VECTOR(27) /* USARTC1 interrupt vectors */ #define USARTC1_RXC_vect_num 28 @@ -6725,7 +7129,8 @@ IO Module Instances. Mapped to memory. #define USARTC1_DRE_vect_num 29 #define USARTC1_DRE_vect _VECTOR(29) /* Data Register Empty Interrupt */ #define USARTC1_TXC_vect_num 30 -#define USARTC1_TXC_vect _VECTOR(30) /* Transmission Complete Interrupt */ + /* Transmission Complete Interrupt */ +#define USARTC1_TXC_vect _VECTOR(30) /* AES interrupt vectors */ #define AES_INT_vect_num 31 @@ -6807,7 +7212,8 @@ IO Module Instances. Mapped to memory. #define USARTE0_DRE_vect_num 59 #define USARTE0_DRE_vect _VECTOR(59) /* Data Register Empty Interrupt */ #define USARTE0_TXC_vect_num 60 -#define USARTE0_TXC_vect _VECTOR(60) /* Transmission Complete Interrupt */ +/* Transmission Complete Interrupt */ +#define USARTE0_TXC_vect _VECTOR(60) /* USARTE1 interrupt vectors */ #define USARTE1_RXC_vect_num 61 @@ -6815,7 +7221,8 @@ IO Module Instances. Mapped to memory. #define USARTE1_DRE_vect_num 62 #define USARTE1_DRE_vect _VECTOR(62) /* Data Register Empty Interrupt */ #define USARTE1_TXC_vect_num 63 -#define USARTE1_TXC_vect _VECTOR(63) /* Transmission Complete Interrupt */ +/* Transmission Complete Interrupt */ +#define USARTE1_TXC_vect _VECTOR(63) /* PORTD interrupt vectors */ #define PORTD_INT0_vect_num 64 @@ -6887,7 +7294,8 @@ IO Module Instances. Mapped to memory. #define USARTD0_DRE_vect_num 89 #define USARTD0_DRE_vect _VECTOR(89) /* Data Register Empty Interrupt */ #define USARTD0_TXC_vect_num 90 -#define USARTD0_TXC_vect _VECTOR(90) /* Transmission Complete Interrupt */ +/* Transmission Complete Interrupt */ +#define USARTD0_TXC_vect _VECTOR(90) /* USARTD1 interrupt vectors */ #define USARTD1_RXC_vect_num 91 @@ -6895,7 +7303,8 @@ IO Module Instances. Mapped to memory. #define USARTD1_DRE_vect_num 92 #define USARTD1_DRE_vect _VECTOR(92) /* Data Register Empty Interrupt */ #define USARTD1_TXC_vect_num 93 -#define USARTD1_TXC_vect _VECTOR(93) /* Transmission Complete Interrupt */ +/* Transmission Complete Interrupt */ +#define USARTD1_TXC_vect _VECTOR(93) /* PORTQ interrupt vectors */ #define PORTQ_INT0_vect_num 94 @@ -6965,25 +7374,32 @@ IO Module Instances. Mapped to memory. #define USARTF0_RXC_vect_num 119 #define USARTF0_RXC_vect _VECTOR(119) /* Reception Complete Interrupt */ #define USARTF0_DRE_vect_num 120 -#define USARTF0_DRE_vect _VECTOR(120) /* Data Register Empty Interrupt */ +/* Data Register Empty Interrupt */ +#define USARTF0_DRE_vect _VECTOR(120) #define USARTF0_TXC_vect_num 121 -#define USARTF0_TXC_vect _VECTOR(121) /* Transmission Complete Interrupt */ +/* Transmission Complete Interrupt */ +#define USARTF0_TXC_vect _VECTOR(121) /* USARTF1 interrupt vectors */ #define USARTF1_RXC_vect_num 122 #define USARTF1_RXC_vect _VECTOR(122) /* Reception Complete Interrupt */ #define USARTF1_DRE_vect_num 123 -#define USARTF1_DRE_vect _VECTOR(123) /* Data Register Empty Interrupt */ +/* Data Register Empty Interrupt */ +#define USARTF1_DRE_vect _VECTOR(123) #define USARTF1_TXC_vect_num 124 -#define USARTF1_TXC_vect _VECTOR(124) /* Transmission Complete Interrupt */ +/* Transmission Complete Interrupt */ +#define USARTF1_TXC_vect _VECTOR(124) #define _VECTOR_SIZE 4 /* Size of individual vector. */ #define _VECTORS_SIZE (125 * _VECTOR_SIZE) +/** @} */ - -/* ========== Constants ========== */ - +/** + * @name Constants + * + */ +/**@{**/ #define PROGMEM_START (0x0000) #define PROGMEM_SIZE (139264) #define PROGMEM_PAGE_SIZE (512) @@ -6997,7 +7413,8 @@ IO Module Instances. Mapped to memory. #define APPTABLE_SECTION_START (0x1E000) #define APPTABLE_SECTION_SIZE (8192) #define APPTABLE_SECTION_PAGE_SIZE (512) -#define APPTABLE_SECTION_END (APPTABLE_SECTION_START + APPTABLE_SECTION_SIZE - 1) +#define APPTABLE_SECTION_END (APPTABLE_SECTION_START + \ + APPTABLE_SECTION_SIZE - 1) #define BOOT_SECTION_START (0x20000) #define BOOT_SECTION_SIZE (8192) @@ -7052,12 +7469,14 @@ IO Module Instances. Mapped to memory. #define USER_SIGNATURES_START (0x0000) #define USER_SIGNATURES_SIZE (512) #define USER_SIGNATURES_PAGE_SIZE (0) -#define USER_SIGNATURES_END (USER_SIGNATURES_START + USER_SIGNATURES_SIZE - 1) +#define USER_SIGNATURES_END (USER_SIGNATURES_START + \ + USER_SIGNATURES_SIZE - 1) #define PROD_SIGNATURES_START (0x0000) #define PROD_SIGNATURES_SIZE (52) #define PROD_SIGNATURES_PAGE_SIZE (0) -#define PROD_SIGNATURES_END (PROD_SIGNATURES_START + PROD_SIGNATURES_SIZE - 1) +#define PROD_SIGNATURES_END (PROD_SIGNATURES_START + \ + PROD_SIGNATURES_SIZE - 1) #define FLASHEND PROGMEM_END #define SPM_PAGESIZE PROGMEM_PAGE_SIZE @@ -7069,9 +7488,13 @@ IO Module Instances. Mapped to memory. #define XRAMEND EXTERNAL_SRAM_END #define E2END EEPROM_END #define E2PAGESIZE EEPROM_PAGE_SIZE +/** @} */ - -/* ========== Fuses ========== */ +/** + * @name Fuses + * + */ +/**@{**/ #define FUSE_MEMORY_SIZE 6 /* Fuse Byte 0 */ @@ -7090,18 +7513,27 @@ IO Module Instances. Mapped to memory. #define FUSE_WDP1 (unsigned char)~_BV(1) /* Watchdog Timeout Period Bit 1 */ #define FUSE_WDP2 (unsigned char)~_BV(2) /* Watchdog Timeout Period Bit 2 */ #define FUSE_WDP3 (unsigned char)~_BV(3) /* Watchdog Timeout Period Bit 3 */ -#define FUSE_WDWP0 (unsigned char)~_BV(4) /* Watchdog Window Timeout Period Bit 0 */ -#define FUSE_WDWP1 (unsigned char)~_BV(5) /* Watchdog Window Timeout Period Bit 1 */ -#define FUSE_WDWP2 (unsigned char)~_BV(6) /* Watchdog Window Timeout Period Bit 2 */ -#define FUSE_WDWP3 (unsigned char)~_BV(7) /* Watchdog Window Timeout Period Bit 3 */ +/* Watchdog Window Timeout Period Bit 0 */ +#define FUSE_WDWP0 (unsigned char)~_BV(4) +/* Watchdog Window Timeout Period Bit 1 */ +#define FUSE_WDWP1 (unsigned char)~_BV(5) +/* Watchdog Window Timeout Period Bit 2 */ +#define FUSE_WDWP2 (unsigned char)~_BV(6) +/* Watchdog Window Timeout Period Bit 3 */ +#define FUSE_WDWP3 (unsigned char)~_BV(7) #define FUSE1_DEFAULT (0xFF) /* Fuse Byte 2 */ -#define FUSE_BODPD0 (unsigned char)~_BV(0) /* BOD Operation in Power-Down Mode Bit 0 */ -#define FUSE_BODPD1 (unsigned char)~_BV(1) /* BOD Operation in Power-Down Mode Bit 1 */ -#define FUSE_BODACT0 (unsigned char)~_BV(2) /* BOD Operation in Active Mode Bit 0 */ -#define FUSE_BODACT1 (unsigned char)~_BV(3) /* BOD Operation in Active Mode Bit 1 */ -#define FUSE_BOOTRST (unsigned char)~_BV(6) /* Boot Loader Section Reset Vector */ +/* BOD Operation in Power-Down Mode Bit 0 */ +#define FUSE_BODPD0 (unsigned char)~_BV(0) +/* BOD Operation in Power-Down Mode Bit 1 */ +#define FUSE_BODPD1 (unsigned char)~_BV(1) +/* BOD Operation in Active Mode Bit 0 */ +#define FUSE_BODACT0 (unsigned char)~_BV(2) +/* BOD Operation in Active Mode Bit 1 */ +#define FUSE_BODACT1 (unsigned char)~_BV(3) +/* Boot Loader Section Reset Vector */ +#define FUSE_BOOTRST (unsigned char)~_BV(6) #define FUSE_DVSDON (unsigned char)~_BV(7) /* Spike Detector Enable */ #define FUSE2_DEFAULT (0xFF) @@ -7115,25 +7547,37 @@ IO Module Instances. Mapped to memory. #define FUSE4_DEFAULT (0xFF) /* Fuse Byte 5 */ -#define FUSE_BODLVL0 (unsigned char)~_BV(0) /* Brown Out Detection Voltage Level Bit 0 */ -#define FUSE_BODLVL1 (unsigned char)~_BV(1) /* Brown Out Detection Voltage Level Bit 1 */ -#define FUSE_BODLVL2 (unsigned char)~_BV(2) /* Brown Out Detection Voltage Level Bit 2 */ -#define FUSE_EESAVE (unsigned char)~_BV(3) /* Preserve EEPROM Through Chip Erase */ +/* Brown Out Detection Voltage Level Bit 0 */ +#define FUSE_BODLVL0 (unsigned char)~_BV(0) +/* Brown Out Detection Voltage Level Bit 1 */ +#define FUSE_BODLVL1 (unsigned char)~_BV(1) +/* Brown Out Detection Voltage Level Bit 2 */ +#define FUSE_BODLVL2 (unsigned char)~_BV(2) +/* Preserve EEPROM Through Chip Erase */ +#define FUSE_EESAVE (unsigned char)~_BV(3) #define FUSE5_DEFAULT (0xFF) +/** @} */ - -/* ========== Lock Bits ========== */ +/** + * @name Lock Bits + * + */ +/**@{**/ #define __LOCK_BITS_EXIST #define __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST #define __BOOT_LOCK_APPLICATION_BITS_EXIST #define __BOOT_LOCK_BOOT_BITS_EXIST +/** @} */ - -/* ========== Signature ========== */ +/** + * @name Signature + * + */ +/**@{**/ #define SIGNATURE_0 0x1E #define SIGNATURE_1 0x97 #define SIGNATURE_2 0x4C - +/** @} */ #endif /* _AVR_ATxmega128A1_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iox128a3.h b/cpukit/score/cpu/avr/avr/iox128a3.h index 9ec0cd8cc2..e5edf62944 100644 --- a/cpukit/score/cpu/avr/avr/iox128a3.h +++ b/cpukit/score/cpu/avr/avr/iox128a3.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox128a3.h + * + * @brief Definitions for ATxmega128A3 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox128a3.h - definitions for ATxmega128A3 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox128a3.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega128A3_H_ #define _AVR_ATxmega128A3_H_ 1 +/** + * @defgroup Avr_iox128a3 ATxmega128A3 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Ungrouped common registers */ #define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -6437,21 +6448,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -6885,5 +6896,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_2 0x42 +/**@}*/ #endif /* _AVR_ATxmega128A3_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iox16a4.h b/cpukit/score/cpu/avr/avr/iox16a4.h index 1fcaab401f..cff1d53360 100644 --- a/cpukit/score/cpu/avr/avr/iox16a4.h +++ b/cpukit/score/cpu/avr/avr/iox16a4.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox16a4.h + * + * @brief Definitions for ATxmega16A4 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox16a4.h - definitions for ATxmega16A4 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,8 +46,14 @@ # define _AVR_IOXXX_H_ "iox16a4.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif +/** + * @defgroup Avr_iox16a4 ATxmega16A4 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_ATxmega16A4_H_ #define _AVR_ATxmega16A4_H_ 1 @@ -6251,21 +6262,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -6640,5 +6651,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_2 0x41 +/**@}*/ #endif /* _AVR_ATxmega16A4_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iox16d4.h b/cpukit/score/cpu/avr/avr/iox16d4.h index dac0bbad29..0bb088759c 100644 --- a/cpukit/score/cpu/avr/avr/iox16d4.h +++ b/cpukit/score/cpu/avr/avr/iox16d4.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox16d4.h + * + * @brief Definitions for ATxmega16D4 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox16d4.h - definitions for ATxmega16D4 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox16d4.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega16D4_H_ #define _AVR_ATxmega16D4_H_ 1 +/** + * @defgroup Avr_iox16d4 ATxmega16D4 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Ungrouped common registers */ #define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -5218,21 +5229,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -5537,5 +5548,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_2 0x42 +/**@}*/ #endif /* _AVR_ATxmega16D4_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iox192a3.h b/cpukit/score/cpu/avr/avr/iox192a3.h index 9da95a119c..e0f7c26ab2 100644 --- a/cpukit/score/cpu/avr/avr/iox192a3.h +++ b/cpukit/score/cpu/avr/avr/iox192a3.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox192a3.h + * + * @brief Definitions for ATxmega192A3 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox192a3.h - definitions for ATxmega192A3 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox192a3.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega192A3_H_ #define _AVR_ATxmega192A3_H_ 1 +/** + * @defgroup Avr_iox192a3 ATxmega192A3 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Ungrouped common registers */ #define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -6437,21 +6448,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -6885,5 +6896,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_2 0x44 +/**@}*/ #endif /* _AVR_ATxmega192A3_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iox192d3.h b/cpukit/score/cpu/avr/avr/iox192d3.h index f36fc58f9f..e29356e3cf 100644 --- a/cpukit/score/cpu/avr/avr/iox192d3.h +++ b/cpukit/score/cpu/avr/avr/iox192d3.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox192d3.h + * + * @brief Definitions for ATxmega192D3 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox192d3.h - definitions for ATxmega192D3 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox192d3.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega192D3_H_ #define _AVR_ATxmega192D3_H_ 1 +/** + * @defgroup Avr_iox192d3 ATxmega192D3 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Ungrouped common registers */ #define GPIOR0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -5294,21 +5305,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -5640,6 +5651,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_1 0x97 #define SIGNATURE_2 0x49 - +/**@}*/ #endif /* _AVR_ATxmega192D3_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iox256a3b.h b/cpukit/score/cpu/avr/avr/iox256a3b.h index 69e29f6bee..deee492cca 100644 --- a/cpukit/score/cpu/avr/avr/iox256a3b.h +++ b/cpukit/score/cpu/avr/avr/iox256a3b.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox256a3b.h + * + * @brief Definitions for ATxmega256A3B + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox256a3b.h - definitions for ATxmega256A3B */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox256a3b.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega256A3B_H_ #define _AVR_ATxmega256A3B_H_ 1 +/** + * @defgroup Avr_iox256a3b ATxmega256A3B Definitions + * + * @ingroup avr + */ +/**@{*/ /* Ungrouped common registers */ #define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -6451,21 +6462,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -6887,5 +6898,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_2 0x43 +/**@}*/ #endif /* _AVR_ATxmega256A3B_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iox256d3.h b/cpukit/score/cpu/avr/avr/iox256d3.h index 83d242f865..a49879811d 100644 --- a/cpukit/score/cpu/avr/avr/iox256d3.h +++ b/cpukit/score/cpu/avr/avr/iox256d3.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox256d3.h + * + * @brief Definitions for ATxmega256D3 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox256d3.h - definitions for ATxmega256D3 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,19 @@ # define _AVR_IOXXX_H_ "iox256d3.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega256D3_H_ #define _AVR_ATxmega256D3_H_ 1 +/** + * @defgroup AvrDef_iox256d3 ATxmega256D3 Definitions + * + * @ingroup avr + * + */ +/**@{**/ /* Ungrouped common registers */ #define GPIOR0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -5103,21 +5115,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -5451,5 +5463,6 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_2 0x44 +/** @} */ #endif /* _AVR_ATxmega256D3_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iox32a4.h b/cpukit/score/cpu/avr/avr/iox32a4.h index 7cbf7de2e7..f0eba4ecc0 100644 --- a/cpukit/score/cpu/avr/avr/iox32a4.h +++ b/cpukit/score/cpu/avr/avr/iox32a4.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox32a4.h + * + * @brief Definitions for ATxmega32A4 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox32a4.h - definitions for ATxmega32A4 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox32a4.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega32A4_H_ #define _AVR_ATxmega32A4_H_ 1 +/** + * @defgroup Avr_iox32a4 ATxmega32A4 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Ungrouped common registers */ #define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -6251,21 +6262,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -6640,5 +6651,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_2 0x41 +/**@}*/ #endif /* _AVR_ATxmega32A4_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iox32d4.h b/cpukit/score/cpu/avr/avr/iox32d4.h index 7f7d710704..248e32cadf 100644 --- a/cpukit/score/cpu/avr/avr/iox32d4.h +++ b/cpukit/score/cpu/avr/avr/iox32d4.h @@ -1,6 +1,13 @@ +/** + * @file + * + * @brief Definitions for ATxmega32D4 + * + * This file should only be included from <avr/io.h>, never directly. + */ + /* Copyright (c) 2009 Atmel Corporation All rights reserved. - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -47,6 +54,14 @@ #ifndef _AVR_ATxmega32D4_H_ #define _AVR_ATxmega32D4_H_ 1 +/** + * @defgroup AvrDef_iox32d4 ATxmega32D4 Definitions + * + * @ingroup avr + * + */ +/**@{**/ + /* Ungrouped common registers */ #define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -5539,6 +5554,7 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_1 0x95 #define SIGNATURE_2 0x42 +/** @} */ #endif /* _AVR_ATxmega32D4_H_ */ diff --git a/cpukit/score/cpu/avr/avr/iox64a1.h b/cpukit/score/cpu/avr/avr/iox64a1.h index ba9d4c1a8d..73acf1afdc 100644 --- a/cpukit/score/cpu/avr/avr/iox64a1.h +++ b/cpukit/score/cpu/avr/avr/iox64a1.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox64a1.h + * + * @brief Definitions for ATxmega64A1 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox64a1.h - definitions for ATxmega64A1 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox64a1.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega64A1_H_ #define _AVR_ATxmega64A1_H_ 1 +/** + * @defgroup Avr_iox64a1 ATxmega64A1 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Ungrouped common registers */ #define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -6624,21 +6635,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -7135,5 +7146,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_2 0x4E +/**@}*/ #endif /* _AVR_ATxmega64A1_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iox64a3.h b/cpukit/score/cpu/avr/avr/iox64a3.h index 7abb12a732..a3a73a44e9 100644 --- a/cpukit/score/cpu/avr/avr/iox64a3.h +++ b/cpukit/score/cpu/avr/avr/iox64a3.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox64a3.h + * + * @brief Definitions for ATxmega64A3 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox64a3.h - definitions for ATxmega64A3 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox64a3.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega64A3_H_ #define _AVR_ATxmega64A3_H_ 1 +/** + * @defgroup Avr_iox64a3 ATxmega64A3 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Ungrouped common registers */ #define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -6437,21 +6448,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -6884,6 +6895,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x42 - +/**@}*/ #endif /* _AVR_ATxmega64A3_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/iox64d3.h b/cpukit/score/cpu/avr/avr/iox64d3.h index b4954f49dc..5a0bdb5584 100644 --- a/cpukit/score/cpu/avr/avr/iox64d3.h +++ b/cpukit/score/cpu/avr/avr/iox64d3.h @@ -1,37 +1,42 @@ -/* Copyright (c) 2009 Atmel Corporation - All rights reserved. +/** + * @file avr/iox64d3.h + * + * @brief Definitions for ATxmega64D3 + * + * This file should only be included from <avr/io.h>, never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/iox64d3.h - definitions for ATxmega64D3 */ - -/* This file should only be included from <avr/io.h>, never directly. */ +/* + * Copyright (c) 2009 Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_IO_H_ # error "Include <avr/io.h> instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox64d3.h" #else # error "Attempt to include more than one <avr/ioXXX.h> file." -#endif +#endif #ifndef _AVR_ATxmega64D3_H_ #define _AVR_ATxmega64D3_H_ 1 +/** + * @defgroup Avr_iox64d3 ATxmega64D3 Definitions + * + * @ingroup avr + */ +/**@{*/ /* Ungrouped common registers */ #define GPIOR0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ @@ -5308,21 +5319,21 @@ IO Module Instances. Mapped to memory. // Generic Port Pins -#define PIN0_bm 0x01 +#define PIN0_bm 0x01 #define PIN0_bp 0 #define PIN1_bm 0x02 #define PIN1_bp 1 -#define PIN2_bm 0x04 +#define PIN2_bm 0x04 #define PIN2_bp 2 -#define PIN3_bm 0x08 +#define PIN3_bm 0x08 #define PIN3_bp 3 -#define PIN4_bm 0x10 +#define PIN4_bm 0x10 #define PIN4_bp 4 -#define PIN5_bm 0x20 +#define PIN5_bm 0x20 #define PIN5_bp 5 -#define PIN6_bm 0x40 +#define PIN6_bm 0x40 #define PIN6_bp 6 -#define PIN7_bm 0x80 +#define PIN7_bm 0x80 #define PIN7_bp 7 @@ -5654,6 +5665,5 @@ IO Module Instances. Mapped to memory. #define SIGNATURE_1 0x96 #define SIGNATURE_2 0x4A - +/**@}*/ #endif /* _AVR_ATxmega64D3_H_ */ - diff --git a/cpukit/score/cpu/avr/avr/lock.h b/cpukit/score/cpu/avr/avr/lock.h index 5ffb769513..182f0f4cd8 100644 --- a/cpukit/score/cpu/avr/avr/lock.h +++ b/cpukit/score/cpu/avr/avr/lock.h @@ -1,187 +1,191 @@ -/* Copyright (c) 2007, Atmel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/* avr/lock.h - Lock Bits API */ +/** + * @file avr/lock.h + * + * @brief Lock Bits API + * \par Introduction + * + * The Lockbit API allows a user to specify the lockbit settings for the + * specific AVR device they are compiling for. These lockbit settings will be + * placed in a special section in the ELF output file, after linking. + * + * Programming tools can take advantage of the lockbit information embedded in + * the ELF file, by extracting this information and determining if the lockbits + * need to be programmed after programming the Flash and EEPROM memories. + * This also allows a single ELF file to contain all the + * information needed to program an AVR. + * + * To use the Lockbit API, include the <avr/io.h> header file, which in turn + * automatically includes the individual I/O header file and the <avr/lock.h> + * file. These other two files provides everything necessary to set the AVR + * lockbits. + * + * \par Lockbit API + * + * Each I/O header file may define up to 3 macros that controls what kinds + * of lockbits are available to the user. + * + * If __LOCK_BITS_EXIST is defined, then two lock bits are available to the + * user and 3 mode settings are defined for these two bits. + * + * If __BOOT_LOCK_BITS_0_EXIST is defined, then the two BLB0 lock bits are + * available to the user and 4 mode settings are defined for these two bits. + * + * If __BOOT_LOCK_BITS_1_EXIST is defined, then the two BLB1 lock bits are + * available to the user and 4 mode settings are defined for these two bits. + * + * If __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST is defined then two lock bits + * are available to set the locking mode for the Application Table Section + * (which is used in the XMEGA family). + * + * If __BOOT_LOCK_APPLICATION_BITS_EXIST is defined then two lock bits are + * available to set the locking mode for the Application Section (which is used + * in the XMEGA family). + * + * If __BOOT_LOCK_BOOT_BITS_EXIST is defined then two lock bits are available + * to set the locking mode for the Boot Loader Section (which is used in the + * XMEGA family). + * + * The AVR lockbit modes have inverted values, logical 1 for an unprogrammed + * (disabled) bit and logical 0 for a programmed (enabled) bit. The defined + * macros for each individual lock bit represent this in their definition by a + * bit-wise inversion of a mask. For example, the LB_MODE_3 macro is defined + * as: + * \code + * #define LB_MODE_3 (0xFC) + * \endcode + * + * To combine the lockbit mode macros together to represent a whole byte, + * use the bitwise AND operator, like so: + * \code + * (LB_MODE_3 & BLB0_MODE_2) + * \endcode + * + * <avr/lock.h> also defines a macro that provides a default lockbit value: + * LOCKBITS_DEFAULT which is defined to be 0xFF. + * + * See the AVR device specific datasheet for more details about these + * lock bits and the available mode settings. + * + * A convenience macro, LOCKMEM, is defined as a GCC attribute for a + * custom-named section of ".lock". + * + * A convenience macro, LOCKBITS, is defined that declares a variable, __lock, + * of type unsigned char with the attribute defined by LOCKMEM. This variable + * allows the end user to easily set the lockbit data. + * + * \note If a device-specific I/O header file has previously defined LOCKMEM, + * then LOCKMEM is not redefined. If a device-specific I/O header file has + * previously defined LOCKBITS, then LOCKBITS is not redefined. LOCKBITS is + * currently known to be defined in the I/O header files for the XMEGA devices. + * + * \par API Usage Example + * + * Putting all of this together is easy: + * + * \code + * #include <avr/io.h> + * + * LOCKBITS = (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); + * + * int main(void) + * { + * return 0; + * } + * \endcode + * + * Or: + * + * \code + * #include <avr/io.h> + * + * unsigned char __lock __attribute__((section (".lock"))) = + * (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); + * + * int main(void) + * { + * return 0; + * } + * \endcode + * + * + * + * However there are a number of caveats that you need to be aware of to + * use this API properly. + * + * Be sure to include <avr/io.h> to get all of the definitions for the API. + * The LOCKBITS macro defines a global variable to store the lockbit data. This + * variable is assigned to its own linker section. Assign the desired lockbit + * values immediately in the variable initialization. + * + * The .lock section in the ELF file will get its values from the initial + * variable assignment ONLY. This means that you can NOT assign values to + * this variable in functions and the new values will not be put into the + * ELF .lock section. + * + * The global variable is declared in the LOCKBITS macro has two leading + * underscores, which means that it is reserved for the "implementation", + * meaning the library, so it will not conflict with a user-named variable. + * + * You must initialize the lockbit variable to some meaningful value, even + * if it is the default value. This is because the lockbits default to a + * logical 1, meaning unprogrammed. Normal uninitialized data defaults to all + * locgial zeros. So it is vital that all lockbits are initialized, even with + * default data. If they are not, then the lockbits may not programmed to the + * desired settings and can possibly put your device into an unrecoverable + * state. + * + * Be sure to have the -mmcu=<em>device</em> flag in your compile command line and + * your linker command line to have the correct device selected and to have + * the correct I/O header file included when you include <avr/io.h>. + * + * You can print out the contents of the .lock section in the ELF file by + * using this command line: + * \code + * avr-objdump -s -j .lock <ELF file> + * \endcode + */ + +/* + * Copyright (c) 2007, Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_LOCK_H_ #define _AVR_LOCK_H_ 1 - -/** \file */ -/** \defgroup avr_lock <avr/lock.h>: Lockbit Support - - \par Introduction - - The Lockbit API allows a user to specify the lockbit settings for the - specific AVR device they are compiling for. These lockbit settings will be - placed in a special section in the ELF output file, after linking. - - Programming tools can take advantage of the lockbit information embedded in - the ELF file, by extracting this information and determining if the lockbits - need to be programmed after programming the Flash and EEPROM memories. - This also allows a single ELF file to contain all the - information needed to program an AVR. - - To use the Lockbit API, include the <avr/io.h> header file, which in turn - automatically includes the individual I/O header file and the <avr/lock.h> - file. These other two files provides everything necessary to set the AVR - lockbits. - - \par Lockbit API - - Each I/O header file may define up to 3 macros that controls what kinds - of lockbits are available to the user. - - If __LOCK_BITS_EXIST is defined, then two lock bits are available to the - user and 3 mode settings are defined for these two bits. - - If __BOOT_LOCK_BITS_0_EXIST is defined, then the two BLB0 lock bits are - available to the user and 4 mode settings are defined for these two bits. - - If __BOOT_LOCK_BITS_1_EXIST is defined, then the two BLB1 lock bits are - available to the user and 4 mode settings are defined for these two bits. - - If __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST is defined then two lock bits - are available to set the locking mode for the Application Table Section - (which is used in the XMEGA family). - - If __BOOT_LOCK_APPLICATION_BITS_EXIST is defined then two lock bits are - available to set the locking mode for the Application Section (which is used - in the XMEGA family). - - If __BOOT_LOCK_BOOT_BITS_EXIST is defined then two lock bits are available - to set the locking mode for the Boot Loader Section (which is used in the - XMEGA family). - - The AVR lockbit modes have inverted values, logical 1 for an unprogrammed - (disabled) bit and logical 0 for a programmed (enabled) bit. The defined - macros for each individual lock bit represent this in their definition by a - bit-wise inversion of a mask. For example, the LB_MODE_3 macro is defined - as: - \code - #define LB_MODE_3 (0xFC) -` \endcode - - To combine the lockbit mode macros together to represent a whole byte, - use the bitwise AND operator, like so: - \code - (LB_MODE_3 & BLB0_MODE_2) - \endcode - - <avr/lock.h> also defines a macro that provides a default lockbit value: - LOCKBITS_DEFAULT which is defined to be 0xFF. - - See the AVR device specific datasheet for more details about these - lock bits and the available mode settings. - - A convenience macro, LOCKMEM, is defined as a GCC attribute for a - custom-named section of ".lock". - - A convenience macro, LOCKBITS, is defined that declares a variable, __lock, - of type unsigned char with the attribute defined by LOCKMEM. This variable - allows the end user to easily set the lockbit data. - - \note If a device-specific I/O header file has previously defined LOCKMEM, - then LOCKMEM is not redefined. If a device-specific I/O header file has - previously defined LOCKBITS, then LOCKBITS is not redefined. LOCKBITS is - currently known to be defined in the I/O header files for the XMEGA devices. - - \par API Usage Example - - Putting all of this together is easy: - - \code - #include <avr/io.h> - - LOCKBITS = (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); - - int main(void) - { - return 0; - } - \endcode - - Or: - - \code - #include <avr/io.h> - - unsigned char __lock __attribute__((section (".lock"))) = - (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); - - int main(void) - { - return 0; - } - \endcode - - - - However there are a number of caveats that you need to be aware of to - use this API properly. - - Be sure to include <avr/io.h> to get all of the definitions for the API. - The LOCKBITS macro defines a global variable to store the lockbit data. This - variable is assigned to its own linker section. Assign the desired lockbit - values immediately in the variable initialization. - - The .lock section in the ELF file will get its values from the initial - variable assignment ONLY. This means that you can NOT assign values to - this variable in functions and the new values will not be put into the - ELF .lock section. - - The global variable is declared in the LOCKBITS macro has two leading - underscores, which means that it is reserved for the "implementation", - meaning the library, so it will not conflict with a user-named variable. - - You must initialize the lockbit variable to some meaningful value, even - if it is the default value. This is because the lockbits default to a - logical 1, meaning unprogrammed. Normal uninitialized data defaults to all - locgial zeros. So it is vital that all lockbits are initialized, even with - default data. If they are not, then the lockbits may not programmed to the - desired settings and can possibly put your device into an unrecoverable - state. - - Be sure to have the -mmcu=<em>device</em> flag in your compile command line and - your linker command line to have the correct device selected and to have - the correct I/O header file included when you include <avr/io.h>. - - You can print out the contents of the .lock section in the ELF file by - using this command line: - \code - avr-objdump -s -j .lock <ELF file> - \endcode - -*/ - +/** + * @defgroup avr_lock Lockbit Support + * + * @ingroup avr + */ +/**@{*/ #ifndef __ASSEMBLER__ @@ -235,4 +239,5 @@ #define LOCKBITS_DEFAULT (0xFF) +/**@}*/ #endif /* _AVR_LOCK_H_ */ diff --git a/cpukit/score/cpu/avr/avr/parity.h b/cpukit/score/cpu/avr/avr/parity.h index 06fd41db96..e01148e7dd 100644 --- a/cpukit/score/cpu/avr/avr/parity.h +++ b/cpukit/score/cpu/avr/avr/parity.h @@ -1,38 +1,55 @@ -/* Copyright (c) 2005 Joerg Wunsch - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ +/** + * @file + * + * @brief Koved to <util/parity.h> + */ + +/* + * Copyright (c) 2005 Joerg Wunsch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_PARITY_H_ #define _AVR_PARITY_H_ +/** + * @defgroup AvrParity Parity + * + * @ingroup avr + * + */ +/**@{**/ + #warning "This file has been moved to <util/parity.h>." #include <util/parity.h> +/** @} */ #endif /* _AVR_PARITY_H_ */ diff --git a/cpukit/score/cpu/avr/avr/pgmspace.h b/cpukit/score/cpu/avr/avr/pgmspace.h index 4036f68275..42010168b1 100644 --- a/cpukit/score/cpu/avr/avr/pgmspace.h +++ b/cpukit/score/cpu/avr/avr/pgmspace.h @@ -1,80 +1,85 @@ -/* Copyright (c) 2002 - 2007 Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * 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. - * Neither the name of the copyright holders nor the names of - 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. */ - +/** + * @file pgmspace.h + * + * @brief Definitions for ATmega640 + * + * The functions in this module provide interfaces for a program to access + * data stored in program space (flash memory) of the device. In order to + * use these functions, the target device must support either the \c LPM or + * \c ELPM instructions. + * + * @note These functions are an attempt to provide some compatibility with + * header files that come with IAR C, to make porting applications between + * different compilers easier. This is not 100% compatibility though (GCC + * does not have full support for multiple address spaces yet). + * + * @note If you are working with strings which are completely based in ram, + * use the standard string functions described in \ref avr_string. + * + * \note If possible, put your constant tables in the lower 64 KB and use + * pgm_read_byte_near() or pgm_read_word_near() instead of + * pgm_read_byte_far() or pgm_read_word_far() since it is more efficient that + * way, and you can still use the upper 64K for executable code. + * All functions that are suffixed with a \c _P \e require their + * arguments to be in the lower 64 KB of the flash ROM, as they do + * not use ELPM instructions. This is normally not a big concern as + * the linker setup arranges any program space constants declared + * using the macros from this header file so they are placed right after + * the interrupt vectors, and in front of any executable code. However, + * it can become a problem if there are too many of these constants, or + * for bootloaders on devices with more than 64 KB of ROM. + * <em>All these functions will not work in that situation.</em> + * + * Contributors: + * Created by Marek Michalkiewicz <marekm@linux.org.pl> + * Eric B. Weddington <eric@ecentral.com> + * Wolfgang Haidinger <wh@vmars.tuwien.ac.at> (pgm_read_dword()) + * Ivanov Anton <anton@arc.com.ru> (pgm_read_float()) + */ /* - pgmspace.h - - Contributors: - Created by Marek Michalkiewicz <marekm@linux.org.pl> - Eric B. Weddington <eric@ecentral.com> - Wolfgang Haidinger <wh@vmars.tuwien.ac.at> (pgm_read_dword()) - Ivanov Anton <anton@arc.com.ru> (pgm_read_float()) + * Copyright (c) 2002 - 2007 Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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. */ -/** \file */ -/** \defgroup avr_pgmspace <avr/pgmspace.h>: Program Space Utilities - \code - #include <avr/io.h> - #include <avr/pgmspace.h> - \endcode - - The functions in this module provide interfaces for a program to access - data stored in program space (flash memory) of the device. In order to - use these functions, the target device must support either the \c LPM or - \c ELPM instructions. - - \note These functions are an attempt to provide some compatibility with - header files that come with IAR C, to make porting applications between - different compilers easier. This is not 100% compatibility though (GCC - does not have full support for multiple address spaces yet). - - \note If you are working with strings which are completely based in ram, - use the standard string functions described in \ref avr_string. - - \note If possible, put your constant tables in the lower 64 KB and use - pgm_read_byte_near() or pgm_read_word_near() instead of - pgm_read_byte_far() or pgm_read_word_far() since it is more efficient that - way, and you can still use the upper 64K for executable code. - All functions that are suffixed with a \c _P \e require their - arguments to be in the lower 64 KB of the flash ROM, as they do - not use ELPM instructions. This is normally not a big concern as - the linker setup arranges any program space constants declared - using the macros from this header file so they are placed right after - the interrupt vectors, and in front of any executable code. However, - it can become a problem if there are too many of these constants, or - for bootloaders on devices with more than 64 KB of ROM. - <em>All these functions will not work in that situation.</em> -*/ - #ifndef __PGMSPACE_H_ #define __PGMSPACE_H_ 1 +/** + * @defgroup avr_pgmspace Program Space Utilities + * + * @ingroup avr + * + */ +/**@{**/ + #define __need_size_t #include <inttypes.h> #include <stddef.h> @@ -402,7 +407,7 @@ typedef uint64_t prog_uint64_t PROGMEM; /** \ingroup avr_pgmspace \def pgm_read_byte_near(address_short) - Read a byte from the program space with a 16-bit (near) address. + Read a byte from the program space with a 16-bit (near) address. \note The address is a byte address. The address is in the program space. */ @@ -410,16 +415,16 @@ typedef uint64_t prog_uint64_t PROGMEM; /** \ingroup avr_pgmspace \def pgm_read_word_near(address_short) - Read a word from the program space with a 16-bit (near) address. - \note The address is a byte address. + Read a word from the program space with a 16-bit (near) address. + \note The address is a byte address. The address is in the program space. */ #define pgm_read_word_near(address_short) __LPM_word((uint16_t)(address_short)) /** \ingroup avr_pgmspace \def pgm_read_dword_near(address_short) - Read a double word from the program space with a 16-bit (near) address. - \note The address is a byte address. + Read a double word from the program space with a 16-bit (near) address. + \note The address is a byte address. The address is in the program space. */ #define pgm_read_dword_near(address_short) \ @@ -427,8 +432,8 @@ typedef uint64_t prog_uint64_t PROGMEM; /** \ingroup avr_pgmspace \def pgm_read_float_near(address_short) - Read a float from the program space with a 16-bit (near) address. - \note The address is a byte address. + Read a float from the program space with a 16-bit (near) address. + \note The address is a byte address. The address is in the program space. */ #define pgm_read_float_near(address_short) \ @@ -718,10 +723,10 @@ typedef uint64_t prog_uint64_t PROGMEM; __result; \ })) -/* -Check for architectures that implement RAMPD (avrxmega3, avrxmega5, +/* +Check for architectures that implement RAMPD (avrxmega3, avrxmega5, avrxmega7) as they need to save/restore RAMPZ for ELPM macros so it does -not interfere with data accesses. +not interfere with data accesses. */ #if defined (__AVR_HAVE_RAMPD__) @@ -753,16 +758,16 @@ not interfere with data accesses. /** \ingroup avr_pgmspace \def pgm_read_byte_far(address_long) - Read a byte from the program space with a 32-bit (far) address. + Read a byte from the program space with a 32-bit (far) address. - \note The address is a byte address. + \note The address is a byte address. The address is in the program space. */ #define pgm_read_byte_far(address_long) __ELPM((uint32_t)(address_long)) /** \ingroup avr_pgmspace \def pgm_read_word_far(address_long) - Read a word from the program space with a 32-bit (far) address. + Read a word from the program space with a 32-bit (far) address. \note The address is a byte address. The address is in the program space. */ @@ -771,7 +776,7 @@ not interfere with data accesses. /** \ingroup avr_pgmspace \def pgm_read_dword_far(address_long) - Read a double word from the program space with a 32-bit (far) address. + Read a double word from the program space with a 32-bit (far) address. \note The address is a byte address. The address is in the program space. */ @@ -780,7 +785,7 @@ not interfere with data accesses. /** \ingroup avr_pgmspace \def pgm_read_float_far(address_long) - Read a float from the program space with a 32-bit (far) address. + Read a float from the program space with a 32-bit (far) address. \note The address is a byte address. The address is in the program space. */ @@ -791,36 +796,36 @@ not interfere with data accesses. /** \ingroup avr_pgmspace \def pgm_read_byte(address_short) - Read a byte from the program space with a 16-bit (near) address. + Read a byte from the program space with a 16-bit (near) address. - \note The address is a byte address. + \note The address is a byte address. The address is in the program space. */ #define pgm_read_byte(address_short) pgm_read_byte_near(address_short) /** \ingroup avr_pgmspace \def pgm_read_word(address_short) - Read a word from the program space with a 16-bit (near) address. + Read a word from the program space with a 16-bit (near) address. - \note The address is a byte address. + \note The address is a byte address. The address is in the program space. */ #define pgm_read_word(address_short) pgm_read_word_near(address_short) /** \ingroup avr_pgmspace \def pgm_read_dword(address_short) - Read a double word from the program space with a 16-bit (near) address. + Read a double word from the program space with a 16-bit (near) address. - \note The address is a byte address. + \note The address is a byte address. The address is in the program space. */ #define pgm_read_dword(address_short) pgm_read_dword_near(address_short) /** \ingroup avr_pgmspace \def pgm_read_float(address_short) - Read a float from the program space with a 16-bit (near) address. + Read a float from the program space with a 16-bit (near) address. - \note The address is a byte address. + \note The address is a byte address. The address is in the program space. */ #define pgm_read_float(address_short) pgm_read_float_near(address_short) @@ -878,4 +883,5 @@ extern char *strtok_rP(char *__s, PGM_P __delim, char **__last); } #endif +/** @} */ #endif /* __PGMSPACE_H_ */ diff --git a/cpukit/score/cpu/avr/avr/portpins.h b/cpukit/score/cpu/avr/avr/portpins.h index 04e9b094f1..5c84e9db89 100644 --- a/cpukit/score/cpu/avr/avr/portpins.h +++ b/cpukit/score/cpu/avr/avr/portpins.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Define Generic PORTn, DDn, and PINn Values + */ + /* Copyright (c) 2003 Theodore A. Roth All rights reserved. @@ -38,8 +44,6 @@ # error "Include <avr/io.h> instead of this file." #endif -/* Define Generic PORTn, DDn, and PINn values. */ - /* Port Data Register (generic) */ #define PORT7 7 #define PORT6 6 @@ -70,7 +74,9 @@ #define PIN1 1 #define PIN0 0 -/* Define PORTxn an Pxn values for all possible port pins if not defined already by io.h. */ +/* Define PORTxn an Pxn values for all possible port pins + * if not defined already by io.h. + */ /* PORT A */ diff --git a/cpukit/score/cpu/avr/avr/power.h b/cpukit/score/cpu/avr/avr/power.h index cf44b10866..b101f3bcbd 100644 --- a/cpukit/score/cpu/avr/avr/power.h +++ b/cpukit/score/cpu/avr/avr/power.h @@ -1,30 +1,56 @@ -/* Copyright (c) 2006, 2007, 2008 Eric B. Weddington - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * 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. - * Neither the name of the copyright holders nor the names of - 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. */ +/** + * @file avr/iom644PA.h + * + * @brief Power Reduction Management + * + * Many AVRs contain a Power Reduction Register (PRR) or Registers (PRRx) that + * allow you to reduce power consumption by disabling or enabling various on-board + * peripherals as needed. + * + * There are many macros in this header file that provide an easy interface + * to enable or disable on-board peripherals to reduce power. See the table below. + * + * @note Not all AVR devices have a Power Reduction Register (for example + * the ATmega128). On those devices without a Power Reduction Register, these + * macros are not available. + * + * @note Not all AVR devices contain the same peripherals (for example, the LCD + * interface), or they will be named differently (for example, USART and + * USART0). Please consult your device's datasheet, or the header file, to + * find out which macros are applicable to your device. + */ + +/* + * Copyright (c) 2006, 2007, 2008 Eric B. Weddington + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_POWER_H_ @@ -33,311 +59,14 @@ #include <avr/io.h> #include <stdint.h> - -/** \file */ -/** \defgroup avr_power <avr/power.h>: Power Reduction Management - -\code #include <avr/power.h>\endcode - -Many AVRs contain a Power Reduction Register (PRR) or Registers (PRRx) that -allow you to reduce power consumption by disabling or enabling various on-board -peripherals as needed. - -There are many macros in this header file that provide an easy interface -to enable or disable on-board peripherals to reduce power. See the table below. - -\note Not all AVR devices have a Power Reduction Register (for example -the ATmega128). On those devices without a Power Reduction Register, these -macros are not available. - -\note Not all AVR devices contain the same peripherals (for example, the LCD -interface), or they will be named differently (for example, USART and -USART0). Please consult your device's datasheet, or the header file, to -find out which macros are applicable to your device. - -*/ - - -/** \addtogroup avr_power - -\anchor avr_powermacros -<small> -<center> -<table border="3"> - <tr> - <td width="10%"><strong>Power Macro</strong></td> - <td width="15%"><strong>Description</strong></td> - <td width="75%"><strong>Applicable for device</strong></td> - </tr> - - <tr> - <td>power_adc_enable()</td> - <td>Enable the Analog to Digital Converter module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> - - <tr> - <td>power_adc_disable()</td> - <td>Disable the Analog to Digital Converter module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> - - <tr> - <td>power_lcd_enable()</td> - <td>Enable the LCD module.</td> - <td>ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490</td> - </tr> - - <tr> - <td>power_lcd_disable().</td> - <td>Disable the LCD module.</td> - <td>ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490</td> - </tr> - - <tr> - <td>power_psc0_enable()</td> - <td>Enable the Power Stage Controller 0 module.</td> - <td>AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B</td> - </tr> - - <tr> - <td>power_psc0_disable()</td> - <td>Disable the Power Stage Controller 0 module.</td> - <td>AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B</td> - </tr> - - <tr> - <td>power_psc1_enable()</td> - <td>Enable the Power Stage Controller 1 module.</td> - <td>AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B</td> - </tr> - - <tr> - <td>power_psc1_disable()</td> - <td>Disable the Power Stage Controller 1 module.</td> - <td>AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B</td> - </tr> - - <tr> - <td>power_psc2_enable()</td> - <td>Enable the Power Stage Controller 2 module.</td> - <td>AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B</td> - </tr> - - <tr> - <td>power_psc2_disable()</td> - <td>Disable the Power Stage Controller 2 module.</td> - <td>AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B</td> - </tr> - - <tr> - <td>power_spi_enable()</td> - <td>Enable the Serial Peripheral Interface module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168</td> - </tr> - - <tr> - <td>power_spi_disable()</td> - <td>Disable the Serial Peripheral Interface module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168</td> - </tr> - - <tr> - <td>power_timer0_enable()</td> - <td>Enable the Timer 0 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM216, AT90PWM316, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> - - <tr> - <td>power_timer0_disable()</td> - <td>Disable the Timer 0 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> - - <tr> - <td>power_timer1_enable()</td> - <td>Enable the Timer 1 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> - - <tr> - <td>power_timer1_disable()</td> - <td>Disable the Timer 1 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> - - <tr> - <td>power_timer2_enable()</td> - <td>Enable the Timer 2 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168</td> - </tr> - - <tr> - <td>power_timer2_disable()</td> - <td>Disable the Timer 2 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168</td> - </tr> - - <tr> - <td>power_timer3_enable()</td> - <td>Enable the Timer 3 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287</td> - </tr> - - <tr> - <td>power_timer3_disable()</td> - <td>Disable the Timer 3 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287</td> - </tr> - - <tr> - <td>power_timer4_enable()</td> - <td>Enable the Timer 4 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561</td> - </tr> - - <tr> - <td>power_timer4_disable()</td> - <td>Disable the Timer 4 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561</td> - </tr> - - <tr> - <td>power_timer5_enable()</td> - <td>Enable the Timer 5 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561</td> - </tr> - - <tr> - <td>power_timer5_disable()</td> - <td>Disable the Timer 5 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561</td> - </tr> - - <tr> - <td>power_twi_enable()</td> - <td>Enable the Two Wire Interface module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168</td> - </tr> - - <tr> - <td>power_twi_disable()</td> - <td>Disable the Two Wire Interface module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168</td> - </tr> - - <tr> - <td>power_usart_enable()</td> - <td>Enable the USART module.</td> - <td>AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B</td> - </tr> - - <tr> - <td>power_usart_disable()</td> - <td>Disable the USART module.</td> - <td>AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B</td> - </tr> - - <tr> - <td>power_usart0_enable()</td> - <td>Enable the USART 0 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168</td> - </tr> - - <tr> - <td>power_usart0_disable()</td> - <td>Disable the USART 0 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168</td> - </tr> - - <tr> - <td>power_usart1_enable()</td> - <td>Enable the USART 1 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P</td> - </tr> - - <tr> - <td>power_usart1_disable()</td> - <td>Disable the USART 1 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P</td> - </tr> - - <tr> - <td>power_usart2_enable()</td> - <td>Enable the USART 2 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561</td> - </tr> - - <tr> - <td>power_usart2_disable()</td> - <td>Disable the USART 2 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561</td> - </tr> - - <tr> - <td>power_usart3_enable()</td> - <td>Enable the USART 3 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561</td> - </tr> - - <tr> - <td>power_usart3_disable()</td> - <td>Disable the USART 3 module.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561</td> - </tr> - - <tr> - <td>power_usb_enable()</td> - <td>Enable the USB module.</td> - <td>AT90USB646, AT90USB647, AT90USB1286, AT90USB1287</td> - </tr> - - <tr> - <td>power_usb_disable()</td> - <td>Disable the USB module.</td> - <td>AT90USB646, AT90USB647, AT90USB1286, AT90USB1287</td> - </tr> - - <tr> - <td>power_usi_enable()</td> - <td>Enable the Universal Serial Interface module.</td> - <td>ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> - - <tr> - <td>power_usi_disable()</td> - <td>Disable the Universal Serial Interface module.</td> - <td>ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> - - <tr> - <td>power_vadc_enable()</td> - <td>Enable the Voltage ADC module.</td> - <td>ATmega406</td> - </tr> - - <tr> - <td>power_vadc_disable()</td> - <td>Disable the Voltage ADC module.</td> - <td>ATmega406</td> - </tr> - - <tr> - <td>power_all_enable()</td> - <td>Enable all modules.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> - - <tr> - <td>power_all_disable()</td> - <td>Disable all modules.</td> - <td>ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861</td> - </tr> -</table> -</center> -</small> - -@} */ +/** + * @defgroup avr_power Power Reduction Management + * + * @ingroup avr + * + * @addtogroup avr_power + */ +/**@{*/ #if defined(__AVR_ATxmega16A4__) \ @@ -481,7 +210,7 @@ do { \ || defined(__AVR_ATmega1280__) \ || defined(__AVR_ATmega1281__) \ || defined(__AVR_ATmega2560__) \ -|| defined(__AVR_ATmega2561__) +|| defined(__AVR_ATmega2561__) #define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC)) #define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC)) @@ -1341,7 +1070,7 @@ without a Clock Prescale Register, these macros are not available. /** \addtogroup avr_power -\code +\code typedef enum { clock_div_1 = 0, @@ -1468,7 +1197,5 @@ void clock_prescale_set(clock_div_t __x) #endif - - - +/**@}*/ #endif /* _AVR_POWER_H_ */ diff --git a/cpukit/score/cpu/avr/avr/sfr_defs.h b/cpukit/score/cpu/avr/avr/sfr_defs.h index b687f56167..2b8392689a 100644 --- a/cpukit/score/cpu/avr/avr/sfr_defs.h +++ b/cpukit/score/cpu/avr/avr/sfr_defs.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Macros for Accessing AVR Special Function Registers + */ + /* Copyright (c) 2002, Marek Michalkiewicz <marekm@amelek.gda.pl> All rights reserved. @@ -34,85 +40,89 @@ #ifndef _AVR_SFR_DEFS_H_ #define _AVR_SFR_DEFS_H_ 1 -/** \defgroup avr_sfr_notes Additional notes from <avr/sfr_defs.h> - \ingroup avr_sfr - - The \c <avr/sfr_defs.h> file is included by all of the \c <avr/ioXXXX.h> - files, which use macros defined here to make the special function register - definitions look like C variables or simple constants, depending on the - <tt>_SFR_ASM_COMPAT</tt> define. Some examples from \c <avr/iocanxx.h> to - show how to define such macros: - -\code -#define PORTA _SFR_IO8(0x02) -#define EEAR _SFR_IO16(0x21) -#define UDR0 _SFR_MEM8(0xC6) -#define TCNT3 _SFR_MEM16(0x94) -#define CANIDT _SFR_MEM32(0xF0) -\endcode - - If \c _SFR_ASM_COMPAT is not defined, C programs can use names like - <tt>PORTA</tt> directly in C expressions (also on the left side of - assignment operators) and GCC will do the right thing (use short I/O - instructions if possible). The \c __SFR_OFFSET definition is not used in - any way in this case. - - Define \c _SFR_ASM_COMPAT as 1 to make these names work as simple constants - (addresses of the I/O registers). This is necessary when included in - preprocessed assembler (*.S) source files, so it is done automatically if - \c __ASSEMBLER__ is defined. By default, all addresses are defined as if - they were memory addresses (used in \c lds/sts instructions). To use these - addresses in \c in/out instructions, you must subtract 0x20 from them. - - For more backwards compatibility, insert the following at the start of your - old assembler source file: - -\code -#define __SFR_OFFSET 0 -\endcode - - This automatically subtracts 0x20 from I/O space addresses, but it's a - hack, so it is recommended to change your source: wrap such addresses in - macros defined here, as shown below. After this is done, the - <tt>__SFR_OFFSET</tt> definition is no longer necessary and can be removed. - - Real example - this code could be used in a boot loader that is portable - between devices with \c SPMCR at different addresses. - -\verbatim -<avr/iom163.h>: #define SPMCR _SFR_IO8(0x37) -<avr/iom128.h>: #define SPMCR _SFR_MEM8(0x68) -\endverbatim - -\code -#if _SFR_IO_REG_P(SPMCR) - out _SFR_IO_ADDR(SPMCR), r24 -#else - sts _SFR_MEM_ADDR(SPMCR), r24 -#endif -\endcode - - You can use the \c in/out/cbi/sbi/sbic/sbis instructions, without the - <tt>_SFR_IO_REG_P</tt> test, if you know that the register is in the I/O - space (as with \c SREG, for example). If it isn't, the assembler will - complain (I/O address out of range 0...0x3f), so this should be fairly - safe. - - If you do not define \c __SFR_OFFSET (so it will be 0x20 by default), all - special register addresses are defined as memory addresses (so \c SREG is - 0x5f), and (if code size and speed are not important, and you don't like - the ugly \#if above) you can always use lds/sts to access them. But, this - will not work if <tt>__SFR_OFFSET</tt> != 0x20, so use a different macro - (defined only if <tt>__SFR_OFFSET</tt> == 0x20) for safety: - -\code - sts _SFR_ADDR(SPMCR), r24 -\endcode - - In C programs, all 3 combinations of \c _SFR_ASM_COMPAT and - <tt>__SFR_OFFSET</tt> are supported - the \c _SFR_ADDR(SPMCR) macro can be - used to get the address of the \c SPMCR register (0x57 or 0x68 depending on - device). */ +/** + * @defgroup avr_sfr_notes Additional notes from <avr/sfr_defs.h> + * + * @ingroup avr_sfr + * + * The @c <avr/sfr_defs.h> file is included by all of the @c <avr/ioXXXX.h> + * files, which use macros defined here to make the special function register + * definitions look like C variables or simple constants, depending on the + * <tt>_SFR_ASM_COMPAT</tt> define. Some examples from @c <avr/iocanxx.h> to + * show how to define such macros: + * + * @code + * #define PORTA _SFR_IO8(0x02) + * #define EEAR _SFR_IO16(0x21) + * #define UDR0 _SFR_MEM8(0xC6) + * #define TCNT3 _SFR_MEM16(0x94) + * #define CANIDT _SFR_MEM32(0xF0) + * @endcode + * + * If @c _SFR_ASM_COMPAT is not defined, C programs can use names like + * <tt>PORTA</tt> directly in C expressions (also on the left side of + * assignment operators) and GCC will do the right thing (use short I/O + * instructions if possible). The @c __SFR_OFFSET definition is not used in + * any way in this case. + * + * Define @c _SFR_ASM_COMPAT as 1 to make these names work as simple constants + * (addresses of the I/O registers). This is necessary when included in + * preprocessed assembler (*.S) source files, so it is done automatically if + * @c __ASSEMBLER__ is defined. By default, all addresses are defined as if + * they were memory addresses (used in @c lds/sts instructions). To use these + * addresses in @c in/out instructions, you must subtract 0x20 from them. + * + * For more backwards compatibility, insert the following at the start of your + * old assembler source file: + * + * @code + * #define __SFR_OFFSET 0 + * @endcode + * + * This automatically subtracts 0x20 from I/O space addresses, but it's a + * hack, so it is recommended to change your source: wrap such addresses in + * macros defined here, as shown below. After this is done, the + * <tt>__SFR_OFFSET</tt> definition is no longer necessary and can be removed. + + * Real example - this code could be used in a boot loader that is portable + * between devices with @c SPMCR at different addresses. + * + * @verbatim + * <avr/iom163.h>: #define SPMCR _SFR_IO8(0x37) + * <avr/iom128.h>: #define SPMCR _SFR_MEM8(0x68) + * @endverbatim + * + * @code + * #if _SFR_IO_REG_P(SPMCR) + * out _SFR_IO_ADDR(SPMCR), r24 + * #else + * sts _SFR_MEM_ADDR(SPMCR), r24 + * #endif + * @endcode + * + * You can use the @c in/out/cbi/sbi/sbic/sbis instructions, without the + * <tt>_SFR_IO_REG_P</tt> test, if you know that the register is in the I/O + * space (as with @c SREG, for example). If it isn't, the assembler will + * complain (I/O address out of range 0...0x3f), so this should be fairly + * safe. + * + * If you do not define @c __SFR_OFFSET (so it will be 0x20 by default), all + * special register addresses are defined as memory addresses (so @c SREG is + * 0x5f), and (if code size and speed are not important, and you don't like + * the ugly \#if above) you can always use lds/sts to access them. But, this + * will not work if <tt>__SFR_OFFSET</tt> != 0x20, so use a different macro + * (defined only if <tt>__SFR_OFFSET</tt> == 0x20) for safety: + * + * @code + * sts _SFR_ADDR(SPMCR), r24 + * @endcode + * + * In C programs, all 3 combinations of @c _SFR_ASM_COMPAT and + * <tt>__SFR_OFFSET</tt> are supported - the @c _SFR_ADDR(SPMCR) macro can be + * used to get the address of the @c SPMCR register (0x57 or 0x68 depending on + * device). + */ +/**@{**/ #ifdef __ASSEMBLER__ #define _SFR_ASM_COMPAT 1 @@ -190,23 +200,23 @@ #define _SFR_WORD(sfr) _MMIO_WORD(_SFR_ADDR(sfr)) #define _SFR_DWORD(sfr) _MMIO_DWORD(_SFR_ADDR(sfr)) -/** \name Bit manipulation */ - -/*@{*/ -/** \def _BV - \ingroup avr_sfr - - \code #include <avr/io.h>\endcode - - Converts a bit number into a byte value. - - \note The bit shift is performed by the compiler which then inserts the - result into the code. Thus, there is no run-time overhead when using - _BV(). */ - +/** + * @name Bit Manipulation + */ +/**@{**/ + +/** + * @code #include <avr/io.h> @endcode + * + * Converts a bit number into a byte value. + * + * @note The bit shift is performed by the compiler which then inserts the + * result into the code. Thus, there is no run-time overhead when using + * _BV(). + */ #define _BV(bit) (1 << (bit)) -/*@}*/ +/** @} */ #ifndef _VECTOR #define _VECTOR(N) __vector_ ## N @@ -215,53 +225,47 @@ #ifndef __ASSEMBLER__ -/** \name IO register bit manipulation */ - -/*@{*/ - - - -/** \def bit_is_set - \ingroup avr_sfr - - \code #include <avr/io.h>\endcode - - Test whether bit \c bit in IO register \c sfr is set. - This will return a 0 if the bit is clear, and non-zero - if the bit is set. */ +/** + * @name IO Register Bit Manipulation + */ +/**@{**/ +/** + * @code #include <avr/io.h> @endcode + * + * Test whether bit @c bit in IO register @c sfr is set. + * This will return a 0 if the bit is clear, and non-zero + * if the bit is set. + */ #define bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit)) -/** \def bit_is_clear - \ingroup avr_sfr - - \code #include <avr/io.h>\endcode - - Test whether bit \c bit in IO register \c sfr is clear. - This will return non-zero if the bit is clear, and a 0 - if the bit is set. */ +/** + * @code #include <avr/io.h> @endcode + * + * Test whether bit @c bit in IO register @c sfr is clear. + * This will return non-zero if the bit is clear, and a 0 + * if the bit is set. + */ #define bit_is_clear(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit))) -/** \def loop_until_bit_is_set - \ingroup avr_sfr - - \code #include <avr/io.h>\endcode - - Wait until bit \c bit in IO register \c sfr is set. */ - +/** + * @code #include <avr/io.h> @endcode + * + * Wait until bit @c bit in IO register @c sfr is set. + */ #define loop_until_bit_is_set(sfr, bit) do { } while (bit_is_clear(sfr, bit)) -/** \def loop_until_bit_is_clear - \ingroup avr_sfr - - \code #include <avr/io.h>\endcode - - Wait until bit \c bit in IO register \c sfr is clear. */ - +/** + * @code #include <avr/io.h> @endcode + * + * Wait until bit @c bit in IO register @c sfr is clear. + */ #define loop_until_bit_is_clear(sfr, bit) do { } while (bit_is_set(sfr, bit)) -/*@}*/ +/** @} */ + +/** @} */ #endif /* !__ASSEMBLER__ */ diff --git a/cpukit/score/cpu/avr/avr/signal.h b/cpukit/score/cpu/avr/avr/signal.h index e9a802408b..898df4acb8 100644 --- a/cpukit/score/cpu/avr/avr/signal.h +++ b/cpukit/score/cpu/avr/avr/signal.h @@ -1,38 +1,54 @@ -/* Copyright (c) 2002,2005,2006 Marek Michalkiewicz - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ +/** + * @file + * + * @brief Use <avr/interrupt.h> + */ + +/* + * Copyright (c) 2002, 2005, 2006 Marek Michalkiewicz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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 _AVR_SIGNAL_H_ #define _AVR_SIGNAL_H_ +/** + * @defgroup Avr_signal Signal + * + * @ingroup avr + */ +/**@{*/ + #warning "This header file is obsolete. Use <avr/interrupt.h>." #include <avr/interrupt.h> +/**@}*/ #endif /* _AVR_SIGNAL_H_ */ diff --git a/cpukit/score/cpu/avr/avr/signature.h b/cpukit/score/cpu/avr/avr/signature.h index 13d3138965..06aedce580 100644 --- a/cpukit/score/cpu/avr/avr/signature.h +++ b/cpukit/score/cpu/avr/avr/signature.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Signature Support + */ + /* Copyright (c) 2009, Atmel Corporation All rights reserved. @@ -34,38 +40,38 @@ #ifndef _AVR_SIGNATURE_H_ #define _AVR_SIGNATURE_H_ 1 -/** \file */ -/** \defgroup avr_signature <avr/signature.h>: Signature Support - - \par Introduction - - The <avr/signature.h> header file allows the user to automatically - and easily include the device's signature data in a special section of - the final linked ELF file. - - This value can then be used by programming software to compare the on-device - signature with the signature recorded in the ELF file to look for a match - before programming the device. - - \par API Usage Example - - Usage is very simple; just include the header file: - - \code - #include <avr/signature.h> - \endcode - - This will declare a constant unsigned char array and it is initialized with - the three signature bytes, MSB first, that are defined in the device I/O - header file. This array is then placed in the .signature section in the - resulting linked ELF file. - - The three signature bytes that are used to initialize the array are - these defined macros in the device I/O header file, from MSB to LSB: - SIGNATURE_2, SIGNATURE_1, SIGNATURE_0. - - This header file should only be included once in an application. -*/ +/** + * @defgroup avr_signature Signature Support + * + * @par Introduction + * + * The <avr/signature.h> header file allows the user to automatically + * and easily include the device's signature data in a special section of + * the final linked ELF file. + * + * This value can then be used by programming software to compare the + * on-device signature with the signature recorded in the ELF file + * to look for a match before programming the device. + * + * @par API Usage Example + * + * Usage is very simple; just include the header file: + * + * @code{.c} + * #include <avr/signature.h> + * @endcode + * + * This will declare a constant unsigned char array and it is initialized with + * the three signature bytes, MSB first, that are defined in the device I/O + * header file. This array is then placed in the .signature section in the + * resulting linked ELF file. + * + * The three signature bytes that are used to initialize the array are + * these defined macros in the device I/O header file, from MSB to LSB: + * SIGNATURE_2, SIGNATURE_1, SIGNATURE_0. + * + * This header file should only be included once in an application. + */ #ifndef __ASSEMBLER__ @@ -75,8 +81,9 @@ const unsigned char __signature[3] __attribute__((section (".signature"))) = { SIGNATURE_2, SIGNATURE_1, SIGNATURE_0 }; - -#endif /* defined(SIGNATURE_0) && defined(SIGNATURE_1) && defined(SIGNATURE_2) */ + +/* defined(SIGNATURE_0) && defined(SIGNATURE_1) && defined(SIGNATURE_2) */ +#endif #endif /* __ASSEMBLER__ */ diff --git a/cpukit/score/cpu/avr/avr/sleep.h b/cpukit/score/cpu/avr/avr/sleep.h index 48b789f797..9a2556c85c 100644 --- a/cpukit/score/cpu/avr/avr/sleep.h +++ b/cpukit/score/cpu/avr/avr/sleep.h @@ -1,3 +1,10 @@ +/** + * @file + * + * @brief Power Management and Sleep Modes + * + */ + /* Copyright (c) 2002, 2004 Theodore A. Roth Copyright (c) 2004, 2007, 2008 Eric B. Weddington Copyright (c) 2005, 2006, 2007 Joerg Wunsch @@ -37,103 +44,104 @@ #include <avr/io.h> #include <stdint.h> - -/** \file */ - -/** \defgroup avr_sleep <avr/sleep.h>: Power Management and Sleep Modes - - \code #include <avr/sleep.h>\endcode - - Use of the \c SLEEP instruction can allow an application to reduce its - power comsumption considerably. AVR devices can be put into different - sleep modes. Refer to the datasheet for the details relating to the device - you are using. - - There are several macros provided in this header file to actually - put the device into sleep mode. The simplest way is to optionally - set the desired sleep mode using \c set_sleep_mode() (it usually - defaults to idle mode where the CPU is put on sleep but all - peripheral clocks are still running), and then call - \c sleep_mode(). This macro automatically sets the sleep enable bit, goes - to sleep, and clears the sleep enable bit. - - Example: - \code - #include <avr/sleep.h> - - ... - set_sleep_mode(<mode>); - sleep_mode(); - \endcode - - Note that unless your purpose is to completely lock the CPU (until a - hardware reset), interrupts need to be enabled before going to sleep. - - As the \c sleep_mode() macro might cause race conditions in some - situations, the individual steps of manipulating the sleep enable - (SE) bit, and actually issuing the \c SLEEP instruction, are provided - in the macros \c sleep_enable(), \c sleep_disable(), and - \c sleep_cpu(). This also allows for test-and-sleep scenarios that - take care of not missing the interrupt that will awake the device - from sleep. - - Example: - \code - #include <avr/interrupt.h> - #include <avr/sleep.h> - - ... - set_sleep_mode(<mode>); - cli(); - if (some_condition) - { - sleep_enable(); - sei(); - sleep_cpu(); - sleep_disable(); - } - sei(); - \endcode - - This sequence ensures an atomic test of \c some_condition with - interrupts being disabled. If the condition is met, sleep mode - will be prepared, and the \c SLEEP instruction will be scheduled - immediately after an \c SEI instruction. As the intruction right - after the \c SEI is guaranteed to be executed before an interrupt - could trigger, it is sure the device will really be put to sleep. - - Some devices have the ability to disable the Brown Out Detector (BOD) before - going to sleep. This will also reduce power while sleeping. If the - specific AVR device has this ability then an additional macro is defined: - \c sleep_bod_disable(). This macro generates inlined assembly code - that will correctly implement the timed sequence for disabling the BOD - before sleeping. However, there is a limited number of cycles after the - BOD has been disabled that the device can be put into sleep mode, otherwise - the BOD will not truly be disabled. Recommended practice is to disable - the BOD (\c sleep_bod_disable()), set the interrupts (\c sei()), and then - put the device to sleep (\c sleep_cpu()), like so: - - \code - #include <avr/interrupt.h> - #include <avr/sleep.h> - - ... - set_sleep_mode(<mode>); - cli(); - if (some_condition) - { - sleep_enable(); - sleep_bod_disable(); - sei(); - sleep_cpu(); - sleep_disable(); - } - sei(); - \endcode -*/ - - -/* Define an internal sleep control register and an internal sleep enable bit mask. */ +/** + * @defgroup avr_sleep Power Management and Sleep Modes + * + * Use of the @c SLEEP instruction can allow an application to reduce its + * power comsumption considerably. AVR devices can be put into different + * sleep modes. Refer to the datasheet for the details relating to the device + * you are using. + * + * There are several macros provided in this header file to actually + * put the device into sleep mode. The simplest way is to optionally + * set the desired sleep mode using @c set_sleep_mode() (it usually + * defaults to idle mode where the CPU is put on sleep but all + * peripheral clocks are still running), and then call + * @c sleep_mode(). This macro automatically sets the sleep enable bit, goes + * to sleep, and clears the sleep enable bit. + * + * Example: + * @code{.c} + * #include <avr/sleep.h> + * + * ... + * set_sleep_mode(<mode>); + * sleep_mode(); + * @endcode + * + * Note that unless your purpose is to completely lock the CPU (until a + * hardware reset), interrupts need to be enabled before going to sleep. + * + * As the @c sleep_mode() macro might cause race conditions in some + * situations, the individual steps of manipulating the sleep enable + * (SE) bit, and actually issuing the @c SLEEP instruction, are provided + * in the macros @c sleep_enable(), @c sleep_disable(), and + * @c sleep_cpu(). This also allows for test-and-sleep scenarios that + * take care of not missing the interrupt that will awake the device + * from sleep. + * + * Example: + * @code{.c} + * #include <avr/interrupt.h> + * #include <avr/sleep.h>* + * + * ... + * set_sleep_mode(<mode>); + * cli(); + * if (some_condition) + * { + * sleep_enable(); + * sei(); + * sleep_cpu(); + * sleep_disable(); + * } + * sei(); + * @endcode + * + * This sequence ensures an atomic test of @c some_condition with + * interrupts being disabled. If the condition is met, sleep mode + * will be prepared, and the @c SLEEP instruction will be scheduled + * immediately after an @c SEI instruction. As the intruction right + * after the @c SEI is guaranteed to be executed before an interrupt + * could trigger, it is sure the device will really be put to sleep. + * + * Some devices have the ability to disable the Brown Out Detector (BOD) + * before going to sleep. This will also reduce power while sleeping. If the + * specific AVR device has this ability then an additional macro is defined: + * @c sleep_bod_disable(). This macro generates inlined assembly code + * that will correctly implement the timed sequence for disabling the BOD + * before sleeping. However, there is a limited number of cycles after the + * BOD has been disabled that the device can be put into sleep mode, otherwise + * the BOD will not truly be disabled. Recommended practice is to disable + * the BOD (@c sleep_bod_disable()), set the interrupts (@c sei()), and then + * put the device to sleep (@c sleep_cpu()), like so: + * + * @code{.c} + * #include <avr/interrupt.h> + * #include <avr/sleep.h>* + * + * ... + * set_sleep_mode(<mode>); + * cli(); + * if (some_condition) + * { + * sleep_enable(); + * sleep_bod_disable(); + * sei(); + * sleep_cpu(); + * sleep_disable(); + * } + * sei(); + * @endcode + * + */ +/**@{**/ + + +/* + * Define an internal sleep control register and + * an internal sleep enable bit mask. + */ #if defined(SLEEP_CTRL) /* XMEGA devices */ @@ -167,8 +175,11 @@ #define set_sleep_mode(mode) \ do { \ - MCUCR = ((MCUCR & ~_BV(SM1)) | ((mode) == SLEEP_MODE_PWR_DOWN || (mode) == SLEEP_MODE_PWR_SAVE ? _BV(SM1) : 0)); \ - EMCUCR = ((EMCUCR & ~_BV(SM0)) | ((mode) == SLEEP_MODE_PWR_SAVE ? _BV(SM0) : 0)); \ + MCUCR = ((MCUCR & ~_BV(SM1)) | \ + ((mode) == SLEEP_MODE_PWR_DOWN || \ + (mode) == SLEEP_MODE_PWR_SAVE ? _BV(SM1) : 0)); \ + EMCUCR = ((EMCUCR & ~_BV(SM0)) | \ + ((mode) == SLEEP_MODE_PWR_SAVE ? _BV(SM0) : 0)); \ } while(0) @@ -184,9 +195,12 @@ #define set_sleep_mode(mode) \ do { \ - MCUCR = ((MCUCR & ~_BV(SM1)) | ((mode) == SLEEP_MODE_IDLE ? 0 : _BV(SM1))); \ - MCUCSR = ((MCUCSR & ~_BV(SM2)) | ((mode) == SLEEP_MODE_STANDBY || (mode) == SLEEP_MODE_EXT_STANDBY ? _BV(SM2) : 0)); \ - EMCUCR = ((EMCUCR & ~_BV(SM0)) | ((mode) == SLEEP_MODE_PWR_SAVE || (mode) == SLEEP_MODE_EXT_STANDBY ? _BV(SM0) : 0)); \ + MCUCR = ((MCUCR & ~_BV(SM1)) | \ + ((mode) == SLEEP_MODE_IDLE ? 0 : _BV(SM1))); \ + MCUCSR = ((MCUCSR & ~_BV(SM2)) | ((mode) == SLEEP_MODE_STANDBY || \ + (mode) == SLEEP_MODE_EXT_STANDBY ? _BV(SM2) : 0)); \ + EMCUCR = ((EMCUCR & ~_BV(SM0)) | ((mode) == SLEEP_MODE_PWR_SAVE || \ + (mode) == SLEEP_MODE_EXT_STANDBY ? _BV(SM0) : 0)); \ } while(0) #elif defined(__AVR_AT90S2313__) \ @@ -217,7 +231,8 @@ #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(_BV(SM0) | _BV(SM1))) | (mode)); \ } while(0) #elif defined(__AVR_AT90S4434__) \ @@ -253,7 +268,8 @@ #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(_BV(SM0) | _BV(SM1))) | (mode)); \ } while(0) #elif defined(__AVR_ATtiny2313__) \ @@ -266,7 +282,8 @@ #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(_BV(SM0) | _BV(SM1))) | (mode)); \ } while(0) #elif defined(__AVR_AT94K__) @@ -277,7 +294,8 @@ #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(_BV(SM0) | _BV(SM1))) | (mode)); \ } while(0) #elif defined(__AVR_ATtiny26__) \ @@ -290,7 +308,8 @@ #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(_BV(SM0) | _BV(SM1))) | (mode)); \ } while(0) #elif defined(__AVR_AT90PWM216__) \ @@ -304,7 +323,8 @@ #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ } while(0) #elif defined(__AVR_AT90CAN128__) \ @@ -415,7 +435,8 @@ #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ } while(0) #elif defined(__AVR_ATxmega16A4__) \ @@ -438,11 +459,13 @@ #define SLEEP_MODE_PWR_DOWN (SLEEP_SMODE1_bm) #define SLEEP_MODE_PWR_SAVE (SLEEP_SMODE1_bm | SLEEP_SMODE0_bm) #define SLEEP_MODE_STANDBY (SLEEP_SMODE2_bm | SLEEP_SMODE1_bm) - #define SLEEP_MODE_EXT_STANDBY (SLEEP_SMODE2_bm | SLEEP_SMODE1_bm | SLEEP_SMODE0_bm) + #define SLEEP_MODE_EXT_STANDBY (SLEEP_SMODE2_bm | SLEEP_SMODE1_bm | \ + SLEEP_SMODE0_bm) #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(SLEEP_SMODE2_bm | SLEEP_SMODE1_bm | SLEEP_SMODE0_bm)) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(SLEEP_SMODE2_bm | SLEEP_SMODE1_bm | SLEEP_SMODE0_bm)) | (mode)); \ } while(0) #elif defined(__AVR_AT90SCR100__) @@ -455,7 +478,8 @@ #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ } while(0) #elif defined(__AVR_ATA6289__) @@ -466,7 +490,8 @@ #define set_sleep_mode(mode) \ do { \ - _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & \ + ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ } while(0) #else @@ -477,18 +502,17 @@ -/** \ingroup avr_sleep - - Put the device in sleep mode. How the device is brought out of sleep mode - depends on the specific mode selected with the set_sleep_mode() function. - See the data sheet for your device for more details. */ +/** + * Put the device in sleep mode. How the device is brought out of sleep mode + * depends on the specific mode selected with the set_sleep_mode() function. + * See the data sheet for your device for more details. + */ #if defined(__DOXYGEN__) -/** \ingroup avr_sleep - - Set the SE (sleep enable) bit. +/** + * Set the SE (sleep enable) bit. */ extern void sleep_enable (void); @@ -504,10 +528,9 @@ do { \ #if defined(__DOXYGEN__) -/** \ingroup avr_sleep - - Clear the SE (sleep enable) bit. -*/ +/** + * Clear the SE (sleep enable) bit. + */ extern void sleep_disable (void); #else @@ -520,11 +543,10 @@ do { \ #endif -/** \ingroup avr_sleep - - Put the device into sleep mode. The SE bit must be set - beforehand, and it is recommended to clear it afterwards. -*/ +/** + * Put the device into sleep mode. The SE bit must be set + * beforehand, and it is recommended to clear it afterwards. + */ #if defined(__DOXYGEN__) extern void sleep_cpu (void); @@ -582,6 +604,6 @@ do { \ #endif -/*@}*/ +/** @} */ #endif /* _AVR_SLEEP_H_ */ diff --git a/cpukit/score/cpu/avr/avr/version.h b/cpukit/score/cpu/avr/avr/version.h index 7e0c3a3649..7af5025921 100644 --- a/cpukit/score/cpu/avr/avr/version.h +++ b/cpukit/score/cpu/avr/avr/version.h @@ -1,53 +1,63 @@ -/* Copyright (c) 2005, Joerg Wunsch -*- c -*- - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the copyright holders nor the names of - 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. */ - - -/** \defgroup avr_version <avr/version.h>: avr-libc version macros - \code #include <avr/version.h> \endcode - - This header file defines macros that contain version numbers and - strings describing the current version of avr-libc. +/** + * @file avr/iom644PA.h + * + * @brief Current Version of avr-libc + * + * This header file defines macros that contain version numbers and + * strings describing the current version of avr-libc. + * + * The version number itself basically consists of three pieces that + * are separated by a dot: the major number, the minor number, and + * the revision number. For development versions (which use an odd + * minor number), the string representation additionally gets the + * date code (YYYYMMDD) appended. + * + * This file will also be included by \c <avr/io.h>. That way, + * portable tests can be implemented using \c <avr/io.h> that can be + * used in code that wants to remain backwards-compatible to library + * versions prior to the date when the library version API had been + * added, as referenced but undefined C preprocessor macros + * automatically evaluate to 0. + */ - The version number itself basically consists of three pieces that - are separated by a dot: the major number, the minor number, and - the revision number. For development versions (which use an odd - minor number), the string representation additionally gets the - date code (YYYYMMDD) appended. +/* + * Copyright (c) 2005, Joerg Wunsch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of the copyright holders nor the names of + * 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. + */ - This file will also be included by \c <avr/io.h>. That way, - portable tests can be implemented using \c <avr/io.h> that can be - used in code that wants to remain backwards-compatible to library - versions prior to the date when the library version API had been - added, as referenced but undefined C preprocessor macros - automatically evaluate to 0. -*/ +/** + * @defgroup avr_version avr-libc Version Macros + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_VERSION_H_ #define _AVR_VERSION_H_ @@ -86,4 +96,5 @@ Library revision number. */ #define __AVR_LIBC_REVISION__ 8 +/**@}*/ #endif /* _AVR_VERSION_H_ */ diff --git a/cpukit/score/cpu/avr/avr/wdt.h b/cpukit/score/cpu/avr/avr/wdt.h index 0b424c9a83..7337e273b3 100644 --- a/cpukit/score/cpu/avr/avr/wdt.h +++ b/cpukit/score/cpu/avr/avr/wdt.h @@ -1,3 +1,8 @@ +/** + * @file + * + * @brief Watchdog Timer Handling + */ /* Copyright (c) 2002, 2004 Marek Michalkiewicz Copyright (c) 2005, 2006, 2007 Eric B. Weddington All rights reserved. @@ -40,59 +45,60 @@ #include <avr/io.h> #include <stdint.h> -/** \file */ -/** \defgroup avr_watchdog <avr/wdt.h>: Watchdog timer handling - \code #include <avr/wdt.h> \endcode - - This header file declares the interface to some inline macros - handling the watchdog timer present in many AVR devices. In order - to prevent the watchdog timer configuration from being - accidentally altered by a crashing application, a special timed - sequence is required in order to change it. The macros within - this header file handle the required sequence automatically - before changing any value. Interrupts will be disabled during - the manipulation. - - \note Depending on the fuse configuration of the particular - device, further restrictions might apply, in particular it might - be disallowed to turn off the watchdog timer. - - Note that for newer devices (ATmega88 and newer, effectively any - AVR that has the option to also generate interrupts), the watchdog - timer remains active even after a system reset (except a power-on - condition), using the fastest prescaler value (approximately 15 - ms). It is therefore required to turn off the watchdog early - during program startup, the datasheet recommends a sequence like - the following: - - \code - #include <stdint.h> - #include <avr/wdt.h> - - uint8_t mcusr_mirror __attribute__ ((section (".noinit"))); - - void get_mcusr(void) \ - __attribute__((naked)) \ - __attribute__((section(".init3"))); - void get_mcusr(void) - { - mcusr_mirror = MCUSR; - MCUSR = 0; - wdt_disable(); - } - \endcode - - Saving the value of MCUSR in \c mcusr_mirror is only needed if the - application later wants to examine the reset source, but in particular, - clearing the watchdog reset flag before disabling the - watchdog is required, according to the datasheet. +/** + * @defgroup avr_watchdog Watchdog Timer Handling + * + * This header file declares the interface to some inline macros + * handling the watchdog timer present in many AVR devices. In order + * to prevent the watchdog timer configuration from being + * accidentally altered by a crashing application, a special timed + * equence is required in order to change it. The macros within + * this header file handle the required sequence automatically + * before changing any value. Interrupts will be disabled during + * the manipulation. + * + * Note: Depending on the fuse configuration of the particular + * device, further restrictions might apply, in particular it might + * be disallowed to turn off the watchdog timer. + * + * Note that for newer devices (ATmega88 and newer, effectively any + * AVR that has the option to also generate interrupts), the watchdog + * timer remains active even after a system reset (except a power-on + * condition), using the fastest prescaler value (approximately 15 + * ms). It is therefore required to turn off the watchdog early + * during program startup, the datasheet recommends a sequence like + * the following: + * + * @code{.c} + * #include <stdint.h> + * #include <avr/wdt.h> + * + * uint8_t mcusr_mirror __attribute__ ((section (".noinit"))); + * + * void get_mcusr(void) \ + * __attribute__((naked)) \ + * __attribute__((section(".init3"))); + * void get_mcusr(void) + * { + * mcusr_mirror = MCUSR; + * MCUSR = 0; + * wdt_disable(); + * } + * @endcode + * + * Saving the value of MCUSR in @c mcusr_mirror is only needed if the + * application later wants to examine the reset source, but in particular, + * clearing the watchdog reset flag before disabling the + * watchdog is required, according to the datasheet. + * @{ */ /** - \ingroup avr_watchdog - Reset the watchdog timer. When the watchdog timer is enabled, - a call to this instruction is required before the timer expires, - otherwise a watchdog-initiated device reset will occur. + * @brief Watchdog Timer Reset + * + * Reset the watchdog timer. When the watchdog timer is enabled, + * a call to this instruction is required before the timer expires, + * otherwise a watchdog-initiated device reset will occur. */ #define wdt_reset() __asm__ __volatile__ ("wdr") @@ -118,14 +124,13 @@ /** - \ingroup avr_watchdog - Enable the watchdog timer, configuring it for expiry after - \c timeout (which is a combination of the \c WDP0 through - \c WDP2 bits to write into the \c WDTCR register; For those devices - that have a \c WDTCSR register, it uses the combination of the \c WDP0 - through \c WDP3 bits). - - See also the symbolic constants \c WDTO_15MS et al. + * Enable the watchdog timer, configuring it for expiry after + * @c timeout (which is a combination of the @c WDP0 through + * @c WDP2 bits to write into the @c WDTCR register; For those devices + * that have a @c WDTCSR register, it uses the combination of the @c WDP0 + * through @c WDP3 bits). + * + * See also the symbolic constants @c WDTO_15MS et al. */ @@ -317,10 +322,9 @@ __asm__ __volatile__ ( \ ) /** - \ingroup avr_watchdog - Disable the watchdog timer, if possible. This attempts to turn off the - Enable bit in the watchdog control register. See the datasheet for - details. + * Disable the watchdog timer, if possible. This attempts to turn off the + * Enable bit in the watchdog control register. See the datasheet for + * details. */ #define wdt_disable() \ __asm__ __volatile__ ( \ @@ -340,101 +344,77 @@ __asm__ __volatile__ ( \ /** - \ingroup avr_watchdog - Symbolic constants for the watchdog timeout. Since the watchdog - timer is based on a free-running RC oscillator, the times are - approximate only and apply to a supply voltage of 5 V. At lower - supply voltages, the times will increase. For older devices, the - times will be as large as three times when operating at Vcc = 3 V, - while the newer devices (e. g. ATmega128, ATmega8) only experience - a negligible change. - - Possible timeout values are: 15 ms, 30 ms, 60 ms, 120 ms, 250 ms, - 500 ms, 1 s, 2 s. (Some devices also allow for 4 s and 8 s.) - Symbolic constants are formed by the prefix - \c WDTO_, followed by the time. - - Example that would select a watchdog timer expiry of approximately - 500 ms: - \code - wdt_enable(WDTO_500MS); - \endcode + * Symbolic constants for the watchdog timeout. Since the watchdog + * timer is based on a free-running RC oscillator, the times are + * approximate only and apply to a supply voltage of 5 V. At lower + * supply voltages, the times will increase. For older devices, the + * times will be as large as three times when operating at Vcc = 3 V, + * while the newer devices (e. g. ATmega128, ATmega8) only experience + * a negligible change. + * + * Possible timeout values are: 15 ms, 30 ms, 60 ms, 120 ms, 250 ms, + * 500 ms, 1 s, 2 s. (Some devices also allow for 4 s and 8 s.) + * Symbolic constants are formed by the prefix + * @c WDTO_, followed by the time. + * + * Example that would select a watchdog timer expiry of approximately + * 500 ms: + * + * @code{.c} + * wdt_enable(WDTO_500MS); + * @endcode */ #define WDTO_15MS 0 -/** \ingroup avr_watchdog - See \c WDT0_15MS */ +/** @see WDT0_15MS */ #define WDTO_30MS 1 -/** \ingroup avr_watchdog See - \c WDT0_15MS */ +/** @see WDT0_15MS */ #define WDTO_60MS 2 -/** \ingroup avr_watchdog - See \c WDT0_15MS */ +/** @see WDT0_15MS */ #define WDTO_120MS 3 -/** \ingroup avr_watchdog - See \c WDT0_15MS */ +/** @see WDT0_15MS */ #define WDTO_250MS 4 -/** \ingroup avr_watchdog - See \c WDT0_15MS */ +/** @see WDT0_15MS */ #define WDTO_500MS 5 -/** \ingroup avr_watchdog - See \c WDT0_15MS */ +/** @see WDT0_15MS */ #define WDTO_1S 6 -/** \ingroup avr_watchdog - See \c WDT0_15MS */ +/** @see WDT0_15MS */ #define WDTO_2S 7 #if defined(__DOXYGEN__) || defined(WDP3) -/** \ingroup avr_watchdog - See \c WDT0_15MS - Note: This is only available on the - ATtiny2313, - ATtiny24, ATtiny44, ATtiny84, - ATtiny25, ATtiny45, ATtiny85, - ATtiny261, ATtiny461, ATtiny861, - ATmega48, ATmega88, ATmega168, - ATmega48P, ATmega88P, ATmega168P, ATmega328P, - ATmega164P, ATmega324P, ATmega644P, ATmega644, - ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, - ATmega8HVA, ATmega16HVA, ATmega32HVB, - ATmega406, ATmega1284P, - AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, - AT90PWM81, - AT90USB82, AT90USB162, - AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, - ATtiny48, ATtiny88. - */ +/** + * @see WDT0_15MS + * + * Note: This is only available on: + * ATtiny2313, + * ATtiny24, ATtiny44, ATtiny84, + * ATtiny25, ATtiny45, ATtiny85, + * ATtiny261, ATtiny461, ATtiny861, + * ATmega48, ATmega88, ATmega168, + * ATmega48P, ATmega88P, ATmega168P, ATmega328P, + * ATmega164P, ATmega324P, ATmega644P, ATmega644, + * ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, + * ATmega8HVA, ATmega16HVA, ATmega32HVB, + * ATmega406, ATmega1284P, + * AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, + * AT90PWM81, + * AT90USB82, AT90USB162, + * AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, + * ATtiny48, ATtiny88. + */ #define WDTO_4S 8 -/** \ingroup avr_watchdog - See \c WDT0_15MS - Note: This is only available on the - ATtiny2313, - ATtiny24, ATtiny44, ATtiny84, - ATtiny25, ATtiny45, ATtiny85, - ATtiny261, ATtiny461, ATtiny861, - ATmega48, ATmega88, ATmega168, - ATmega48P, ATmega88P, ATmega168P, ATmega328P, - ATmega164P, ATmega324P, ATmega644P, ATmega644, - ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, - ATmega8HVA, ATmega16HVA, ATmega32HVB, - ATmega406, ATmega1284P, - AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, - AT90PWM81, - AT90USB82, AT90USB162, - AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, - ATtiny48, ATtiny88. - */ +/** @see WDTO_4S */ #define WDTO_8S 9 #endif /* defined(__DOXYGEN__) || defined(WDP3) */ - +/** @} */ #endif /* _AVR_WDT_H_ */ diff --git a/cpukit/score/cpu/avr/rtems/asm.h b/cpukit/score/cpu/avr/rtems/asm.h index 89f1385b36..e93841d06e 100644 --- a/cpukit/score/cpu/avr/rtems/asm.h +++ b/cpukit/score/cpu/avr/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * @note The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available @@ -324,7 +327,7 @@ lpm / mov Rd,r0 lpm / adiw ZL,1 lpm / mov Rd,r0 / adiw ZL,1 - + For enhanced chips it is one instruction always. ATTENTION: unlike enhanced chips SREG (S,V,N,Z,C) flags are diff --git a/cpukit/score/cpu/avr/rtems/score/avr.h b/cpukit/score/cpu/avr/rtems/score/avr.h index 23ecbb3e76..cee1a24102 100644 --- a/cpukit/score/cpu/avr/rtems/score/avr.h +++ b/cpukit/score/cpu/avr/rtems/score/avr.h @@ -1,13 +1,16 @@ /** - * @file rtems/score/avr.h + * @file + * + * @brief Intel AVR Set up Basic CPU Dependency Settings Based on + * Compiler Settings + * + * This file sets up basic CPU dependency settings based on + * compiler settings. For example, it can determine if + * floating point is available. This particular implementation + * is specified to the avr port. */ /* - * This file sets up basic CPU dependency settings based on - * compiler settings. For example, it can determine if - * floating point is available. This particular implementation - * is specified to the avr port. - * * COPYRIGHT 2004, Ralf Corsepius, Ulm, Germany. * * The license and distribution terms for this file may be diff --git a/cpukit/score/cpu/avr/rtems/score/cpu.h b/cpukit/score/cpu/avr/rtems/score/cpu.h index 2bfcbceaf9..5f1577af20 100644 --- a/cpukit/score/cpu/avr/rtems/score/cpu.h +++ b/cpukit/score/cpu/avr/rtems/score/cpu.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/cpu.h + * @file + * + * @brief Intel AVR CPU Department Source + * + * This include file contains information pertaining to the AVR + * processor. */ /* - * This include file contains information pertaining to the AVR - * processor. - * * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/avr/rtems/score/cpu_asm.h b/cpukit/score/cpu/avr/rtems/score/cpu_asm.h index e3797a93f9..e11caec486 100644 --- a/cpukit/score/cpu/avr/rtems/score/cpu_asm.h +++ b/cpukit/score/cpu/avr/rtems/score/cpu_asm.h @@ -1,12 +1,14 @@ /** - * @file rtems/score/cpu_asm.h + * @file + * + * @brief Intel AVR Assembly File + * + * Very loose template for an include file for the cpu_asm.? file + * if it is implemented as a ".S" file (preprocessed by cpp) instead + * of a ".s" file (preprocessed by gm4 or gasp). */ /* - * Very loose template for an include file for the cpu_asm.? file - * if it is implemented as a ".S" file (preprocessed by cpp) instead - * of a ".s" file (preprocessed by gm4 or gasp). - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/avr/rtems/score/types.h b/cpukit/score/cpu/avr/rtems/score/types.h index 77eb0dbc30..a4710d3331 100644 --- a/cpukit/score/cpu/avr/rtems/score/types.h +++ b/cpukit/score/cpu/avr/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief Intel AVR CPU Type Definitions + * + * This include file contains type definitions pertaining to the Intel + * avr processor family. */ /* - * This include file contains type definitions pertaining to the Intel - * avr processor family. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/bfin/rtems/asm.h b/cpukit/score/cpu/bfin/rtems/asm.h index dbe0d7f407..5d133ddbdd 100644 --- a/cpukit/score/cpu/bfin/rtems/asm.h +++ b/cpukit/score/cpu/bfin/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * @note The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available @@ -38,24 +41,24 @@ #ifndef __USER_LABEL_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * Recent versions of GNU cpp define variables which indicate the + * need for underscores and percents. If not using GNU cpp or + * the version does not support this, then you will obviously + * have to define these as appropriate. * - * This symbol is prefixed to all C program symbols. + * This symbol is prefixed to all C program symbols. */ #define __USER_LABEL_PREFIX__ _ #endif #ifndef __REGISTER_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * Recent versions of GNU cpp define variables which indicate the + * need for underscores and percents. If not using GNU cpp or + * the version does not support this, then you will obviously + * have to define these as appropriate. * - * This symbol is prefixed to all register names. + * This symbol is prefixed to all register names. */ #define __REGISTER_PREFIX__ #endif @@ -95,8 +98,9 @@ #define BEGIN_DATA /** This macro is used to denote the end of a data section. */ #define END_DATA -/** This macro is used to denote the beginning of the - * unitialized data section. +/** + * This macro is used to denote the beginning of the + * unitialized data section. */ #define BEGIN_BSS /** This macro is used to denote the end of the unitialized data section. */ @@ -105,18 +109,18 @@ #define END /** - * This macro is used to declare a public global symbol. + * This macro is used to declare a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * @note This must be tailored for a particular flavor of the C compiler. + * They may need to put underscores in front of the symbols. */ #define PUBLIC(sym) .globl SYM (sym) /** - * This macro is used to prototype a public global symbol. + * This macro is used to prototype a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * @note This must be tailored for a particular flavor of the C compiler. + * They may need to put underscores in front of the symbols. */ #define EXTERN(sym) .globl SYM (sym) diff --git a/cpukit/score/cpu/bfin/rtems/bfin/bf52x.h b/cpukit/score/cpu/bfin/rtems/bfin/bf52x.h index 3c5bf7b3ef..7b4a41ac05 100644 --- a/cpukit/score/cpu/bfin/rtems/bfin/bf52x.h +++ b/cpukit/score/cpu/bfin/rtems/bfin/bf52x.h @@ -1,13 +1,17 @@ /** - *@file bf52x.h + * @file * - * This file defines basic MMR for the Blackfin 52x CPU. - * The MMR have been taken from the ADSP-BF52x Blackfin Processor - * Hardware Reference from Analog Devices. Mentioned Chapters - * refer to this Documentation. + * @brief Basic MMR for the Blackfin 52x CPU * - * Based on bf533.h + * This file defines basic MMR for the Blackfin 52x CPU. + * The MMR have been taken from the ADSP-BF52x Blackfin Processor + * Hardware Reference from Analog Devices. Mentioned Chapters + * refer to this Documentation. * + * Based on bf533.h + */ + +/* * COPYRIGHT (c) 2006. * Atos Automacao Industrial LTDA. * modified by Alain Schaefer <alain.schaefer@easc.ch> @@ -18,11 +22,8 @@ * http://www.rtems.com/license/LICENSE. * * - * @author Rohan Kangralkar, ECE Department Northeastern University - * @date 02/15/2011 - * - * HISTORY: - * + * Author: Rohan Kangralkar, ECE Department Northeastern University + * Date: 02/15/2011 */ #ifndef _RTEMS_BFIN_52x_H diff --git a/cpukit/score/cpu/bfin/rtems/bfin/bf533.h b/cpukit/score/cpu/bfin/rtems/bfin/bf533.h index 005a6fbb81..3ebff2cd90 100644 --- a/cpukit/score/cpu/bfin/rtems/bfin/bf533.h +++ b/cpukit/score/cpu/bfin/rtems/bfin/bf533.h @@ -1,14 +1,18 @@ -/* bfin.h +/** + * @file * - * This file defines basic MMR for the Blackfin 531/532/533 CPU. - * The MMR have been taken from the ADSP-BF533 Blackfin Processor - * Hardware Reference from Analog Devices. Mentioned Chapters - * refer to this Documentation. + * @brief Basic MMR for the Blackfin 531/532/533 CPU * - * The Blackfins MMRs are divided into core MMRs (0xFFE0 0000–0xFFFF FFFF) - * and System MMRs (0xFFC0 0000–0xFFE0 0000). The core MMRs are defined - * in bfin.h which is included. + * This file defines basic MMR for the Blackfin 531/532/533 CPU. + * The MMR have been taken from the ADSP-BF533 Blackfin Processor + * Hardware Reference from Analog Devices. Mentioned Chapters + * refer to this Documentation. * + * The Blackfins MMRs are divided into core MMRs (0xFFE0 0000–0xFFFF FFFF) + * and System MMRs (0xFFC0 0000–0xFFE0 0000). The core MMRs are defined + * in bfin.h which is included. + */ +/* * COPYRIGHT (c) 2006. * Atos Automacao Industrial LTDA. * modified by Alain Schaefer <alain.schaefer@easc.ch> diff --git a/cpukit/score/cpu/bfin/rtems/bfin/bfin.h b/cpukit/score/cpu/bfin/rtems/bfin/bfin.h index f3d6341d5c..ad7631d054 100644 --- a/cpukit/score/cpu/bfin/rtems/bfin/bfin.h +++ b/cpukit/score/cpu/bfin/rtems/bfin/bfin.h @@ -1,8 +1,12 @@ -/* bfin.h +/** + * @file * - * This file defines Macros for MMR register common to all Blackfin - * Processors. + * @brief Macros for MMR register common to all Blackfin Processors * + * This file defines Macros for MMR register common to all Blackfin + * Processors. + */ +/* * COPYRIGHT (c) 2006 by Atos Automacao Industrial Ltda. * modified by Alain Schaefer <alain.schaefer@easc.ch> * and Antonio Giovanini <antonio@atos.com.br> diff --git a/cpukit/score/cpu/bfin/rtems/score/bfin.h b/cpukit/score/cpu/bfin/rtems/score/bfin.h index 9eda79fd2d..2907840680 100644 --- a/cpukit/score/cpu/bfin/rtems/score/bfin.h +++ b/cpukit/score/cpu/bfin/rtems/score/bfin.h @@ -1,10 +1,16 @@ -/* bfin.h +/** + * @file * - * This file sets up basic CPU dependency settings based on - * compiler settings. For example, it can determine if - * floating point is available. This particular implementation - * is specified to the Blackfin port. + * @brief Blackfin Set up Basic CPU Dependency Settings Based on + * Compiler Settings * + * This file sets up basic CPU dependency settings based on + * compiler settings. For example, it can determine if + * floating point is available. This particular implementation + * is specified to the Blackfin port. + */ + +/* * * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/score/cpu/bfin/rtems/score/cpu.h b/cpukit/score/cpu/bfin/rtems/score/cpu.h index f6fab7543b..1b265276ba 100644 --- a/cpukit/score/cpu/bfin/rtems/score/cpu.h +++ b/cpukit/score/cpu/bfin/rtems/score/cpu.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/cpu.h + * @file + * + * @brief Blackfin CPU Department Source + * + * This include file contains information pertaining to the Blackfin + * processor. */ /* - * This include file contains information pertaining to the Blackfin - * processor. - * * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * adapted to Blackfin by Alain Schaefer <alain.schaefer@easc.ch> @@ -29,77 +31,77 @@ extern "C" { /* conditional compilation parameters */ /** - * Should the calls to @ref _Thread_Enable_dispatch be inlined? + * Should the calls to @ref _Thread_Enable_dispatch be inlined? * - * If TRUE, then they are inlined. - * If FALSE, then a subroutine call is made. + * If TRUE, then they are inlined. + * If FALSE, then a subroutine call is made. * - * This conditional is an example of the classic trade-off of size - * versus speed. Inlining the call (TRUE) typically increases the - * size of RTEMS while speeding up the enabling of dispatching. + * This conditional is an example of the classic trade-off of size + * versus speed. Inlining the call (TRUE) typically increases the + * size of RTEMS while speeding up the enabling of dispatching. * - * @note In general, the @ref _Thread_Dispatch_disable_level will - * only be 0 or 1 unless you are in an interrupt handler and that - * interrupt handler invokes the executive.] When not inlined - * something calls @ref _Thread_Enable_dispatch which in turns calls - * @ref _Thread_Dispatch. If the enable dispatch is inlined, then - * one subroutine call is avoided entirely. + * @note In general, the @ref _Thread_Dispatch_disable_level will + * only be 0 or 1 unless you are in an interrupt handler and that + * interrupt handler invokes the executive.] When not inlined + * something calls @ref _Thread_Enable_dispatch which in turns calls + * @ref _Thread_Dispatch. If the enable dispatch is inlined, then + * one subroutine call is avoided entirely. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INLINE_ENABLE_DISPATCH FALSE /** - * Should the body of the search loops in _Thread_queue_Enqueue_priority - * be unrolled one time? In unrolled each iteration of the loop examines - * two "nodes" on the chain being searched. Otherwise, only one node - * is examined per iteration. + * Should the body of the search loops in _Thread_queue_Enqueue_priority + * be unrolled one time? In unrolled each iteration of the loop examines + * two "nodes" on the chain being searched. Otherwise, only one node + * is examined per iteration. * - * If TRUE, then the loops are unrolled. - * If FALSE, then the loops are not unrolled. + * If TRUE, then the loops are unrolled. + * If FALSE, then the loops are not unrolled. * - * The primary factor in making this decision is the cost of disabling - * and enabling interrupts (_ISR_Flash) versus the cost of rest of the - * body of the loop. On some CPUs, the flash is more expensive than - * one iteration of the loop body. In this case, it might be desirable - * to unroll the loop. It is important to note that on some CPUs, this - * code is the longest interrupt disable period in RTEMS. So it is - * necessary to strike a balance when setting this parameter. + * The primary factor in making this decision is the cost of disabling + * and enabling interrupts (_ISR_Flash) versus the cost of rest of the + * body of the loop. On some CPUs, the flash is more expensive than + * one iteration of the loop body. In this case, it might be desirable + * to unroll the loop. It is important to note that on some CPUs, this + * code is the longest interrupt disable period in RTEMS. So it is + * necessary to strike a balance when setting this parameter. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_UNROLL_ENQUEUE_PRIORITY TRUE /** - * Does RTEMS manage a dedicated interrupt stack in software? + * Does RTEMS manage a dedicated interrupt stack in software? * - * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. - * If FALSE, nothing is done. + * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. + * If FALSE, nothing is done. * - * If the CPU supports a dedicated interrupt stack in hardware, - * then it is generally the responsibility of the BSP to allocate it - * and set it up. + * If the CPU supports a dedicated interrupt stack in hardware, + * then it is generally the responsibility of the BSP to allocate it + * and set it up. * - * If the CPU does not support a dedicated interrupt stack, then - * the porter has two options: (1) execute interrupts on the - * stack of the interrupted task, and (2) have RTEMS manage a dedicated - * interrupt stack. + * If the CPU does not support a dedicated interrupt stack, then + * the porter has two options: (1) execute interrupts on the + * stack of the interrupted task, and (2) have RTEMS manage a dedicated + * interrupt stack. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE @@ -130,84 +132,84 @@ extern "C" { #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE /** - * Does this CPU have hardware support for a dedicated interrupt stack? + * Does this CPU have hardware support for a dedicated interrupt stack? * - * If TRUE, then it must be installed during initialization. - * If FALSE, then no installation is performed. + * If TRUE, then it must be installed during initialization. + * If FALSE, then no installation is performed. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE /** - * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? + * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? * - * If TRUE, then the memory is allocated during initialization. - * If FALSE, then the memory is allocated during initialization. + * If TRUE, then the memory is allocated during initialization. + * If FALSE, then the memory is allocated during initialization. * - * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. + * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALLOCATE_INTERRUPT_STACK TRUE /** - * Does the RTEMS invoke the user's ISR with the vector number and - * a pointer to the saved interrupt frame (1) or just the vector - * number (0)? + * Does the RTEMS invoke the user's ISR with the vector number and + * a pointer to the saved interrupt frame (1) or just the vector + * number (0)? * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ISR_PASSES_FRAME_POINTER 1 /** - * @def CPU_HARDWARE_FP + * @def CPU_HARDWARE_FP * - * Does the CPU have hardware floating point? + * Does the CPU have hardware floating point? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. * - * If there is a FP coprocessor such as the i387 or mc68881, then - * the answer is TRUE. + * If there is a FP coprocessor such as the i387 or mc68881, then + * the answer is TRUE. * - * The macro name "NO_CPU_HAS_FPU" should be made CPU specific. - * It indicates whether or not this CPU model has FP support. For - * example, it would be possible to have an i386_nofp CPU model - * which set this to false to indicate that you have an i386 without - * an i387 and wish to leave floating point support out of RTEMS. + * The macro name "NO_CPU_HAS_FPU" should be made CPU specific. + * It indicates whether or not this CPU model has FP support. For + * example, it would be possible to have an i386_nofp CPU model + * which set this to false to indicate that you have an i386 without + * an i387 and wish to leave floating point support out of RTEMS. */ /** - * @def CPU_SOFTWARE_FP + * @def CPU_SOFTWARE_FP * - * Does the CPU have no hardware floating point and GCC provides a - * software floating point implementation which must be context - * switched? + * Does the CPU have no hardware floating point and GCC provides a + * software floating point implementation which must be context + * switched? * - * This feature conditional is used to indicate whether or not there - * is software implemented floating point that must be context - * switched. The determination of whether or not this applies - * is very tool specific and the state saved/restored is also - * compiler specific. + * This feature conditional is used to indicate whether or not there + * is software implemented floating point that must be context + * switched. The determination of whether or not this applies + * is very tool specific and the state saved/restored is also + * compiler specific. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if ( BLACKFIN_CPU_HAS_FPU == 1 ) #define CPU_HARDWARE_FP TRUE @@ -217,192 +219,194 @@ extern "C" { #define CPU_SOFTWARE_FP FALSE /** - * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? + * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. * - * So far, the only CPUs in which this option has been used are the - * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and - * gcc both implicitly used the floating point registers to perform - * integer multiplies. Similarly, the PowerPC port of gcc has been - * seen to allocate floating point local variables and touch the FPU - * even when the flow through a subroutine (like vfprintf()) might - * not use floating point formats. + * So far, the only CPUs in which this option has been used are the + * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and + * gcc both implicitly used the floating point registers to perform + * integer multiplies. Similarly, the PowerPC port of gcc has been + * seen to allocate floating point local variables and touch the FPU + * even when the flow through a subroutine (like vfprintf()) might + * not use floating point formats. * - * If a function which you would not think utilize the FP unit DOES, - * then one can not easily predict which tasks will use the FP hardware. - * In this case, this option should be TRUE. + * If a function which you would not think utilize the FP unit DOES, + * then one can not easily predict which tasks will use the FP hardware. + * In this case, this option should be TRUE. * - * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. + * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALL_TASKS_ARE_FP FALSE /** - * Should the IDLE task have a floating point context? + * Should the IDLE task have a floating point context? * - * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task - * and it has a floating point context which is switched in and out. - * If FALSE, then the IDLE task does not have a floating point context. + * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task + * and it has a floating point context which is switched in and out. + * If FALSE, then the IDLE task does not have a floating point context. * - * Setting this to TRUE negatively impacts the time required to preempt - * the IDLE task from an interrupt because the floating point context - * must be saved as part of the preemption. + * Setting this to TRUE negatively impacts the time required to preempt + * the IDLE task from an interrupt because the floating point context + * must be saved as part of the preemption. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_IDLE_TASK_IS_FP FALSE /** - * Should the saving of the floating point registers be deferred - * until a context switch is made to another different floating point - * task? + * Should the saving of the floating point registers be deferred + * until a context switch is made to another different floating point + * task? * - * If TRUE, then the floating point context will not be stored until - * necessary. It will remain in the floating point registers and not - * disturned until another floating point task is switched to. + * If TRUE, then the floating point context will not be stored until + * necessary. It will remain in the floating point registers and not + * disturned until another floating point task is switched to. * - * If FALSE, then the floating point context is saved when a floating - * point task is switched out and restored when the next floating point - * task is restored. The state of the floating point registers between - * those two operations is not specified. + * If FALSE, then the floating point context is saved when a floating + * point task is switched out and restored when the next floating point + * task is restored. The state of the floating point registers between + * those two operations is not specified. * - * If the floating point context does NOT have to be saved as part of - * interrupt dispatching, then it should be safe to set this to TRUE. + * If the floating point context does NOT have to be saved as part of + * interrupt dispatching, then it should be safe to set this to TRUE. * - * Setting this flag to TRUE results in using a different algorithm - * for deciding when to save and restore the floating point context. - * The deferred FP switch algorithm minimizes the number of times - * the FP context is saved and restored. The FP context is not saved - * until a context switch is made to another, different FP task. - * Thus in a system with only one FP task, the FP context will never - * be saved or restored. + * Setting this flag to TRUE results in using a different algorithm + * for deciding when to save and restore the floating point context. + * The deferred FP switch algorithm minimizes the number of times + * the FP context is saved and restored. The FP context is not saved + * until a context switch is made to another, different FP task. + * Thus in a system with only one FP task, the FP context will never + * be saved or restored. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_USE_DEFERRED_FP_SWITCH TRUE /** - * Does this port provide a CPU dependent IDLE task implementation? + * Does this port provide a CPU dependent IDLE task implementation? * - * If TRUE, then the routine @ref _CPU_Thread_Idle_body - * must be provided and is the default IDLE thread body instead of - * @ref _CPU_Thread_Idle_body. + * If TRUE, then the routine @ref _CPU_Thread_Idle_body + * must be provided and is the default IDLE thread body instead of + * @ref _CPU_Thread_Idle_body. * - * If FALSE, then use the generic IDLE thread body if the BSP does - * not provide one. + * If FALSE, then use the generic IDLE thread body if the BSP does + * not provide one. * - * This is intended to allow for supporting processors which have - * a low power or idle mode. When the IDLE thread is executed, then - * the CPU can be powered down. + * This is intended to allow for supporting processors which have + * a low power or idle mode. When the IDLE thread is executed, then + * the CPU can be powered down. * - * The order of precedence for selecting the IDLE thread body is: + * The order of precedence for selecting the IDLE thread body is: * - * -# BSP provided - * -# CPU dependent (if provided) - * -# generic (if no BSP and no CPU dependent) + * -# BSP provided + * -# CPU dependent (if provided) + * -# generic (if no BSP and no CPU dependent) * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PROVIDES_IDLE_THREAD_BODY TRUE /** - * Does the stack grow up (toward higher addresses) or down - * (toward lower addresses)? + * Does the stack grow up (toward higher addresses) or down + * (toward lower addresses)? * - * If TRUE, then the grows upward. - * If FALSE, then the grows toward smaller addresses. + * If TRUE, then the grows upward. + * If FALSE, then the grows toward smaller addresses. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_GROWS_UP FALSE /** - * The following is the variable attribute used to force alignment - * of critical RTEMS structures. On some processors it may make - * sense to have these aligned on tighter boundaries than - * the minimum requirements of the compiler in order to have as - * much of the critical data area as possible in a cache line. + * The following is the variable attribute used to force alignment + * of critical RTEMS structures. On some processors it may make + * sense to have these aligned on tighter boundaries than + * the minimum requirements of the compiler in order to have as + * much of the critical data area as possible in a cache line. * - * The placement of this macro in the declaration of the variables - * is based on the syntactically requirements of the GNU C - * "__attribute__" extension. For example with GNU C, use - * the following to force a structures to a 32 byte boundary. + * The placement of this macro in the declaration of the variables + * is based on the syntactically requirements of the GNU C + * "__attribute__" extension. For example with GNU C, use + * the following to force a structures to a 32 byte boundary. * - * __attribute__ ((aligned (32))) + * __attribute__ ((aligned (32))) * - * @note Currently only the Priority Bit Map table uses this feature. - * To benefit from using this, the data must be heavily - * used so it will stay in the cache and used frequently enough - * in the executive to justify turning this on. + * @note Currently only the Priority Bit Map table uses this feature. + * To benefit from using this, the data must be heavily + * used so it will stay in the cache and used frequently enough + * in the executive to justify turning this on. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STRUCTURE_ALIGNMENT #define CPU_TIMESTAMP_USE_INT64_INLINE TRUE /** - * @defgroup CPUEndian Processor Dependent Endianness Support + * @defgroup CPUEndian Processor Dependent Endianness Support + * + * This group assists in issues related to processor endianness. * - * This group assists in issues related to processor endianness. */ +/**@{**/ /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the - * same values. + * @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_LITTLE_ENDIAN + * @see CPU_LITTLE_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_BIG_ENDIAN FALSE /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the - * same values. + * @note @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_BIG_ENDIAN + * @see CPU_BIG_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_LITTLE_ENDIAN TRUE +/** @} */ + /** - * @ingroup CPUInterrupt - * The following defines the number of bits actually used in the - * interrupt field of the task mode. How those bits map to the - * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. + * @ingroup CPUInterrupt + * The following defines the number of bits actually used in the + * interrupt field of the task mode. How those bits map to the + * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MODES_INTERRUPT_MASK 0x00000001 @@ -419,52 +423,52 @@ extern "C" { /** * @defgroup CPUContext Processor Dependent Context Management * - * From the highest level viewpoint, there are 2 types of context to save. + * From the highest level viewpoint, there are 2 types of context to save. * - * -# Interrupt registers to save - * -# Task level registers to save + * -# Interrupt registers to save + * -# Task level registers to save * - * Since RTEMS handles integer and floating point contexts separately, this - * means we have the following 3 context items: + * Since RTEMS handles integer and floating point contexts separately, this + * means we have the following 3 context items: * - * -# task level context stuff:: Context_Control - * -# floating point task stuff:: Context_Control_fp - * -# special interrupt level context :: CPU_Interrupt_frame + * -# task level context stuff:: Context_Control + * -# floating point task stuff:: Context_Control_fp + * -# special interrupt level context :: CPU_Interrupt_frame * - * On some processors, it is cost-effective to save only the callee - * preserved registers during a task context switch. This means - * that the ISR code needs to save those registers which do not - * persist across function calls. It is not mandatory to make this - * distinctions between the caller/callee saves registers for the - * purpose of minimizing context saved during task switch and on interrupts. - * If the cost of saving extra registers is minimal, simplicity is the - * choice. Save the same context on interrupt entry as for tasks in - * this case. + * On some processors, it is cost-effective to save only the callee + * preserved registers during a task context switch. This means + * that the ISR code needs to save those registers which do not + * persist across function calls. It is not mandatory to make this + * distinctions between the caller/callee saves registers for the + * purpose of minimizing context saved during task switch and on interrupts. + * If the cost of saving extra registers is minimal, simplicity is the + * choice. Save the same context on interrupt entry as for tasks in + * this case. * - * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then - * care should be used in designing the context area. + * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then + * care should be used in designing the context area. * - * On some CPUs with hardware floating point support, the Context_Control_fp - * structure will not be used or it simply consist of an array of a - * fixed number of bytes. This is done when the floating point context - * is dumped by a "FP save context" type instruction and the format - * is not really defined by the CPU. In this case, there is no need - * to figure out the exact format -- only the size. Of course, although - * this is enough information for RTEMS, it is probably not enough for - * a debugger such as gdb. But that is another problem. + * On some CPUs with hardware floating point support, the Context_Control_fp + * structure will not be used or it simply consist of an array of a + * fixed number of bytes. This is done when the floating point context + * is dumped by a "FP save context" type instruction and the format + * is not really defined by the CPU. In this case, there is no need + * to figure out the exact format -- only the size. Of course, although + * this is enough information for RTEMS, it is probably not enough for + * a debugger such as gdb. But that is another problem. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ +/**@{**/ #ifndef ASM /** - * @ingroup CPUContext Management - * This defines the minimal set of integer and processor state registers - * that must be saved during a voluntary context switch from one thread - * to another. + * This defines the minimal set of integer and processor state registers + * that must be saved during a voluntary context switch from one thread + * to another. */ /* make sure this stays in sync with the assembly function @@ -490,9 +494,8 @@ typedef struct { (_context)->register_sp /** - * @ingroup CPUContext Management - * This defines the complete set of floating point registers that must - * be saved during any context switch from one thread to another. + * This defines the complete set of floating point registers that must + * be saved during any context switch from one thread to another. */ typedef struct { /* FPU registers are listed here */ @@ -500,49 +503,51 @@ typedef struct { } Context_Control_fp; /** - * @ingroup CPUContext Management - * This defines the set of integer and processor state registers that must - * be saved during an interrupt. This set does not include any which are - * in @ref Context_Control. + * This defines the set of integer and processor state registers that must + * be saved during an interrupt. This set does not include any which are + * in @ref Context_Control. */ typedef struct { /** This field is a hint that a port will have a number of integer - * registers that need to be saved when an interrupt occurs or - * when a context switch occurs at the end of an ISR. + * registers that need to be saved when an interrupt occurs or + * when a context switch occurs at the end of an ISR. */ /*uint32_t special_interrupt_register;*/ } CPU_Interrupt_frame; /** - * This variable is optional. It is used on CPUs on which it is difficult - * to generate an "uninitialized" FP context. It is filled in by - * @ref _CPU_Initialize and copied into the task's FP context area during - * @ref _CPU_Context_Initialize. + * This variable is optional. It is used on CPUs on which it is difficult + * to generate an "uninitialized" FP context. It is filled in by + * @ref _CPU_Initialize and copied into the task's FP context area during + * @ref _CPU_Context_Initialize. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; +/** @} */ + /** - * @defgroup CPUInterrupt Processor Dependent Interrupt Management + * @defgroup CPUInterrupt Processor Dependent Interrupt Management * - * On some CPUs, RTEMS supports a software managed interrupt stack. - * This stack is allocated by the Interrupt Manager and the switch - * is performed in @ref _ISR_Handler. These variables contain pointers - * to the lowest and highest addresses in the chunk of memory allocated - * for the interrupt stack. Since it is unknown whether the stack - * grows up or down (in general), this give the CPU dependent - * code the option of picking the version it wants to use. + * On some CPUs, RTEMS supports a software managed interrupt stack. + * This stack is allocated by the Interrupt Manager and the switch + * is performed in @ref _ISR_Handler. These variables contain pointers + * to the lowest and highest addresses in the chunk of memory allocated + * for the interrupt stack. Since it is unknown whether the stack + * grows up or down (in general), this give the CPU dependent + * code the option of picking the version it wants to use. * - * @note These two variables are required if the macro - * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. + * @note These two variables are required if the macro + * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ +/**@{**/ /* * Nothing prevents the porter from declaring more CPU specific variables. @@ -555,133 +560,135 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; /* XXX: if needed, put more variables here */ /** - * @ingroup CPUContext - * The size of the floating point context area. On some CPUs this - * will not be a "sizeof" because the format of the floating point - * area is not defined -- only the size is. This is usually on - * CPUs with a "floating point save context" instruction. + * @ingroup CPUContext + * The size of the floating point context area. On some CPUs this + * will not be a "sizeof" because the format of the floating point + * area is not defined -- only the size is. This is usually on + * CPUs with a "floating point save context" instruction. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_CONTEXT_FP_SIZE sizeof( Context_Control_fp ) #endif /* ASM */ /** - * Amount of extra stack (above minimum stack size) required by - * MPCI receive server thread. Remember that in a multiprocessor - * system this thread must exist and be able to process all directives. + * Amount of extra stack (above minimum stack size) required by + * MPCI receive server thread. Remember that in a multiprocessor + * system this thread must exist and be able to process all directives. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0 /** - * @ingroup CPUInterrupt - * This defines the number of entries in the @ref _ISR_Vector_table managed - * by RTEMS. + * @ingroup CPUInterrupt + * This defines the number of entries in the @ref _ISR_Vector_table managed + * by RTEMS. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INTERRUPT_NUMBER_OF_VECTORS 16 /** - * @ingroup CPUInterrupt - * This defines the highest interrupt vector number for this port. + * @ingroup CPUInterrupt + * This defines the highest interrupt vector number for this port. */ #define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER (CPU_INTERRUPT_NUMBER_OF_VECTORS - 1) /** - * @ingroup CPUInterrupt - * This is defined if the port has a special way to report the ISR nesting - * level. Most ports maintain the variable @a _ISR_Nest_level. + * @ingroup CPUInterrupt + * This is defined if the port has a special way to report the ISR nesting + * level. Most ports maintain the variable @a _ISR_Nest_level. */ #define CPU_PROVIDES_ISR_IS_IN_PROGRESS FALSE +/** @} */ + /** - * @ingroup CPUContext - * Should be large enough to run all RTEMS tests. This ensures - * that a "reasonable" small application should not have any problems. + * @ingroup CPUContext + * Should be large enough to run all RTEMS tests. This ensures + * that a "reasonable" small application should not have any problems. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_MINIMUM_SIZE (1024*8) #define CPU_SIZEOF_POINTER 4 /** - * CPU's worst alignment requirement for data types on a byte boundary. This - * alignment does not take into account the requirements for the stack. + * CPU's worst alignment requirement for data types on a byte boundary. This + * alignment does not take into account the requirements for the stack. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALIGNMENT 8 /** - * This number corresponds to the byte alignment requirement for the - * heap handler. This alignment requirement may be stricter than that - * for the data types alignment specified by @ref CPU_ALIGNMENT. It is - * common for the heap to follow the same alignment requirement as - * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for - * the heap, then this should be set to @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for the + * heap handler. This alignment requirement may be stricter than that + * for the data types alignment specified by @ref CPU_ALIGNMENT. It is + * common for the heap to follow the same alignment requirement as + * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for + * the heap, then this should be set to @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2 although it should be - * a multiple of 2 greater than or equal to 2. The requirement - * to be a multiple of 2 is because the heap uses the least - * significant field of the front and back flags to indicate - * that a block is in use or free. So you do not want any odd - * length blocks really putting length data in that bit. + * @note This does not have to be a power of 2 although it should be + * a multiple of 2 greater than or equal to 2. The requirement + * to be a multiple of 2 is because the heap uses the least + * significant field of the front and back flags to indicate + * that a block is in use or free. So you do not want any odd + * length blocks really putting length data in that bit. * - * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will - * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that - * elements allocated from the heap meet all restrictions. + * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will + * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that + * elements allocated from the heap meet all restrictions. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for memory - * buffers allocated by the partition manager. This alignment requirement - * may be stricter than that for the data types alignment specified by - * @ref CPU_ALIGNMENT. It is common for the partition to follow the same - * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is - * strict enough for the partition, then this should be set to - * @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for memory + * buffers allocated by the partition manager. This alignment requirement + * may be stricter than that for the data types alignment specified by + * @ref CPU_ALIGNMENT. It is common for the partition to follow the same + * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is + * strict enough for the partition, then this should be set to + * @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2. It does have to - * be greater or equal to than @ref CPU_ALIGNMENT. + * @note This does not have to be a power of 2. It does have to + * be greater or equal to than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PARTITION_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. If the - * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be - * set to 0. + * This number corresponds to the byte alignment requirement for the + * stack. This alignment requirement may be stricter than that for the + * data types alignment specified by @ref CPU_ALIGNMENT. If the + * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be + * set to 0. * - * @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. + * @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_ALIGNMENT 8 @@ -690,25 +697,28 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; */ /** - * @ingroup CPUInterrupt - * Support routine to initialize the RTEMS vector table after it is allocated. + * @addtogroup CPUInterrupt + */ +/**@{**/ + +/** + * Support routine to initialize the RTEMS vector table after it is allocated. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Initialize_vectors() /** - * @ingroup CPUInterrupt - * Disable all interrupts for an RTEMS critical section. The previous - * level is returned in @a _isr_cookie. + * Disable all interrupts for an RTEMS critical section. The previous + * level is returned in @a _isr_cookie. * - * @param[out] _isr_cookie will contain the previous level cookie + * @param[out] _isr_cookie will contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Disable( _level ) \ { \ @@ -717,33 +727,31 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; /** - * @ingroup CPUInterrupt - * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). - * This indicates the end of an RTEMS critical section. The parameter - * @a _isr_cookie is not modified. + * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). + * This indicates the end of an RTEMS critical section. The parameter + * @a _isr_cookie is not modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Enable( _level ) { \ __asm__ __volatile__ ("sti %0; csync \n" : : "d" (_level) ); \ } /** - * @ingroup CPUInterrupt - * This temporarily restores the interrupt to @a _isr_cookie before immediately - * disabling them again. This is used to divide long RTEMS critical - * sections into two or more parts. The parameter @a _isr_cookie is not - * modified. + * This temporarily restores the interrupt to @a _isr_cookie before immediately + * disabling them again. This is used to divide long RTEMS critical + * sections into two or more parts. The parameter @a _isr_cookie is not + * modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Flash( _level ) { \ __asm__ __volatile__ ("sti %0; csync; cli r0; csync" \ @@ -751,21 +759,19 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; } /** - * @ingroup CPUInterrupt + * This routine and @ref _CPU_ISR_Get_level + * Map the interrupt level in task mode onto the hardware that the CPU + * actually provides. Currently, interrupt levels which do not + * map onto the CPU in a generic fashion are undefined. Someday, + * it would be nice if these were "mapped" by the application + * via a callout. For example, m68k has 8 levels 0 - 7, levels + * 8 - 255 would be available for bsp/application specific meaning. + * This could be used to manage a programmable interrupt controller + * via the rtems_task_mode directive. * - * This routine and @ref _CPU_ISR_Get_level - * Map the interrupt level in task mode onto the hardware that the CPU - * actually provides. Currently, interrupt levels which do not - * map onto the CPU in a generic fashion are undefined. Someday, - * it would be nice if these were "mapped" by the application - * via a callout. For example, m68k has 8 levels 0 - 7, levels - * 8 - 255 would be available for bsp/application specific meaning. - * This could be used to manage a programmable interrupt controller - * via the rtems_task_mode directive. + * Port Specific Information: * - * Port Specific Information: - * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Set_level( _new_level ) \ { \ @@ -775,52 +781,53 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; #ifndef ASM /** - * @ingroup CPUInterrupt - * Return the current interrupt disable level for this task in - * the format used by the interrupt level portion of the task mode. + * Return the current interrupt disable level for this task in + * the format used by the interrupt level portion of the task mode. * - * @note This routine usually must be implemented as a subroutine. + * @note This routine usually must be implemented as a subroutine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ uint32_t _CPU_ISR_Get_level( void ); /* end of ISR handler macros */ +/** @} */ + /* Context handler macros */ /** - * @ingroup CPUContext - * Initialize the context to a state suitable for starting a - * task after a context restore operation. Generally, this - * involves: - * - * - setting a starting address - * - preparing the stack - * - preparing the stack and frame pointers - * - setting the proper interrupt level in the context - * - initializing the floating point context - * - * This routine generally does not set any unnecessary register - * in the context. The state of the "general data" registers is - * undefined at task start time. - * - * @param[in] _the_context is the context structure to be initialized - * @param[in] _stack_base is the lowest physical address of this task's stack - * @param[in] _size is the size of this task's stack - * @param[in] _isr is the interrupt disable level - * @param[in] _entry_point is the thread's entry point. This is - * always @a _Thread_Handler - * @param[in] _is_fp is TRUE if the thread is to be a floating - * point thread. This is typically only used on CPUs where the - * FPU may be easily disabled by software such as on the SPARC - * where the PSR contains an enable FPU bit. - * - * Port Specific Information: - * - * See implementation in cpu.c + * @ingroup CPUContext + * Initialize the context to a state suitable for starting a + * task after a context restore operation. Generally, this + * involves: + * + * - setting a starting address + * - preparing the stack + * - preparing the stack and frame pointers + * - setting the proper interrupt level in the context + * - initializing the floating point context + * + * This routine generally does not set any unnecessary register + * in the context. The state of the "general data" registers is + * undefined at task start time. + * + * @param[in] _the_context is the context structure to be initialized + * @param[in] _stack_base is the lowest physical address of this task's stack + * @param[in] _size is the size of this task's stack + * @param[in] _isr is the interrupt disable level + * @param[in] _entry_point is the thread's entry point. This is + * always @a _Thread_Handler + * @param[in] _is_fp is TRUE if the thread is to be a floating + * point thread. This is typically only used on CPUs where the + * FPU may be easily disabled by software such as on the SPARC + * where the PSR contains an enable FPU bit. + * + * Port Specific Information: + * + * See implementation in cpu.c */ void _CPU_Context_Initialize( Context_Control *the_context, @@ -832,65 +839,65 @@ void _CPU_Context_Initialize( ); /** - * This routine is responsible for somehow restarting the currently - * executing task. If you are lucky, then all that is necessary - * is restoring the context. Otherwise, there will need to be - * a special assembly routine which does something special in this - * case. For many ports, simply adding a label to the restore path - * of @ref _CPU_Context_switch will work. On other ports, it may be - * possibly to load a few arguments and jump to the restore path. It will - * not work if restarting self conflicts with the stack frame - * assumptions of restoring a context. + * This routine is responsible for somehow restarting the currently + * executing task. If you are lucky, then all that is necessary + * is restoring the context. Otherwise, there will need to be + * a special assembly routine which does something special in this + * case. For many ports, simply adding a label to the restore path + * of @ref _CPU_Context_switch will work. On other ports, it may be + * possibly to load a few arguments and jump to the restore path. It will + * not work if restarting self conflicts with the stack frame + * assumptions of restoring a context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Restart_self( _the_context ) \ _CPU_Context_restore( (_the_context) ); /** - * @ingroup CPUContext - * The purpose of this macro is to allow the initial pointer into - * a floating point context area (used to save the floating point - * context) to be at an arbitrary place in the floating point - * context area. + * @ingroup CPUContext + * The purpose of this macro is to allow the initial pointer into + * a floating point context area (used to save the floating point + * context) to be at an arbitrary place in the floating point + * context area. * - * This is necessary because some FP units are designed to have - * their context saved as a stack which grows into lower addresses. - * Other FP units can be saved by simply moving registers into offsets - * from the base of the context area. Finally some FP units provide - * a "dump context" instruction which could fill in from high to low - * or low to high based on the whim of the CPU designers. + * This is necessary because some FP units are designed to have + * their context saved as a stack which grows into lower addresses. + * Other FP units can be saved by simply moving registers into offsets + * from the base of the context area. Finally some FP units provide + * a "dump context" instruction which could fill in from high to low + * or low to high based on the whim of the CPU designers. * - * @param[in] _base is the lowest physical address of the floating point - * context area - * @param[in] _offset is the offset into the floating point area + * @param[in] _base is the lowest physical address of the floating point + * context area + * @param[in] _offset is the offset into the floating point area * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Fp_start( _base, _offset ) \ ( (void *) _Addresses_Add_offset( (_base), (_offset) ) ) /** - * This routine initializes the FP context area passed to it to. - * There are a few standard ways in which to initialize the - * floating point context. The code included for this macro assumes - * that this is a CPU in which a "initial" FP context was saved into - * @a _CPU_Null_fp_context and it simply copies it to the destination - * context passed to it. + * This routine initializes the FP context area passed to it to. + * There are a few standard ways in which to initialize the + * floating point context. The code included for this macro assumes + * that this is a CPU in which a "initial" FP context was saved into + * @a _CPU_Null_fp_context and it simply copies it to the destination + * context passed to it. * - * Other floating point context save/restore models include: - * -# not doing anything, and - * -# putting a "null FP status word" in the correct place in the FP context. + * Other floating point context save/restore models include: + * -# not doing anything, and + * -# putting a "null FP status word" in the correct place in the FP context. * - * @param[in] _destination is the floating point context area + * @param[in] _destination is the floating point context area * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Initialize_fp( _destination ) \ { \ @@ -902,13 +909,13 @@ void _CPU_Context_Initialize( /* Fatal Error manager macros */ /** - * This routine copies _error into a known place -- typically a stack - * location or a register, optionally disables interrupts, and - * halts/stops the CPU. + * This routine copies _error into a known place -- typically a stack + * location or a register, optionally disables interrupts, and + * halts/stops the CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Fatal_halt( _error ) \ { \ @@ -925,68 +932,66 @@ void _CPU_Context_Initialize( /* Bitfield handler macros */ /** - * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation + * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation * - * This set of routines are used to implement fast searches for - * the most important ready task. + * This set of routines are used to implement fast searches for + * the most important ready task. */ +/**@{**/ /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the generic bitfield - * manipulation implementation. + * This definition is set to TRUE if the port uses the generic bitfield + * manipulation implementation. */ #define CPU_USE_GENERIC_BITFIELD_CODE TRUE /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the data tables provided - * by the generic bitfield manipulation implementation. - * This can occur when actually using the generic bitfield manipulation - * implementation or when implementing the same algorithm in assembly - * language for improved performance. It is unlikely that a port will use - * the data if it has a bitfield scan instruction. + * This definition is set to TRUE if the port uses the data tables provided + * by the generic bitfield manipulation implementation. + * This can occur when actually using the generic bitfield manipulation + * implementation or when implementing the same algorithm in assembly + * language for improved performance. It is unlikely that a port will use + * the data if it has a bitfield scan instruction. */ #define CPU_USE_GENERIC_BITFIELD_DATA TRUE /** - * @ingroup CPUBitfield - * This routine sets @a _output to the bit number of the first bit - * set in @a _value. @a _value is of CPU dependent type - * @a Priority_bit_map_Control. This type may be either 16 or 32 bits - * wide although only the 16 least significant bits will be used. - * - * There are a number of variables in using a "find first bit" type - * instruction. - * - * -# What happens when run on a value of zero? - * -# Bits may be numbered from MSB to LSB or vice-versa. - * -# The numbering may be zero or one based. - * -# The "find first bit" instruction may search from MSB or LSB. - * - * RTEMS guarantees that (1) will never happen so it is not a concern. - * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and - * @ref _CPU_Priority_bits_index. These three form a set of routines - * which must logically operate together. Bits in the _value are - * set and cleared based on masks built by @ref _CPU_Priority_Mask. - * The basic major and minor values calculated by @ref _Priority_Major - * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index - * to properly range between the values returned by the "find first bit" - * instruction. This makes it possible for @ref _Priority_Get_highest to - * calculate the major and directly index into the minor table. - * This mapping is necessary to ensure that 0 (a high priority major/minor) - * is the first bit found. - * - * This entire "find first bit" and mapping process depends heavily - * on the manner in which a priority is broken into a major and minor - * components with the major being the 4 MSB of a priority and minor - * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest - * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next - * to the lowest priority. - * - * If your CPU does not have a "find first bit" instruction, then - * there are ways to make do without it. Here are a handful of ways - * to implement this in software: + * This routine sets @a _output to the bit number of the first bit + * set in @a _value. @a _value is of CPU dependent type + * @a Priority_bit_map_Control. This type may be either 16 or 32 bits + * wide although only the 16 least significant bits will be used. + * + * There are a number of variables in using a "find first bit" type + * instruction. + * + * -# What happens when run on a value of zero? + * -# Bits may be numbered from MSB to LSB or vice-versa. + * -# The numbering may be zero or one based. + * -# The "find first bit" instruction may search from MSB or LSB. + * + * RTEMS guarantees that (1) will never happen so it is not a concern. + * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and + * @ref _CPU_Priority_bits_index. These three form a set of routines + * which must logically operate together. Bits in the _value are + * set and cleared based on masks built by @ref _CPU_Priority_Mask. + * The basic major and minor values calculated by @ref _Priority_Major + * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index + * to properly range between the values returned by the "find first bit" + * instruction. This makes it possible for @ref _Priority_Get_highest to + * calculate the major and directly index into the minor table. + * This mapping is necessary to ensure that 0 (a high priority major/minor) + * is the first bit found. + * + * This entire "find first bit" and mapping process depends heavily + * on the manner in which a priority is broken into a major and minor + * components with the major being the 4 MSB of a priority and minor + * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest + * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next + * to the lowest priority. + * + * If your CPU does not have a "find first bit" instruction, then + * there are ways to make do without it. Here are a handful of ways + * to implement this in software: * @verbatim - a series of 16 bit test instructions @@ -1003,15 +1008,15 @@ void _CPU_Context_Initialize( _number += bit_set_table[ _value ] @endverbatim - * where bit_set_table[ 16 ] has values which indicate the first - * bit set + * where bit_set_table[ 16 ] has values which indicate the first + * bit set * - * @param[in] _value is the value to be scanned - * @param[in] _output is the first bit set + * @param[in] _value is the value to be scanned + * @param[in] _output is the first bit set * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1024,14 +1029,16 @@ void _CPU_Context_Initialize( /* end of Bitfield handler macros */ +/** @} */ + /** - * This routine builds the mask which corresponds to the bit fields - * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion - * for that routine. + * This routine builds the mask which corresponds to the bit fields + * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion + * for that routine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1041,17 +1048,17 @@ void _CPU_Context_Initialize( #endif /** - * @ingroup CPUBitfield - * This routine translates the bit numbers returned by - * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as - * a major or minor component of a priority. See the discussion - * for that routine. + * @ingroup CPUBitfield + * This routine translates the bit numbers returned by + * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as + * a major or minor component of a priority. See the discussion + * for that routine. * - * @param[in] _priority is the major or minor number to translate + * @param[in] _priority is the major or minor number to translate * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1065,27 +1072,27 @@ void _CPU_Context_Initialize( /* functions */ /** - * @brief CPU Initialize - * This routine performs CPU dependent initialization. + * @brief CPU initialize. + * This routine performs CPU dependent initialization. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Initialize(void); /** - * @ingroup CPUInterrupt - * This routine installs a "raw" interrupt handler directly into the - * processor's vector table. + * @ingroup CPUInterrupt + * This routine installs a "raw" interrupt handler directly into the + * processor's vector table. * - * @param[in] vector is the vector number - * @param[in] new_handler is the raw ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * @param[in] vector is the vector number + * @param[in] new_handler is the raw ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_raw_handler( uint32_t vector, @@ -1094,16 +1101,16 @@ void _CPU_ISR_install_raw_handler( ); /** - * @ingroup CPUInterrupt - * This routine installs an interrupt vector. + * @ingroup CPUInterrupt + * This routine installs an interrupt vector. * - * @param[in] vector is the vector number - * @param[in] new_handler is the RTEMS ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * @param[in] vector is the vector number + * @param[in] new_handler is the RTEMS ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_vector( uint32_t vector, @@ -1112,40 +1119,44 @@ void _CPU_ISR_install_vector( ); /** - * @ingroup CPUInterrupt - * This routine installs the hardware interrupt stack pointer. + * @ingroup CPUInterrupt + * This routine installs the hardware interrupt stack pointer. * - * @note It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK - * is TRUE. + * @note It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK + * is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Install_interrupt_stack( void ); /** - * This routine is the CPU dependent IDLE thread body. + * This routine is the CPU dependent IDLE thread body. * - * @note It need only be provided if @ref CPU_PROVIDES_IDLE_THREAD_BODY - * is TRUE. + * @note It need only be provided if @ref CPU_PROVIDES_IDLE_THREAD_BODY + * is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void *_CPU_Thread_Idle_body( uintptr_t ignored ); /** - * @ingroup CPUContext - * This routine switches from the run context to the heir context. + * @addtogroup CPUContext + */ +/**@{**/ + +/** + * This routine switches from the run context to the heir context. * - * @param[in] run points to the context of the currently executing task - * @param[in] heir points to the context of the heir task + * @param[in] run points to the context of the currently executing task + * @param[in] heir points to the context of the heir task * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_switch( Context_Control *run, @@ -1153,90 +1164,89 @@ void _CPU_Context_switch( ); /** - * @ingroup CPUContext - * This routine is generally used only to restart self in an - * efficient manner. It may simply be a label in @ref _CPU_Context_switch. + * This routine is generally used only to restart self in an + * efficient manner. It may simply be a label in @ref _CPU_Context_switch. * - * @param[in] new_context points to the context to be restored. + * @param[in] new_context points to the context to be restored. * - * @note May be unnecessary to reload some registers. + * @note May be unnecessary to reload some registers. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore( Context_Control *new_context ) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; /** - * @ingroup CPUContext - * This routine saves the floating point context passed to it. + * This routine saves the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_restore_fp to restore this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_restore_fp to restore this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_save_fp( Context_Control_fp **fp_context_ptr ); /** - * @ingroup CPUContext - * This routine restores the floating point context passed to it. + * This routine restores the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area to restore + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area to restore * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_save_fp to save this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_save_fp to save this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore_fp( Context_Control_fp **fp_context_ptr ); +/** @} */ + /* FIXME */ typedef CPU_Interrupt_frame CPU_Exception_frame; void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); /** - * @ingroup CPUEndian - * The following routine swaps the endian format of an unsigned int. - * It must be static because it is referenced indirectly. + * @ingroup CPUEndian + * The following routine swaps the endian format of an unsigned int. + * It must be static because it is referenced indirectly. * - * This version will work on any processor, but if there is a better - * way for your CPU PLEASE use it. The most common way to do this is to: + * This version will work on any processor, but if there is a better + * way for your CPU PLEASE use it. The most common way to do this is to: * - * swap least significant two bytes with 16-bit rotate - * swap upper and lower 16-bits - * swap most significant two bytes with 16-bit rotate + * swap least significant two bytes with 16-bit rotate + * swap upper and lower 16-bits + * swap most significant two bytes with 16-bit rotate * - * Some CPUs have special instructions which swap a 32-bit quantity in - * a single instruction (e.g. i486). It is probably best to avoid - * an "endian swapping control bit" in the CPU. One good reason is - * that interrupts would probably have to be disabled to ensure that - * an interrupt does not try to access the same "chunk" with the wrong - * endian. Another good reason is that on some CPUs, the endian bit - * endianness for ALL fetches -- both code and data -- so the code - * will be fetched incorrectly. + * Some CPUs have special instructions which swap a 32-bit quantity in + * a single instruction (e.g. i486). It is probably best to avoid + * an "endian swapping control bit" in the CPU. One good reason is + * that interrupts would probably have to be disabled to ensure that + * an interrupt does not try to access the same "chunk" with the wrong + * endian. Another good reason is that on some CPUs, the endian bit + * endianness for ALL fetches -- both code and data -- so the code + * will be fetched incorrectly. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ static inline uint32_t CPU_swap_u32( uint32_t value @@ -1254,11 +1264,11 @@ static inline uint32_t CPU_swap_u32( } /** - * @ingroup CPUEndian - * This routine swaps a 16 bir quantity. + * @ingroup CPUEndian + * This routine swaps a 16 bir quantity. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped */ #define CPU_swap_u16( value ) \ (((value&0xff) << 8) | ((value >> 8)&0xff)) diff --git a/cpukit/score/cpu/bfin/rtems/score/cpu_asm.h b/cpukit/score/cpu/bfin/rtems/score/cpu_asm.h index 7d23bc5a9a..f9543f15a7 100644 --- a/cpukit/score/cpu/bfin/rtems/score/cpu_asm.h +++ b/cpukit/score/cpu/bfin/rtems/score/cpu_asm.h @@ -1,10 +1,12 @@ /** - * @file rtems/score/cpu_asm.h + * @file + * + * @brief Blackfin Assembly File + * + * Defines a couple of Macros used in cpu_asm.S */ /* - * Defines a couple of Macros used in cpu_asm.S - * * COPYRIGHT (c) 2006 by Atos Automacao Industrial Ltda. * written by Alain Schaefer <alain.schaefer@easc.ch> * and Antonio Giovanini <antonio@atos.com.br> diff --git a/cpukit/score/cpu/bfin/rtems/score/types.h b/cpukit/score/cpu/bfin/rtems/score/types.h index 4f734bb033..5d4e12eb95 100644 --- a/cpukit/score/cpu/bfin/rtems/score/types.h +++ b/cpukit/score/cpu/bfin/rtems/score/types.h @@ -1,7 +1,13 @@ -/* - * This include file contains type definitions pertaining to the - * Blackfin processor family. +/** + * @file + * + * @brief Blackfin CPU Type Definitions * + * This include file contains type definitions pertaining to the + * Blackfin processor family. + */ + +/* * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/h8300/rtems/asm.h b/cpukit/score/cpu/h8300/rtems/asm.h index 0f4adee915..a9fad26252 100644 --- a/cpukit/score/cpu/h8300/rtems/asm.h +++ b/cpukit/score/cpu/h8300/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available @@ -69,23 +72,23 @@ */ #define r0 REG(r0) #define r1 REG(r1) -#define r2 REG(r2) -#define r3 REG(r3) -#define r4 REG(r4) -#define r5 REG(r5) -#define r6 REG(r6) -#define r7 REG(r7) +#define r2 REG(r2) +#define r3 REG(r3) +#define r4 REG(r4) +#define r5 REG(r5) +#define r6 REG(r6) +#define r7 REG(r7) #define er0 REG(er0) #define er1 REG(er1) -#define er2 REG(er2) -#define er3 REG(er3) -#define er4 REG(er4) -#define er5 REG(er5) -#define er6 REG(er6) -#define er7 REG(er7) - -#define sp REG(sp) +#define er2 REG(er2) +#define er3 REG(er3) +#define er4 REG(er4) +#define er5 REG(er5) +#define er6 REG(er6) +#define er7 REG(er7) + +#define sp REG(sp) /* * Define macros to handle section beginning and ends. diff --git a/cpukit/score/cpu/h8300/rtems/score/cpu.h b/cpukit/score/cpu/h8300/rtems/score/cpu.h index f8f41a821e..6031f9689b 100644 --- a/cpukit/score/cpu/h8300/rtems/score/cpu.h +++ b/cpukit/score/cpu/h8300/rtems/score/cpu.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/cpu.h + * @file + * + * @brief Hitachi H8300 CPU Department Source + * + * This include file contains information pertaining to the H8300 + * processor. */ /* - * This include file contains information pertaining to the H8300 - * processor. - * * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/h8300/rtems/score/h8300.h b/cpukit/score/cpu/h8300/rtems/score/h8300.h index dd7a3ec11b..3b5e87d626 100644 --- a/cpukit/score/cpu/h8300/rtems/score/h8300.h +++ b/cpukit/score/cpu/h8300/rtems/score/h8300.h @@ -1,11 +1,14 @@ /** - * @file rtems/score/h8300.h + * @file + * + * @brief Information Required to Build RTEMS for a Particular Member + * of the Hitachi H8/300 Family + * + * This file contains information pertaining to the Hitachi H8/300 + * processor family. */ /* - * This file contains information pertaining to the Hitachi H8/300 - * processor family. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/h8300/rtems/score/types.h b/cpukit/score/cpu/h8300/rtems/score/types.h index fae136ab45..f832c186fe 100644 --- a/cpukit/score/cpu/h8300/rtems/score/types.h +++ b/cpukit/score/cpu/h8300/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief Hitachi H8300 CPU Type Definitions + * + * This include file contains type definitions pertaining to the Hitachi + * h8300 processor family. */ /* - * This include file contains type definitions pertaining to the Hitachi - * h8300 processor family. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/i386/rtems/asm.h b/cpukit/score/cpu/i386/rtems/asm.h index 29594e0844..50b0fd71a0 100644 --- a/cpukit/score/cpu/i386/rtems/asm.h +++ b/cpukit/score/cpu/i386/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available diff --git a/cpukit/score/cpu/i386/rtems/score/cpu.h b/cpukit/score/cpu/i386/rtems/score/cpu.h index 03d6209981..66676047f8 100644 --- a/cpukit/score/cpu/i386/rtems/score/cpu.h +++ b/cpukit/score/cpu/i386/rtems/score/cpu.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/cpu.h + * @file + * + * @brief Intel I386 CPU Dependent Source + * + * This include file contains information pertaining to the Intel + * i386 processor. */ /* - * This include file contains information pertaining to the Intel - * i386 processor. - * * COPYRIGHT (c) 1989-2011. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/i386/rtems/score/i386.h b/cpukit/score/cpu/i386/rtems/score/i386.h index 8b98f4ba28..b21fb93957 100644 --- a/cpukit/score/cpu/i386/rtems/score/i386.h +++ b/cpukit/score/cpu/i386/rtems/score/i386.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/i386.h + * @file + * + * @brief Intel I386 CPU Dependent Source + * + * This include file contains information pertaining to the Intel + * i386 processor. */ /* - * This include file contains information pertaining to the Intel - * i386 processor. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/i386/rtems/score/idtr.h b/cpukit/score/cpu/i386/rtems/score/idtr.h index 401aebe2fa..8358fd5a16 100644 --- a/cpukit/score/cpu/i386/rtems/score/idtr.h +++ b/cpukit/score/cpu/i386/rtems/score/idtr.h @@ -1,19 +1,21 @@ /** - * @file rtems/score/idtr.h - */ - -/* + * @file + * + * @brief Intel I386 Data Structures + * * This file contains definitions for data structure related * to Intel system programming. More information can be found * on Intel site and more precisely in the following book : * - * Pentium Processor familly - * Developper's Manual + * Pentium Processor familly + * Developper's Manual * - * Volume 3 : Architecture and Programming Manual + * Volume 3 : Architecture and Programming Manual * * Formerly contained in and extracted from libcpu/i386/cpu.h. - * + */ + +/* * COPYRIGHT (C) 1998 Eric Valette (valette@crf.canon.fr) * Canon Centre Recherche France. * diff --git a/cpukit/score/cpu/i386/rtems/score/interrupts.h b/cpukit/score/cpu/i386/rtems/score/interrupts.h index 08ad2b16c0..bed6330781 100644 --- a/cpukit/score/cpu/i386/rtems/score/interrupts.h +++ b/cpukit/score/cpu/i386/rtems/score/interrupts.h @@ -1,12 +1,12 @@ /** - * @file rtems/score/interrupts.h + * @file + * + * @brief Intel I386 Interrupt Macros + * + * Formerly contained in and extracted from libcpu/i386/cpu.h */ /* - * i386 interrupt macros. - * - * Formerly contained in and extracted from libcpu/i386/cpu.h - * * COPYRIGHT (c) 1998 valette@crf.canon.fr * * The license and distribution terms for this file may be @@ -28,9 +28,11 @@ typedef void (*rtems_raw_irq_enable) (const struct __rtems_raw_irq_connect_data typedef void (*rtems_raw_irq_disable) (const struct __rtems_raw_irq_connect_data__*); typedef int (*rtems_raw_irq_is_enabled) (const struct __rtems_raw_irq_connect_data__*); -/* - * Interrupt Level Macros +/** + * @name Interrupt Level Macros + * */ +/**@{**/ #define i386_disable_interrupts( _level ) \ { \ @@ -73,5 +75,7 @@ typedef int (*rtems_raw_irq_is_enabled) (const struct __rtems_raw_irq_connect_d #define _CPU_ISR_Disable( _level ) i386_disable_interrupts( _level ) #define _CPU_ISR_Enable( _level ) i386_enable_interrupts( _level ) +/** @} */ + #endif #endif diff --git a/cpukit/score/cpu/i386/rtems/score/registers.h b/cpukit/score/cpu/i386/rtems/score/registers.h index 2b8f7700cd..f9754dcedb 100644 --- a/cpukit/score/cpu/i386/rtems/score/registers.h +++ b/cpukit/score/cpu/i386/rtems/score/registers.h @@ -1,10 +1,12 @@ /** - * @file rtems/score/registers.h + * @file + * + * @brief Intel CPU Constants and Definitions + * + * This file contains definition and constants related to Intel Cpu */ /* - * This file contains definition and constants related to Intel Cpu - * * COPYRIGHT (c) 1998 valette@crf.canon.fr * * The license and distribution terms for this file may be diff --git a/cpukit/score/cpu/i386/rtems/score/types.h b/cpukit/score/cpu/i386/rtems/score/types.h index b2c9d3ec57..104b0fcc92 100644 --- a/cpukit/score/cpu/i386/rtems/score/types.h +++ b/cpukit/score/cpu/i386/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief Intel I386 CPU Type Definitions + * + * This include file contains type definitions pertaining to the Intel + * i386 processor family. */ /* - * This include file contains type definitions pertaining to the Intel - * i386 processor family. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/lm32/rtems/asm.h b/cpukit/score/cpu/lm32/rtems/asm.h index df16e4efdc..15046df81c 100644 --- a/cpukit/score/cpu/lm32/rtems/asm.h +++ b/cpukit/score/cpu/lm32/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available @@ -38,24 +41,24 @@ #ifndef __USER_LABEL_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * Recent versions of GNU cpp define variables which indicate the + * need for underscores and percents. If not using GNU cpp or + * the version does not support this, then you will obviously + * have to define these as appropriate. * - * This symbol is prefixed to all C program symbols. + * This symbol is prefixed to all C program symbols. */ #define __USER_LABEL_PREFIX__ _ #endif #ifndef __REGISTER_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * Recent versions of GNU cpp define variables which indicate the + * need for underscores and percents. If not using GNU cpp or + * the version does not support this, then you will obviously + * have to define these as appropriate. * - * This symbol is prefixed to all register names. + * This symbol is prefixed to all register names. */ #define __REGISTER_PREFIX__ #endif @@ -95,8 +98,9 @@ #define BEGIN_DATA /** This macro is used to denote the end of a data section. */ #define END_DATA -/** This macro is used to denote the beginning of the - * unitialized data section. +/** + * This macro is used to denote the beginning of the + * unitialized data section. */ #define BEGIN_BSS /** This macro is used to denote the end of the unitialized data section. */ @@ -105,18 +109,18 @@ #define END /** - * This macro is used to declare a public global symbol. + * This macro is used to declare a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * NOTE: This must be tailored for a particular flavor of the C compiler. + * They may need to put underscores in front of the symbols. */ #define PUBLIC(sym) .globl SYM (sym) /** - * This macro is used to prototype a public global symbol. + * This macro is used to prototype a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * NOTE: This must be tailored for a particular flavor of the C compiler. + * They may need to put underscores in front of the symbols. */ #define EXTERN(sym) .globl SYM (sym) diff --git a/cpukit/score/cpu/lm32/rtems/score/cpu.h b/cpukit/score/cpu/lm32/rtems/score/cpu.h index 7f10a53820..1f8a370700 100644 --- a/cpukit/score/cpu/lm32/rtems/score/cpu.h +++ b/cpukit/score/cpu/lm32/rtems/score/cpu.h @@ -1,10 +1,10 @@ /** - * @file rtems/score/cpu.h - */ - -/* - * This include file contains information pertaining to the LM32 - * processor. + * @file + * + * @brief LM32 CPU Department Source + * + * This include file contains information pertaining to the LM32 + * processor. */ /* @@ -29,363 +29,365 @@ extern "C" { /* conditional compilation parameters */ /** - * Should the calls to @ref _Thread_Enable_dispatch be inlined? + * Should the calls to @ref _Thread_Enable_dispatch be inlined? * - * If TRUE, then they are inlined. - * If FALSE, then a subroutine call is made. + * If TRUE, then they are inlined. + * If FALSE, then a subroutine call is made. * - * This conditional is an example of the classic trade-off of size - * versus speed. Inlining the call (TRUE) typically increases the - * size of RTEMS while speeding up the enabling of dispatching. + * This conditional is an example of the classic trade-off of size + * versus speed. Inlining the call (TRUE) typically increases the + * size of RTEMS while speeding up the enabling of dispatching. * - * @note In general, the @ref _Thread_Dispatch_disable_level will - * only be 0 or 1 unless you are in an interrupt handler and that - * interrupt handler invokes the executive.] When not inlined - * something calls @ref _Thread_Enable_dispatch which in turns calls - * @ref _Thread_Dispatch. If the enable dispatch is inlined, then - * one subroutine call is avoided entirely. + * NOTE: In general, the @ref _Thread_Dispatch_disable_level will + * only be 0 or 1 unless you are in an interrupt handler and that + * interrupt handler invokes the executive.] When not inlined + * something calls @ref _Thread_Enable_dispatch which in turns calls + * @ref _Thread_Dispatch. If the enable dispatch is inlined, then + * one subroutine call is avoided entirely. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INLINE_ENABLE_DISPATCH FALSE /** - * Should the body of the search loops in _Thread_queue_Enqueue_priority - * be unrolled one time? In unrolled each iteration of the loop examines - * two "nodes" on the chain being searched. Otherwise, only one node - * is examined per iteration. + * Should the body of the search loops in _Thread_queue_Enqueue_priority + * be unrolled one time? In unrolled each iteration of the loop examines + * two "nodes" on the chain being searched. Otherwise, only one node + * is examined per iteration. * - * If TRUE, then the loops are unrolled. - * If FALSE, then the loops are not unrolled. + * If TRUE, then the loops are unrolled. + * If FALSE, then the loops are not unrolled. * - * The primary factor in making this decision is the cost of disabling - * and enabling interrupts (_ISR_Flash) versus the cost of rest of the - * body of the loop. On some CPUs, the flash is more expensive than - * one iteration of the loop body. In this case, it might be desirable - * to unroll the loop. It is important to note that on some CPUs, this - * code is the longest interrupt disable period in RTEMS. So it is - * necessary to strike a balance when setting this parameter. + * The primary factor in making this decision is the cost of disabling + * and enabling interrupts (_ISR_Flash) versus the cost of rest of the + * body of the loop. On some CPUs, the flash is more expensive than + * one iteration of the loop body. In this case, it might be desirable + * to unroll the loop. It is important to note that on some CPUs, this + * code is the longest interrupt disable period in RTEMS. So it is + * necessary to strike a balance when setting this parameter. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_UNROLL_ENQUEUE_PRIORITY TRUE /** - * Does RTEMS manage a dedicated interrupt stack in software? + * Does RTEMS manage a dedicated interrupt stack in software? * - * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. - * If FALSE, nothing is done. + * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. + * If FALSE, nothing is done. * - * If the CPU supports a dedicated interrupt stack in hardware, - * then it is generally the responsibility of the BSP to allocate it - * and set it up. + * If the CPU supports a dedicated interrupt stack in hardware, + * then it is generally the responsibility of the BSP to allocate it + * and set it up. * - * If the CPU does not support a dedicated interrupt stack, then - * the porter has two options: (1) execute interrupts on the - * stack of the interrupted task, and (2) have RTEMS manage a dedicated - * interrupt stack. + * If the CPU does not support a dedicated interrupt stack, then + * the porter has two options: (1) execute interrupts on the + * stack of the interrupted task, and (2) have RTEMS manage a dedicated + * interrupt stack. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE /** - * Does the CPU follow the simple vectored interrupt model? + * Does the CPU follow the simple vectored interrupt model? * - * If TRUE, then RTEMS allocates the vector table it internally manages. - * If FALSE, then the BSP is assumed to allocate and manage the vector - * table + * If TRUE, then RTEMS allocates the vector table it internally manages. + * If FALSE, then the BSP is assumed to allocate and manage the vector + * table * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE /** - * Does this CPU have hardware support for a dedicated interrupt stack? + * Does this CPU have hardware support for a dedicated interrupt stack? * - * If TRUE, then it must be installed during initialization. - * If FALSE, then no installation is performed. + * If TRUE, then it must be installed during initialization. + * If FALSE, then no installation is performed. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE /** - * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? + * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? * - * If TRUE, then the memory is allocated during initialization. - * If FALSE, then the memory is allocated during initialization. + * If TRUE, then the memory is allocated during initialization. + * If FALSE, then the memory is allocated during initialization. * - * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. + * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALLOCATE_INTERRUPT_STACK TRUE /** - * Does the RTEMS invoke the user's ISR with the vector number and - * a pointer to the saved interrupt frame (1) or just the vector - * number (0)? + * Does the RTEMS invoke the user's ISR with the vector number and + * a pointer to the saved interrupt frame (1) or just the vector + * number (0)? * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ISR_PASSES_FRAME_POINTER 1 /** - * @def CPU_HARDWARE_FP + * @def CPU_HARDWARE_FP * - * Does the CPU have hardware floating point? + * Does the CPU have hardware floating point? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. * - * If there is a FP coprocessor such as the i387 or mc68881, then - * the answer is TRUE. + * If there is a FP coprocessor such as the i387 or mc68881, then + * the answer is TRUE. * - * The macro name "NO_CPU_HAS_FPU" should be made CPU specific. - * It indicates whether or not this CPU model has FP support. For - * example, it would be possible to have an i386_nofp CPU model - * which set this to false to indicate that you have an i386 without - * an i387 and wish to leave floating point support out of RTEMS. + * The macro name "NO_CPU_HAS_FPU" should be made CPU specific. + * It indicates whether or not this CPU model has FP support. For + * example, it would be possible to have an i386_nofp CPU model + * which set this to false to indicate that you have an i386 without + * an i387 and wish to leave floating point support out of RTEMS. */ /** - * @def CPU_SOFTWARE_FP + * @def CPU_SOFTWARE_FP * - * Does the CPU have no hardware floating point and GCC provides a - * software floating point implementation which must be context - * switched? + * Does the CPU have no hardware floating point and GCC provides a + * software floating point implementation which must be context + * switched? * - * This feature conditional is used to indicate whether or not there - * is software implemented floating point that must be context - * switched. The determination of whether or not this applies - * is very tool specific and the state saved/restored is also - * compiler specific. + * This feature conditional is used to indicate whether or not there + * is software implemented floating point that must be context + * switched. The determination of whether or not this applies + * is very tool specific and the state saved/restored is also + * compiler specific. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HARDWARE_FP FALSE #define CPU_SOFTWARE_FP FALSE /** - * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? + * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. * - * So far, the only CPUs in which this option has been used are the - * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and - * gcc both implicitly used the floating point registers to perform - * integer multiplies. Similarly, the PowerPC port of gcc has been - * seen to allocate floating point local variables and touch the FPU - * even when the flow through a subroutine (like vfprintf()) might - * not use floating point formats. + * So far, the only CPUs in which this option has been used are the + * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and + * gcc both implicitly used the floating point registers to perform + * integer multiplies. Similarly, the PowerPC port of gcc has been + * seen to allocate floating point local variables and touch the FPU + * even when the flow through a subroutine (like vfprintf()) might + * not use floating point formats. * - * If a function which you would not think utilize the FP unit DOES, - * then one can not easily predict which tasks will use the FP hardware. - * In this case, this option should be TRUE. + * If a function which you would not think utilize the FP unit DOES, + * then one can not easily predict which tasks will use the FP hardware. + * In this case, this option should be TRUE. * - * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. + * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALL_TASKS_ARE_FP FALSE /** - * Should the IDLE task have a floating point context? + * Should the IDLE task have a floating point context? * - * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task - * and it has a floating point context which is switched in and out. - * If FALSE, then the IDLE task does not have a floating point context. + * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task + * and it has a floating point context which is switched in and out. + * If FALSE, then the IDLE task does not have a floating point context. * - * Setting this to TRUE negatively impacts the time required to preempt - * the IDLE task from an interrupt because the floating point context - * must be saved as part of the preemption. + * Setting this to TRUE negatively impacts the time required to preempt + * the IDLE task from an interrupt because the floating point context + * must be saved as part of the preemption. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_IDLE_TASK_IS_FP FALSE /** - * Should the saving of the floating point registers be deferred - * until a context switch is made to another different floating point - * task? + * Should the saving of the floating point registers be deferred + * until a context switch is made to another different floating point + * task? * - * If TRUE, then the floating point context will not be stored until - * necessary. It will remain in the floating point registers and not - * disturned until another floating point task is switched to. + * If TRUE, then the floating point context will not be stored until + * necessary. It will remain in the floating point registers and not + * disturned until another floating point task is switched to. * - * If FALSE, then the floating point context is saved when a floating - * point task is switched out and restored when the next floating point - * task is restored. The state of the floating point registers between - * those two operations is not specified. + * If FALSE, then the floating point context is saved when a floating + * point task is switched out and restored when the next floating point + * task is restored. The state of the floating point registers between + * those two operations is not specified. * - * If the floating point context does NOT have to be saved as part of - * interrupt dispatching, then it should be safe to set this to TRUE. + * If the floating point context does NOT have to be saved as part of + * interrupt dispatching, then it should be safe to set this to TRUE. * - * Setting this flag to TRUE results in using a different algorithm - * for deciding when to save and restore the floating point context. - * The deferred FP switch algorithm minimizes the number of times - * the FP context is saved and restored. The FP context is not saved - * until a context switch is made to another, different FP task. - * Thus in a system with only one FP task, the FP context will never - * be saved or restored. + * Setting this flag to TRUE results in using a different algorithm + * for deciding when to save and restore the floating point context. + * The deferred FP switch algorithm minimizes the number of times + * the FP context is saved and restored. The FP context is not saved + * until a context switch is made to another, different FP task. + * Thus in a system with only one FP task, the FP context will never + * be saved or restored. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_USE_DEFERRED_FP_SWITCH TRUE /** - * Does this port provide a CPU dependent IDLE task implementation? + * Does this port provide a CPU dependent IDLE task implementation? * - * If TRUE, then the routine @ref _CPU_Thread_Idle_body - * must be provided and is the default IDLE thread body instead of - * @ref _CPU_Thread_Idle_body. + * If TRUE, then the routine @ref _CPU_Thread_Idle_body + * must be provided and is the default IDLE thread body instead of + * @ref _CPU_Thread_Idle_body. * - * If FALSE, then use the generic IDLE thread body if the BSP does - * not provide one. + * If FALSE, then use the generic IDLE thread body if the BSP does + * not provide one. * - * This is intended to allow for supporting processors which have - * a low power or idle mode. When the IDLE thread is executed, then - * the CPU can be powered down. + * This is intended to allow for supporting processors which have + * a low power or idle mode. When the IDLE thread is executed, then + * the CPU can be powered down. * - * The order of precedence for selecting the IDLE thread body is: + * The order of precedence for selecting the IDLE thread body is: * - * -# BSP provided - * -# CPU dependent (if provided) - * -# generic (if no BSP and no CPU dependent) + * -# BSP provided + * -# CPU dependent (if provided) + * -# generic (if no BSP and no CPU dependent) * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PROVIDES_IDLE_THREAD_BODY TRUE /** - * Does the stack grow up (toward higher addresses) or down - * (toward lower addresses)? + * Does the stack grow up (toward higher addresses) or down + * (toward lower addresses)? * - * If TRUE, then the grows upward. - * If FALSE, then the grows toward smaller addresses. + * If TRUE, then the grows upward. + * If FALSE, then the grows toward smaller addresses. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_GROWS_UP FALSE /** - * The following is the variable attribute used to force alignment - * of critical RTEMS structures. On some processors it may make - * sense to have these aligned on tighter boundaries than - * the minimum requirements of the compiler in order to have as - * much of the critical data area as possible in a cache line. + * The following is the variable attribute used to force alignment + * of critical RTEMS structures. On some processors it may make + * sense to have these aligned on tighter boundaries than + * the minimum requirements of the compiler in order to have as + * much of the critical data area as possible in a cache line. * - * The placement of this macro in the declaration of the variables - * is based on the syntactically requirements of the GNU C - * "__attribute__" extension. For example with GNU C, use - * the following to force a structures to a 32 byte boundary. + * The placement of this macro in the declaration of the variables + * is based on the syntactically requirements of the GNU C + * "__attribute__" extension. For example with GNU C, use + * the following to force a structures to a 32 byte boundary. * - * __attribute__ ((aligned (32))) + * __attribute__ ((aligned (32))) * - * @note Currently only the Priority Bit Map table uses this feature. - * To benefit from using this, the data must be heavily - * used so it will stay in the cache and used frequently enough - * in the executive to justify turning this on. + * NOTE: Currently only the Priority Bit Map table uses this feature. + * To benefit from using this, the data must be heavily + * used so it will stay in the cache and used frequently enough + * in the executive to justify turning this on. * - * Port Specific Information: + * Port Specific Information: * - * L2 cache lines are 32 bytes in Milkymist SoC + * L2 cache lines are 32 bytes in Milkymist SoC */ #define CPU_STRUCTURE_ALIGNMENT __attribute__ ((aligned (32))) #define CPU_TIMESTAMP_USE_INT64_INLINE TRUE /** - * @defgroup CPUEndian Processor Dependent Endianness Support + * @defgroup CPUEndian Processor Dependent Endianness Support + * + * This group assists in issues related to processor endianness. * - * This group assists in issues related to processor endianness. */ +/**@{**/ /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the - * same values. + * NOTE: @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_LITTLE_ENDIAN + * @see CPU_LITTLE_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_BIG_ENDIAN TRUE /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the - * same values. + * NOTE: @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_BIG_ENDIAN + * @see CPU_BIG_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_LITTLE_ENDIAN FALSE +/** @} */ + /** - * @ingroup CPUInterrupt - * The following defines the number of bits actually used in the - * interrupt field of the task mode. How those bits map to the - * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. + * @ingroup CPUInterrupt + * The following defines the number of bits actually used in the + * interrupt field of the task mode. How those bits map to the + * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MODES_INTERRUPT_MASK 0x00000001 @@ -402,50 +404,50 @@ extern "C" { /** * @defgroup CPUContext Processor Dependent Context Management * - * From the highest level viewpoint, there are 2 types of context to save. + * From the highest level viewpoint, there are 2 types of context to save. * - * -# Interrupt registers to save - * -# Task level registers to save + * -# Interrupt registers to save + * -# Task level registers to save * - * Since RTEMS handles integer and floating point contexts separately, this - * means we have the following 3 context items: + * Since RTEMS handles integer and floating point contexts separately, this + * means we have the following 3 context items: * - * -# task level context stuff:: Context_Control - * -# floating point task stuff:: Context_Control_fp - * -# special interrupt level context :: CPU_Interrupt_frame + * -# task level context stuff:: Context_Control + * -# floating point task stuff:: Context_Control_fp + * -# special interrupt level context :: CPU_Interrupt_frame * - * On some processors, it is cost-effective to save only the callee - * preserved registers during a task context switch. This means - * that the ISR code needs to save those registers which do not - * persist across function calls. It is not mandatory to make this - * distinctions between the caller/callee saves registers for the - * purpose of minimizing context saved during task switch and on interrupts. - * If the cost of saving extra registers is minimal, simplicity is the - * choice. Save the same context on interrupt entry as for tasks in - * this case. + * On some processors, it is cost-effective to save only the callee + * preserved registers during a task context switch. This means + * that the ISR code needs to save those registers which do not + * persist across function calls. It is not mandatory to make this + * distinctions between the caller/callee saves registers for the + * purpose of minimizing context saved during task switch and on interrupts. + * If the cost of saving extra registers is minimal, simplicity is the + * choice. Save the same context on interrupt entry as for tasks in + * this case. * - * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then - * care should be used in designing the context area. + * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then + * care should be used in designing the context area. * - * On some CPUs with hardware floating point support, the Context_Control_fp - * structure will not be used or it simply consist of an array of a - * fixed number of bytes. This is done when the floating point context - * is dumped by a "FP save context" type instruction and the format - * is not really defined by the CPU. In this case, there is no need - * to figure out the exact format -- only the size. Of course, although - * this is enough information for RTEMS, it is probably not enough for - * a debugger such as gdb. But that is another problem. + * On some CPUs with hardware floating point support, the Context_Control_fp + * structure will not be used or it simply consist of an array of a + * fixed number of bytes. This is done when the floating point context + * is dumped by a "FP save context" type instruction and the format + * is not really defined by the CPU. In this case, there is no need + * to figure out the exact format -- only the size. Of course, although + * this is enough information for RTEMS, it is probably not enough for + * a debugger such as gdb. But that is another problem. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ +/**@{**/ /** - * @ingroup CPUContext Management - * This defines the minimal set of integer and processor state registers - * that must be saved during a voluntary context switch from one thread - * to another. + * This defines the minimal set of integer and processor state registers + * that must be saved during a voluntary context switch from one thread + * to another. */ typedef struct { uint32_t r11; @@ -472,30 +474,27 @@ typedef struct { } Context_Control; /** - * @ingroup CPUContext Management * - * This macro returns the stack pointer associated with @a _context. + * This macro returns the stack pointer associated with @a _context. * - * @param[in] _context is the thread context area to access + * @param[in] _context is the thread context area to access * - * @return This method returns the stack pointer. + * @return This method returns the stack pointer. */ #define _CPU_Context_Get_SP( _context ) \ (_context)->sp /** - * @ingroup CPUContext Management - * This defines the complete set of floating point registers that must - * be saved during any context switch from one thread to another. + * This defines the complete set of floating point registers that must + * be saved during any context switch from one thread to another. */ typedef struct { } Context_Control_fp; /** - * @ingroup CPUContext Management - * This defines the set of integer and processor state registers that must - * be saved during an interrupt. This set does not include any which are - * in @ref Context_Control. + * This defines the set of integer and processor state registers that must + * be saved during an interrupt. This set does not include any which are + * in @ref Context_Control. */ typedef struct { uint32_t r1; @@ -514,173 +513,175 @@ typedef struct { } CPU_Interrupt_frame; /** - * This variable is optional. It is used on CPUs on which it is difficult - * to generate an "uninitialized" FP context. It is filled in by - * @ref _CPU_Initialize and copied into the task's FP context area during - * @ref _CPU_Context_Initialize. + * This variable is optional. It is used on CPUs on which it is difficult + * to generate an "uninitialized" FP context. It is filled in by + * @ref _CPU_Initialize and copied into the task's FP context area during + * @ref _CPU_Context_Initialize. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if 0 SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; #endif +/** @} */ + /** - * @defgroup CPUInterrupt Processor Dependent Interrupt Management + * @defgroup CPUInterrupt Processor Dependent Interrupt Management * - * On some CPUs, RTEMS supports a software managed interrupt stack. - * This stack is allocated by the Interrupt Manager and the switch - * is performed in @ref _ISR_Handler. These variables contain pointers - * to the lowest and highest addresses in the chunk of memory allocated - * for the interrupt stack. Since it is unknown whether the stack - * grows up or down (in general), this give the CPU dependent - * code the option of picking the version it wants to use. + * On some CPUs, RTEMS supports a software managed interrupt stack. + * This stack is allocated by the Interrupt Manager and the switch + * is performed in @ref _ISR_Handler. These variables contain pointers + * to the lowest and highest addresses in the chunk of memory allocated + * for the interrupt stack. Since it is unknown whether the stack + * grows up or down (in general), this give the CPU dependent + * code the option of picking the version it wants to use. * - * @note These two variables are required if the macro - * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. + * NOTE: These two variables are required if the macro + * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ +/**@{**/ /* - * Nothing prevents the porter from declaring more CPU specific variables. + * Nothing prevents the porter from declaring more CPU specific variables. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ /* XXX: if needed, put more variables here */ /** - * @ingroup CPUContext - * The size of the floating point context area. On some CPUs this - * will not be a "sizeof" because the format of the floating point - * area is not defined -- only the size is. This is usually on - * CPUs with a "floating point save context" instruction. + * @ingroup CPUContext + * The size of the floating point context area. On some CPUs this + * will not be a "sizeof" because the format of the floating point + * area is not defined -- only the size is. This is usually on + * CPUs with a "floating point save context" instruction. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_CONTEXT_FP_SIZE sizeof( Context_Control_fp ) /** - * Amount of extra stack (above minimum stack size) required by - * MPCI receive server thread. Remember that in a multiprocessor - * system this thread must exist and be able to process all directives. + * Amount of extra stack (above minimum stack size) required by + * MPCI receive server thread. Remember that in a multiprocessor + * system this thread must exist and be able to process all directives. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0 /** - * @ingroup CPUInterrupt - * This defines the number of entries in the @ref _ISR_Vector_table managed - * by RTEMS. + * This defines the number of entries in the @ref _ISR_Vector_table managed + * by RTEMS. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INTERRUPT_NUMBER_OF_VECTORS 32 /** - * @ingroup CPUInterrupt - * This defines the highest interrupt vector number for this port. + * This defines the highest interrupt vector number for this port. */ #define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER (CPU_INTERRUPT_NUMBER_OF_VECTORS - 1) /** - * @ingroup CPUInterrupt - * This is defined if the port has a special way to report the ISR nesting - * level. Most ports maintain the variable @a _ISR_Nest_level. + * This is defined if the port has a special way to report the ISR nesting + * level. Most ports maintain the variable @a _ISR_Nest_level. */ #define CPU_PROVIDES_ISR_IS_IN_PROGRESS FALSE +/** @} */ + /** - * @ingroup CPUContext - * Should be large enough to run all RTEMS tests. This ensures - * that a "reasonable" small application should not have any problems. + * @ingroup CPUContext + * Should be large enough to run all RTEMS tests. This ensures + * that a "reasonable" small application should not have any problems. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_MINIMUM_SIZE (1024*4) #define CPU_SIZEOF_POINTER 4 /** - * CPU's worst alignment requirement for data types on a byte boundary. This - * alignment does not take into account the requirements for the stack. + * CPU's worst alignment requirement for data types on a byte boundary. This + * alignment does not take into account the requirements for the stack. * - * Port Specific Information: - * The LM32 architecture manual simply states: "All memory accesses must be - * aligned to the size of the access", and there is no hardware support - * whatsoever for 64-bit numbers. - * (lm32_archman.pdf, July 2009, p. 15) + * Port Specific Information: + * The LM32 architecture manual simply states: "All memory accesses must be + * aligned to the size of the access", and there is no hardware support + * whatsoever for 64-bit numbers. + * (lm32_archman.pdf, July 2009, p. 15) */ #define CPU_ALIGNMENT 4 /** - * This number corresponds to the byte alignment requirement for the - * heap handler. This alignment requirement may be stricter than that - * for the data types alignment specified by @ref CPU_ALIGNMENT. It is - * common for the heap to follow the same alignment requirement as - * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for - * the heap, then this should be set to @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for the + * heap handler. This alignment requirement may be stricter than that + * for the data types alignment specified by @ref CPU_ALIGNMENT. It is + * common for the heap to follow the same alignment requirement as + * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for + * the heap, then this should be set to @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2 although it should be - * a multiple of 2 greater than or equal to 2. The requirement - * to be a multiple of 2 is because the heap uses the least - * significant field of the front and back flags to indicate - * that a block is in use or free. So you do not want any odd - * length blocks really putting length data in that bit. + * NOTE: This does not have to be a power of 2 although it should be + * a multiple of 2 greater than or equal to 2. The requirement + * to be a multiple of 2 is because the heap uses the least + * significant field of the front and back flags to indicate + * that a block is in use or free. So you do not want any odd + * length blocks really putting length data in that bit. * - * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will - * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that - * elements allocated from the heap meet all restrictions. + * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will + * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that + * elements allocated from the heap meet all restrictions. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for memory - * buffers allocated by the partition manager. This alignment requirement - * may be stricter than that for the data types alignment specified by - * @ref CPU_ALIGNMENT. It is common for the partition to follow the same - * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is - * strict enough for the partition, then this should be set to - * @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for memory + * buffers allocated by the partition manager. This alignment requirement + * may be stricter than that for the data types alignment specified by + * @ref CPU_ALIGNMENT. It is common for the partition to follow the same + * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is + * strict enough for the partition, then this should be set to + * @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2. It does have to - * be greater or equal to than @ref CPU_ALIGNMENT. + * NOTE: This does not have to be a power of 2. It does have to + * be greater or equal to than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PARTITION_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for the + * stack. This alignment requirement may be stricter than that for the + * data types alignment specified by @ref CPU_ALIGNMENT. * * - * Port Specific Information: + * Port Specific Information: * - * Stack is software-managed + * Stack is software-managed */ #define CPU_STACK_ALIGNMENT CPU_ALIGNMENT @@ -689,76 +690,75 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; */ /** - * @ingroup CPUInterrupt - * Support routine to initialize the RTEMS vector table after it is allocated. + * @addtogroup CPUInterrupt + */ +/**@{**/ + +/** + * Support routine to initialize the RTEMS vector table after it is allocated. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Initialize_vectors() /** - * @ingroup CPUInterrupt - * Disable all interrupts for an RTEMS critical section. The previous - * level is returned in @a _isr_cookie. + * Disable all interrupts for an RTEMS critical section. The previous + * level is returned in @a _isr_cookie. * - * @param[out] _isr_cookie will contain the previous level cookie + * @param[out] _isr_cookie will contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Disable( _isr_cookie ) \ lm32_disable_interrupts( _isr_cookie ); /** - * @ingroup CPUInterrupt - * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). - * This indicates the end of an RTEMS critical section. The parameter - * @a _isr_cookie is not modified. + * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). + * This indicates the end of an RTEMS critical section. The parameter + * @a _isr_cookie is not modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Enable( _isr_cookie ) \ lm32_enable_interrupts( _isr_cookie ); /** - * @ingroup CPUInterrupt - * This temporarily restores the interrupt to @a _isr_cookie before immediately - * disabling them again. This is used to divide long RTEMS critical - * sections into two or more parts. The parameter @a _isr_cookie is not - * modified. + * This temporarily restores the interrupt to @a _isr_cookie before immediately + * disabling them again. This is used to divide long RTEMS critical + * sections into two or more parts. The parameter @a _isr_cookie is not + * modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Flash( _isr_cookie ) \ lm32_flash_interrupts( _isr_cookie ); /** - * @ingroup CPUInterrupt + * This routine and @ref _CPU_ISR_Get_level + * Map the interrupt level in task mode onto the hardware that the CPU + * actually provides. Currently, interrupt levels which do not + * map onto the CPU in a generic fashion are undefined. Someday, + * it would be nice if these were "mapped" by the application + * via a callout. For example, m68k has 8 levels 0 - 7, levels + * 8 - 255 would be available for bsp/application specific meaning. + * This could be used to manage a programmable interrupt controller + * via the rtems_task_mode directive. * - * This routine and @ref _CPU_ISR_Get_level - * Map the interrupt level in task mode onto the hardware that the CPU - * actually provides. Currently, interrupt levels which do not - * map onto the CPU in a generic fashion are undefined. Someday, - * it would be nice if these were "mapped" by the application - * via a callout. For example, m68k has 8 levels 0 - 7, levels - * 8 - 255 would be available for bsp/application specific meaning. - * This could be used to manage a programmable interrupt controller - * via the rtems_task_mode directive. - * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Set_level( new_level ) \ { \ @@ -766,52 +766,53 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; } /** - * @ingroup CPUInterrupt - * Return the current interrupt disable level for this task in - * the format used by the interrupt level portion of the task mode. + * Return the current interrupt disable level for this task in + * the format used by the interrupt level portion of the task mode. * - * @note This routine usually must be implemented as a subroutine. + * NOTE: This routine usually must be implemented as a subroutine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ uint32_t _CPU_ISR_Get_level( void ); /* end of ISR handler macros */ +/** @} */ + /* Context handler macros */ /** - * @ingroup CPUContext - * Initialize the context to a state suitable for starting a - * task after a context restore operation. Generally, this - * involves: - * - * - setting a starting address - * - preparing the stack - * - preparing the stack and frame pointers - * - setting the proper interrupt level in the context - * - initializing the floating point context - * - * This routine generally does not set any unnecessary register - * in the context. The state of the "general data" registers is - * undefined at task start time. - * - * @param[in] _the_context is the context structure to be initialized - * @param[in] _stack_base is the lowest physical address of this task's stack - * @param[in] _size is the size of this task's stack - * @param[in] _isr is the interrupt disable level - * @param[in] _entry_point is the thread's entry point. This is - * always @a _Thread_Handler - * @param[in] _is_fp is TRUE if the thread is to be a floating - * point thread. This is typically only used on CPUs where the - * FPU may be easily disabled by software such as on the SPARC - * where the PSR contains an enable FPU bit. + * @ingroup CPUContext + * Initialize the context to a state suitable for starting a + * task after a context restore operation. Generally, this + * involves: * - * Port Specific Information: + * - setting a starting address + * - preparing the stack + * - preparing the stack and frame pointers + * - setting the proper interrupt level in the context + * - initializing the floating point context * - * XXX document implementation including references if appropriate + * This routine generally does not set any unnecessary register + * in the context. The state of the "general data" registers is + * undefined at task start time. + * + * @param[in] _the_context is the context structure to be initialized + * @param[in] _stack_base is the lowest physical address of this task's stack + * @param[in] _size is the size of this task's stack + * @param[in] _isr is the interrupt disable level + * @param[in] _entry_point is the thread's entry point. This is + * always @a _Thread_Handler + * @param[in] _is_fp is TRUE if the thread is to be a floating + * point thread. This is typically only used on CPUs where the + * FPU may be easily disabled by software such as on the SPARC + * where the PSR contains an enable FPU bit. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ extern char _gp[]; @@ -826,44 +827,44 @@ extern char _gp[]; } while ( 0 ) /** - * This routine is responsible for somehow restarting the currently - * executing task. If you are lucky, then all that is necessary - * is restoring the context. Otherwise, there will need to be - * a special assembly routine which does something special in this - * case. For many ports, simply adding a label to the restore path - * of @ref _CPU_Context_switch will work. On other ports, it may be - * possibly to load a few arguments and jump to the restore path. It will - * not work if restarting self conflicts with the stack frame - * assumptions of restoring a context. + * This routine is responsible for somehow restarting the currently + * executing task. If you are lucky, then all that is necessary + * is restoring the context. Otherwise, there will need to be + * a special assembly routine which does something special in this + * case. For many ports, simply adding a label to the restore path + * of @ref _CPU_Context_switch will work. On other ports, it may be + * possibly to load a few arguments and jump to the restore path. It will + * not work if restarting self conflicts with the stack frame + * assumptions of restoring a context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Restart_self( _the_context ) \ _CPU_Context_restore( (_the_context) ); /** - * @ingroup CPUContext - * The purpose of this macro is to allow the initial pointer into - * a floating point context area (used to save the floating point - * context) to be at an arbitrary place in the floating point - * context area. + * @ingroup CPUContext + * The purpose of this macro is to allow the initial pointer into + * a floating point context area (used to save the floating point + * context) to be at an arbitrary place in the floating point + * context area. * - * This is necessary because some FP units are designed to have - * their context saved as a stack which grows into lower addresses. - * Other FP units can be saved by simply moving registers into offsets - * from the base of the context area. Finally some FP units provide - * a "dump context" instruction which could fill in from high to low - * or low to high based on the whim of the CPU designers. + * This is necessary because some FP units are designed to have + * their context saved as a stack which grows into lower addresses. + * Other FP units can be saved by simply moving registers into offsets + * from the base of the context area. Finally some FP units provide + * a "dump context" instruction which could fill in from high to low + * or low to high based on the whim of the CPU designers. * - * @param[in] _base is the lowest physical address of the floating point - * context area - * @param[in] _offset is the offset into the floating point area + * @param[in] _base is the lowest physical address of the floating point + * context area + * @param[in] _offset is the offset into the floating point area * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Fp_start( _base, _offset ) #if 0 @@ -871,22 +872,22 @@ extern char _gp[]; #endif /** - * This routine initializes the FP context area passed to it to. - * There are a few standard ways in which to initialize the - * floating point context. The code included for this macro assumes - * that this is a CPU in which a "initial" FP context was saved into - * @a _CPU_Null_fp_context and it simply copies it to the destination - * context passed to it. + * This routine initializes the FP context area passed to it to. + * There are a few standard ways in which to initialize the + * floating point context. The code included for this macro assumes + * that this is a CPU in which a "initial" FP context was saved into + * @a _CPU_Null_fp_context and it simply copies it to the destination + * context passed to it. * - * Other floating point context save/restore models include: - * -# not doing anything, and - * -# putting a "null FP status word" in the correct place in the FP context. + * Other floating point context save/restore models include: + * -# not doing anything, and + * -# putting a "null FP status word" in the correct place in the FP context. * - * @param[in] _destination is the floating point context area + * @param[in] _destination is the floating point context area * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Initialize_fp( _destination ) #if 0 @@ -900,13 +901,13 @@ extern char _gp[]; /* Fatal Error manager macros */ /** - * This routine copies _error into a known place -- typically a stack - * location or a register, optionally disables interrupts, and - * halts/stops the CPU. + * This routine copies _error into a known place -- typically a stack + * location or a register, optionally disables interrupts, and + * halts/stops the CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Fatal_halt( _error ) \ { \ @@ -917,68 +918,66 @@ extern char _gp[]; /* Bitfield handler macros */ /** - * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation + * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation * - * This set of routines are used to implement fast searches for - * the most important ready task. + * This set of routines are used to implement fast searches for + * the most important ready task. */ +/**@{**/ /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the generic bitfield - * manipulation implementation. + * This definition is set to TRUE if the port uses the generic bitfield + * manipulation implementation. */ #define CPU_USE_GENERIC_BITFIELD_CODE TRUE /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the data tables provided - * by the generic bitfield manipulation implementation. - * This can occur when actually using the generic bitfield manipulation - * implementation or when implementing the same algorithm in assembly - * language for improved performance. It is unlikely that a port will use - * the data if it has a bitfield scan instruction. + * This definition is set to TRUE if the port uses the data tables provided + * by the generic bitfield manipulation implementation. + * This can occur when actually using the generic bitfield manipulation + * implementation or when implementing the same algorithm in assembly + * language for improved performance. It is unlikely that a port will use + * the data if it has a bitfield scan instruction. */ #define CPU_USE_GENERIC_BITFIELD_DATA TRUE /** - * @ingroup CPUBitfield - * This routine sets @a _output to the bit number of the first bit - * set in @a _value. @a _value is of CPU dependent type - * @a Priority_bit_map_Control. This type may be either 16 or 32 bits - * wide although only the 16 least significant bits will be used. - * - * There are a number of variables in using a "find first bit" type - * instruction. - * - * -# What happens when run on a value of zero? - * -# Bits may be numbered from MSB to LSB or vice-versa. - * -# The numbering may be zero or one based. - * -# The "find first bit" instruction may search from MSB or LSB. - * - * RTEMS guarantees that (1) will never happen so it is not a concern. - * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and - * @ref _CPU_Priority_bits_index. These three form a set of routines - * which must logically operate together. Bits in the _value are - * set and cleared based on masks built by @ref _CPU_Priority_Mask. - * The basic major and minor values calculated by @ref _Priority_Major - * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index - * to properly range between the values returned by the "find first bit" - * instruction. This makes it possible for @ref _Priority_Get_highest to - * calculate the major and directly index into the minor table. - * This mapping is necessary to ensure that 0 (a high priority major/minor) - * is the first bit found. - * - * This entire "find first bit" and mapping process depends heavily - * on the manner in which a priority is broken into a major and minor - * components with the major being the 4 MSB of a priority and minor - * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest - * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next - * to the lowest priority. - * - * If your CPU does not have a "find first bit" instruction, then - * there are ways to make do without it. Here are a handful of ways - * to implement this in software: + * This routine sets @a _output to the bit number of the first bit + * set in @a _value. @a _value is of CPU dependent type + * @a Priority_bit_map_Control. This type may be either 16 or 32 bits + * wide although only the 16 least significant bits will be used. + * + * There are a number of variables in using a "find first bit" type + * instruction. + * + * -# What happens when run on a value of zero? + * -# Bits may be numbered from MSB to LSB or vice-versa. + * -# The numbering may be zero or one based. + * -# The "find first bit" instruction may search from MSB or LSB. + * + * RTEMS guarantees that (1) will never happen so it is not a concern. + * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and + * @ref _CPU_Priority_bits_index. These three form a set of routines + * which must logically operate together. Bits in the _value are + * set and cleared based on masks built by @ref _CPU_Priority_Mask. + * The basic major and minor values calculated by @ref _Priority_Major + * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index + * to properly range between the values returned by the "find first bit" + * instruction. This makes it possible for @ref _Priority_Get_highest to + * calculate the major and directly index into the minor table. + * This mapping is necessary to ensure that 0 (a high priority major/minor) + * is the first bit found. + * + * This entire "find first bit" and mapping process depends heavily + * on the manner in which a priority is broken into a major and minor + * components with the major being the 4 MSB of a priority and minor + * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest + * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next + * to the lowest priority. + * + * If your CPU does not have a "find first bit" instruction, then + * there are ways to make do without it. Here are a handful of ways + * to implement this in software: * @verbatim - a series of 16 bit test instructions @@ -995,15 +994,15 @@ extern char _gp[]; _number += bit_set_table[ _value ] @endverbatim - * where bit_set_table[ 16 ] has values which indicate the first - * bit set + * where bit_set_table[ 16 ] has values which indicate the first + * bit set * - * @param[in] _value is the value to be scanned - * @param[in] _output is the first bit set + * @param[in] _value is the value to be scanned + * @param[in] _output is the first bit set * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1015,14 +1014,16 @@ extern char _gp[]; /* end of Bitfield handler macros */ +/** @} */ + /** - * This routine builds the mask which corresponds to the bit fields - * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion - * for that routine. + * This routine builds the mask which corresponds to the bit fields + * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion + * for that routine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1032,17 +1033,17 @@ extern char _gp[]; #endif /** - * @ingroup CPUBitfield - * This routine translates the bit numbers returned by - * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as - * a major or minor component of a priority. See the discussion - * for that routine. + * @ingroup CPUBitfield + * This routine translates the bit numbers returned by + * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as + * a major or minor component of a priority. See the discussion + * for that routine. * - * @param[in] _priority is the major or minor number to translate + * @param[in] _priority is the major or minor number to translate * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1056,26 +1057,30 @@ extern char _gp[]; /* functions */ /** - * This routine performs CPU dependent initialization. + * This routine performs CPU dependent initialization. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Initialize(void); /** - * @ingroup CPUInterrupt - * This routine installs a "raw" interrupt handler directly into the - * processor's vector table. + * @addtogroup CPUInterrupt + */ +/**@{**/ + +/** + * This routine installs a "raw" interrupt handler directly into the + * processor's vector table. * - * @param[in] vector is the vector number - * @param[in] new_handler is the raw ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * @param[in] vector is the vector number + * @param[in] new_handler is the raw ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_raw_handler( uint32_t vector, @@ -1084,16 +1089,15 @@ void _CPU_ISR_install_raw_handler( ); /** - * @ingroup CPUInterrupt - * This routine installs an interrupt vector. + * This routine installs an interrupt vector. * - * @param[in] vector is the vector number - * @param[in] new_handler is the RTEMS ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * @param[in] vector is the vector number + * @param[in] new_handler is the RTEMS ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_vector( uint32_t vector, @@ -1102,40 +1106,41 @@ void _CPU_ISR_install_vector( ); /** - * @ingroup CPUInterrupt - * This routine installs the hardware interrupt stack pointer. + * This routine installs the hardware interrupt stack pointer. * - * @note It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK - * is TRUE. + * NOTE: It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK + * is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Install_interrupt_stack( void ); +/** @} */ + /** - * This routine is the CPU dependent IDLE thread body. + * This routine is the CPU dependent IDLE thread body. * - * @note It need only be provided if @ref CPU_PROVIDES_IDLE_THREAD_BODY - * is TRUE. + * NOTE: It need only be provided if @ref CPU_PROVIDES_IDLE_THREAD_BODY + * is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void *_CPU_Thread_Idle_body( uintptr_t ignored ); /** - * @ingroup CPUContext - * This routine switches from the run context to the heir context. + * @ingroup CPUContext + * This routine switches from the run context to the heir context. * - * @param[in] run points to the context of the currently executing task - * @param[in] heir points to the context of the heir task + * @param[in] run points to the context of the currently executing task + * @param[in] heir points to the context of the heir task * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_switch( Context_Control *run, @@ -1143,90 +1148,94 @@ void _CPU_Context_switch( ); /** - * @ingroup CPUContext - * This routine is generally used only to restart self in an - * efficient manner. It may simply be a label in @ref _CPU_Context_switch. + * @addtogroup CPUContext + */ +/**@{**/ + +/** + * This routine is generally used only to restart self in an + * efficient manner. It may simply be a label in @ref _CPU_Context_switch. * - * @param[in] new_context points to the context to be restored. + * @param[in] new_context points to the context to be restored. * - * @note May be unnecessary to reload some registers. + * NOTE: May be unnecessary to reload some registers. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore( Context_Control *new_context ) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; /** - * @ingroup CPUContext - * This routine saves the floating point context passed to it. + * This routine saves the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_restore_fp to restore this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_restore_fp to restore this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_save_fp( Context_Control_fp **fp_context_ptr ); /** - * @ingroup CPUContext - * This routine restores the floating point context passed to it. + * This routine restores the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area to restore + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area to restore * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_save_fp to save this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_save_fp to save this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore_fp( Context_Control_fp **fp_context_ptr ); +/** @} */ + /* FIXME */ typedef CPU_Interrupt_frame CPU_Exception_frame; void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); /** - * @ingroup CPUEndian - * The following routine swaps the endian format of an unsigned int. - * It must be static because it is referenced indirectly. + * @ingroup CPUEndian + * The following routine swaps the endian format of an unsigned int. + * It must be static because it is referenced indirectly. * - * This version will work on any processor, but if there is a better - * way for your CPU PLEASE use it. The most common way to do this is to: + * This version will work on any processor, but if there is a better + * way for your CPU PLEASE use it. The most common way to do this is to: * - * swap least significant two bytes with 16-bit rotate - * swap upper and lower 16-bits - * swap most significant two bytes with 16-bit rotate + * swap least significant two bytes with 16-bit rotate + * swap upper and lower 16-bits + * swap most significant two bytes with 16-bit rotate * - * Some CPUs have special instructions which swap a 32-bit quantity in - * a single instruction (e.g. i486). It is probably best to avoid - * an "endian swapping control bit" in the CPU. One good reason is - * that interrupts would probably have to be disabled to ensure that - * an interrupt does not try to access the same "chunk" with the wrong - * endian. Another good reason is that on some CPUs, the endian bit - * endianness for ALL fetches -- both code and data -- so the code - * will be fetched incorrectly. + * Some CPUs have special instructions which swap a 32-bit quantity in + * a single instruction (e.g. i486). It is probably best to avoid + * an "endian swapping control bit" in the CPU. One good reason is + * that interrupts would probably have to be disabled to ensure that + * an interrupt does not try to access the same "chunk" with the wrong + * endian. Another good reason is that on some CPUs, the endian bit + * endianness for ALL fetches -- both code and data -- so the code + * will be fetched incorrectly. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ static inline uint32_t CPU_swap_u32( uint32_t value @@ -1244,11 +1253,11 @@ static inline uint32_t CPU_swap_u32( } /** - * @ingroup CPUEndian - * This routine swaps a 16 bir quantity. + * @ingroup CPUEndian + * This routine swaps a 16 bir quantity. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped */ static inline uint16_t CPU_swap_u16(uint16_t v) { diff --git a/cpukit/score/cpu/lm32/rtems/score/cpu_asm.h b/cpukit/score/cpu/lm32/rtems/score/cpu_asm.h index 7eada7827d..49d0aed5f3 100644 --- a/cpukit/score/cpu/lm32/rtems/score/cpu_asm.h +++ b/cpukit/score/cpu/lm32/rtems/score/cpu_asm.h @@ -1,12 +1,14 @@ /** - * @file rtems/score/cpu_asm.h + * @file + * + * @brief LM32 CPU Assembly File + * + * Very loose template for an include file for the cpu_asm.? file + * if it is implemented as a ".S" file (preprocessed by cpp) instead + * of a ".s" file (preprocessed by gm4 or gasp). */ /* - * Very loose template for an include file for the cpu_asm.? file - * if it is implemented as a ".S" file (preprocessed by cpp) instead - * of a ".s" file (preprocessed by gm4 or gasp). - * * COPYRIGHT (c) 1989-2008. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/lm32/rtems/score/lm32.h b/cpukit/score/cpu/lm32/rtems/score/lm32.h index b1d5edd688..4d03d953ed 100644 --- a/cpukit/score/cpu/lm32/rtems/score/lm32.h +++ b/cpukit/score/cpu/lm32/rtems/score/lm32.h @@ -1,11 +1,14 @@ -/* lm32.h - * - * This file sets up basic CPU dependency settings based on - * compiler settings. For example, it can determine if - * floating point is available. This particular implementation - * is specified to the NO CPU port. +/** + * @file * + * @brief LM32 Set up Basic CPU Dependency Settings Based on Compiler Settings * + * This file sets up basic CPU dependency settings based on + * compiler settings. For example, it can determine if + * floating point is available. This particular implementation + * is specified to the NO CPU port. + */ +/* * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/lm32/rtems/score/types.h b/cpukit/score/cpu/lm32/rtems/score/types.h index aee9f923c1..7caae46e61 100644 --- a/cpukit/score/cpu/lm32/rtems/score/types.h +++ b/cpukit/score/cpu/lm32/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief LM32 CPU Type Definitions + * + * This include file contains type definitions pertaining to the + * Lattice lm32 processor family. */ /* - * This include file contains type definitions pertaining to the - * Lattice lm32 processor family. - * * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/m32c/rtems/asm.h b/cpukit/score/cpu/m32c/rtems/asm.h index 6d9dcb75b6..f3f244d066 100644 --- a/cpukit/score/cpu/m32c/rtems/asm.h +++ b/cpukit/score/cpu/m32c/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file + * + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available @@ -38,24 +41,21 @@ #ifndef __USER_LABEL_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * Recent versions of GNU cpp define variables which indicate the + * need for underscores and percents. If not using GNU cpp or + * the version does not support this, then you will obviously + * have to define these as appropriate. * - * This symbol is prefixed to all C program symbols. + * This symbol is prefixed to all C program symbols. */ #define __USER_LABEL_PREFIX__ _ #endif #ifndef __REGISTER_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * @see __USER_LABEL_PREFIX__ * - * This symbol is prefixed to all register names. + * This symbol is prefixed to all register names. */ #define __REGISTER_PREFIX__ #endif @@ -83,7 +83,9 @@ #define BEGIN_CODE_DCL .text /** This macro is used to denote the end of a code declaration. */ #define END_CODE_DCL -/** This macro is used to denote the beginning of a data declaration section. */ +/** + * This macro is used to denote the beginning of a data declaration section. + */ #define BEGIN_DATA_DCL .data /** This macro is used to denote the end of a data declaration section. */ #define END_DATA_DCL @@ -105,18 +107,17 @@ #define END /** - * This macro is used to declare a public global symbol. + * This macro is used to declare a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * NOTE: This must be tailored for a particular flavor of the C compiler. + * They may need to put underscores in front of the symbols. */ #define PUBLIC(sym) .globl SYM (sym) /** - * This macro is used to prototype a public global symbol. + * This macro is used to prototype a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * @see PUBLIC(sym) .globl SYM (sym) */ #define EXTERN(sym) .globl SYM (sym) diff --git a/cpukit/score/cpu/m32c/rtems/score/cpu.h b/cpukit/score/cpu/m32c/rtems/score/cpu.h index 10cdc5b60a..8d9acc37f3 100644 --- a/cpukit/score/cpu/m32c/rtems/score/cpu.h +++ b/cpukit/score/cpu/m32c/rtems/score/cpu.h @@ -1,5 +1,7 @@ /** - * @file rtems/score/cpu.h + * @file + * + * @brief M32C CPU Dependent Source */ /* @@ -43,172 +45,172 @@ extern "C" { #define RTEMS_USE_16_BIT_OBJECT /** - * Should the calls to @ref _Thread_Enable_dispatch be inlined? + * Should the calls to @ref _Thread_Enable_dispatch be inlined? * - * If TRUE, then they are inlined. - * If FALSE, then a subroutine call is made. + * If TRUE, then they are inlined. + * If FALSE, then a subroutine call is made. * - * This conditional is an example of the classic trade-off of size - * versus speed. Inlining the call (TRUE) typically increases the - * size of RTEMS while speeding up the enabling of dispatching. + * This conditional is an example of the classic trade-off of size + * versus speed. Inlining the call (TRUE) typically increases the + * size of RTEMS while speeding up the enabling of dispatching. * - * @note In general, the @ref _Thread_Dispatch_disable_level will - * only be 0 or 1 unless you are in an interrupt handler and that - * interrupt handler invokes the executive.] When not inlined - * something calls @ref _Thread_Enable_dispatch which in turns calls - * @ref _Thread_Dispatch. If the enable dispatch is inlined, then - * one subroutine call is avoided entirely. + * NOTE: In general, the @ref _Thread_Dispatch_disable_level will + * only be 0 or 1 unless you are in an interrupt handler and that + * interrupt handler invokes the executive.] When not inlined + * something calls @ref _Thread_Enable_dispatch which in turns calls + * @ref _Thread_Dispatch. If the enable dispatch is inlined, then + * one subroutine call is avoided entirely. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INLINE_ENABLE_DISPATCH FALSE /** - * Should the body of the search loops in _Thread_queue_Enqueue_priority - * be unrolled one time? In unrolled each iteration of the loop examines - * two "nodes" on the chain being searched. Otherwise, only one node - * is examined per iteration. - * - * If TRUE, then the loops are unrolled. - * If FALSE, then the loops are not unrolled. - * - * The primary factor in making this decision is the cost of disabling - * and enabling interrupts (_ISR_Flash) versus the cost of rest of the - * body of the loop. On some CPUs, the flash is more expensive than - * one iteration of the loop body. In this case, it might be desirable - * to unroll the loop. It is important to note that on some CPUs, this - * code is the longest interrupt disable period in RTEMS. So it is - * necessary to strike a balance when setting this parameter. + * Should the body of the search loops in _Thread_queue_Enqueue_priority + * be unrolled one time? In unrolled each iteration of the loop examines + * two "nodes" on the chain being searched. Otherwise, only one node + * is examined per iteration. * - * Port Specific Information: + * If TRUE, then the loops are unrolled. + * If FALSE, then the loops are not unrolled. * - * XXX document implementation including references if appropriate + * The primary factor in making this decision is the cost of disabling + * and enabling interrupts (_ISR_Flash) versus the cost of rest of the + * body of the loop. On some CPUs, the flash is more expensive than + * one iteration of the loop body. In this case, it might be desirable + * to unroll the loop. It is important to note that on some CPUs, this + * code is the longest interrupt disable period in RTEMS. So it is + * necessary to strike a balance when setting this parameter. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ #define CPU_UNROLL_ENQUEUE_PRIORITY TRUE /** - * Does RTEMS manage a dedicated interrupt stack in software? + * Does RTEMS manage a dedicated interrupt stack in software? * - * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. - * If FALSE, nothing is done. + * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. + * If FALSE, nothing is done. * - * If the CPU supports a dedicated interrupt stack in hardware, - * then it is generally the responsibility of the BSP to allocate it - * and set it up. + * If the CPU supports a dedicated interrupt stack in hardware, + * then it is generally the responsibility of the BSP to allocate it + * and set it up. * - * If the CPU does not support a dedicated interrupt stack, then - * the porter has two options: (1) execute interrupts on the - * stack of the interrupted task, and (2) have RTEMS manage a dedicated - * interrupt stack. + * If the CPU does not support a dedicated interrupt stack, then + * the porter has two options: (1) execute interrupts on the + * stack of the interrupted task, and (2) have RTEMS manage a dedicated + * interrupt stack. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_SOFTWARE_INTERRUPT_STACK FALSE /** - * Does the CPU follow the simple vectored interrupt model? + * Does the CPU follow the simple vectored interrupt model? * - * If TRUE, then RTEMS allocates the vector table it internally manages. - * If FALSE, then the BSP is assumed to allocate and manage the vector - * table + * If TRUE, then RTEMS allocates the vector table it internally manages. + * If FALSE, then the BSP is assumed to allocate and manage the vector + * table * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE /** - * Does this CPU have hardware support for a dedicated interrupt stack? + * Does this CPU have hardware support for a dedicated interrupt stack? * - * If TRUE, then it must be installed during initialization. - * If FALSE, then no installation is performed. + * If TRUE, then it must be installed during initialization. + * If FALSE, then no installation is performed. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_HARDWARE_INTERRUPT_STACK TRUE /** - * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? + * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? * - * If TRUE, then the memory is allocated during initialization. - * If FALSE, then the memory is allocated during initialization. + * If TRUE, then the memory is allocated during initialization. + * If FALSE, then the memory is allocated during initialization. * - * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. + * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALLOCATE_INTERRUPT_STACK TRUE /** - * Does the RTEMS invoke the user's ISR with the vector number and - * a pointer to the saved interrupt frame (1) or just the vector - * number (0)? + * Does the RTEMS invoke the user's ISR with the vector number and + * a pointer to the saved interrupt frame (1) or just the vector + * number (0)? * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ISR_PASSES_FRAME_POINTER 0 /** - * @def CPU_HARDWARE_FP + * @def CPU_HARDWARE_FP * - * Does the CPU have hardware floating point? + * Does the CPU have hardware floating point? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. * - * If there is a FP coprocessor such as the i387 or mc68881, then - * the answer is TRUE. + * If there is a FP coprocessor such as the i387 or mc68881, then + * the answer is TRUE. * - * The macro name "M32C_HAS_FPU" should be made CPU specific. - * It indicates whether or not this CPU model has FP support. For - * example, it would be possible to have an i386_nofp CPU model - * which set this to false to indicate that you have an i386 without - * an i387 and wish to leave floating point support out of RTEMS. + * The macro name "M32C_HAS_FPU" should be made CPU specific. + * It indicates whether or not this CPU model has FP support. For + * example, it would be possible to have an i386_nofp CPU model + * which set this to false to indicate that you have an i386 without + * an i387 and wish to leave floating point support out of RTEMS. */ /** - * @def CPU_SOFTWARE_FP + * @def CPU_SOFTWARE_FP * - * Does the CPU have no hardware floating point and GCC provides a - * software floating point implementation which must be context - * switched? + * Does the CPU have no hardware floating point and GCC provides a + * software floating point implementation which must be context + * switched? * - * This feature conditional is used to indicate whether or not there - * is software implemented floating point that must be context - * switched. The determination of whether or not this applies - * is very tool specific and the state saved/restored is also - * compiler specific. + * This feature conditional is used to indicate whether or not there + * is software implemented floating point that must be context + * switched. The determination of whether or not this applies + * is very tool specific and the state saved/restored is also + * compiler specific. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if ( M32C_HAS_FPU == 1 ) #define CPU_HARDWARE_FP TRUE @@ -220,192 +222,195 @@ extern "C" { #define CPU_CONTEXT_FP_SIZE 0 /** - * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? + * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. * - * So far, the only CPUs in which this option has been used are the - * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and - * gcc both implicitly used the floating point registers to perform - * integer multiplies. Similarly, the PowerPC port of gcc has been - * seen to allocate floating point local variables and touch the FPU - * even when the flow through a subroutine (like vfprintf()) might - * not use floating point formats. + * So far, the only CPUs in which this option has been used are the + * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and + * gcc both implicitly used the floating point registers to perform + * integer multiplies. Similarly, the PowerPC port of gcc has been + * seen to allocate floating point local variables and touch the FPU + * even when the flow through a subroutine (like vfprintf()) might + * not use floating point formats. * - * If a function which you would not think utilize the FP unit DOES, - * then one can not easily predict which tasks will use the FP hardware. - * In this case, this option should be TRUE. + * If a function which you would not think utilize the FP unit DOES, + * then one can not easily predict which tasks will use the FP hardware. + * In this case, this option should be TRUE. * - * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. + * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALL_TASKS_ARE_FP TRUE /** - * Should the IDLE task have a floating point context? + * Should the IDLE task have a floating point context? * - * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task - * and it has a floating point context which is switched in and out. - * If FALSE, then the IDLE task does not have a floating point context. + * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task + * and it has a floating point context which is switched in and out. + * If FALSE, then the IDLE task does not have a floating point context. * - * Setting this to TRUE negatively impacts the time required to preempt - * the IDLE task from an interrupt because the floating point context - * must be saved as part of the preemption. + * Setting this to TRUE negatively impacts the time required to preempt + * the IDLE task from an interrupt because the floating point context + * must be saved as part of the preemption. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_IDLE_TASK_IS_FP FALSE /** - * Should the saving of the floating point registers be deferred - * until a context switch is made to another different floating point - * task? - * - * If TRUE, then the floating point context will not be stored until - * necessary. It will remain in the floating point registers and not - * disturned until another floating point task is switched to. - * - * If FALSE, then the floating point context is saved when a floating - * point task is switched out and restored when the next floating point - * task is restored. The state of the floating point registers between - * those two operations is not specified. - * - * If the floating point context does NOT have to be saved as part of - * interrupt dispatching, then it should be safe to set this to TRUE. - * - * Setting this flag to TRUE results in using a different algorithm - * for deciding when to save and restore the floating point context. - * The deferred FP switch algorithm minimizes the number of times - * the FP context is saved and restored. The FP context is not saved - * until a context switch is made to another, different FP task. - * Thus in a system with only one FP task, the FP context will never - * be saved or restored. + * Should the saving of the floating point registers be deferred + * until a context switch is made to another different floating point + * task? * - * Port Specific Information: + * If TRUE, then the floating point context will not be stored until + * necessary. It will remain in the floating point registers and not + * disturned until another floating point task is switched to. * - * XXX document implementation including references if appropriate + * If FALSE, then the floating point context is saved when a floating + * point task is switched out and restored when the next floating point + * task is restored. The state of the floating point registers between + * those two operations is not specified. + * + * If the floating point context does NOT have to be saved as part of + * interrupt dispatching, then it should be safe to set this to TRUE. + * + * Setting this flag to TRUE results in using a different algorithm + * for deciding when to save and restore the floating point context. + * The deferred FP switch algorithm minimizes the number of times + * the FP context is saved and restored. The FP context is not saved + * until a context switch is made to another, different FP task. + * Thus in a system with only one FP task, the FP context will never + * be saved or restored. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ #define CPU_USE_DEFERRED_FP_SWITCH TRUE /** - * Does this port provide a CPU dependent IDLE task implementation? + * Does this port provide a CPU dependent IDLE task implementation? * - * If TRUE, then the routine @ref _CPU_Thread_Idle_body - * must be provided and is the default IDLE thread body instead of - * @ref _CPU_Thread_Idle_body. + * If TRUE, then the routine @ref _CPU_Thread_Idle_body + * must be provided and is the default IDLE thread body instead of + * @ref _CPU_Thread_Idle_body. * - * If FALSE, then use the generic IDLE thread body if the BSP does - * not provide one. + * If FALSE, then use the generic IDLE thread body if the BSP does + * not provide one. * - * This is intended to allow for supporting processors which have - * a low power or idle mode. When the IDLE thread is executed, then - * the CPU can be powered down. + * This is intended to allow for supporting processors which have + * a low power or idle mode. When the IDLE thread is executed, then + * the CPU can be powered down. * - * The order of precedence for selecting the IDLE thread body is: + * The order of precedence for selecting the IDLE thread body is: * - * -# BSP provided - * -# CPU dependent (if provided) - * -# generic (if no BSP and no CPU dependent) + * -# BSP provided + * -# CPU dependent (if provided) + * -# generic (if no BSP and no CPU dependent) * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PROVIDES_IDLE_THREAD_BODY TRUE /** - * Does the stack grow up (toward higher addresses) or down - * (toward lower addresses)? + * Does the stack grow up (toward higher addresses) or down + * (toward lower addresses)? * - * If TRUE, then the grows upward. - * If FALSE, then the grows toward smaller addresses. + * If TRUE, then the grows upward. + * If FALSE, then the grows toward smaller addresses. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_GROWS_UP TRUE /** - * The following is the variable attribute used to force alignment - * of critical RTEMS structures. On some processors it may make - * sense to have these aligned on tighter boundaries than - * the minimum requirements of the compiler in order to have as - * much of the critical data area as possible in a cache line. + * The following is the variable attribute used to force alignment + * of critical RTEMS structures. On some processors it may make + * sense to have these aligned on tighter boundaries than + * the minimum requirements of the compiler in order to have as + * much of the critical data area as possible in a cache line. * - * The placement of this macro in the declaration of the variables - * is based on the syntactically requirements of the GNU C - * "__attribute__" extension. For example with GNU C, use - * the following to force a structures to a 32 byte boundary. + * The placement of this macro in the declaration of the variables + * is based on the syntactically requirements of the GNU C + * "__attribute__" extension. For example with GNU C, use + * the following to force a structures to a 32 byte boundary. * - * __attribute__ ((aligned (32))) + * __attribute__ ((aligned (32))) * - * @note Currently only the Priority Bit Map table uses this feature. - * To benefit from using this, the data must be heavily - * used so it will stay in the cache and used frequently enough - * in the executive to justify turning this on. + * NOTE: Currently only the Priority Bit Map table uses this feature. + * To benefit from using this, the data must be heavily + * used so it will stay in the cache and used frequently enough + * in the executive to justify turning this on. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STRUCTURE_ALIGNMENT __attribute__ ((aligned (2))) #define CPU_TIMESTAMP_USE_STRUCT_TIMESPEC TRUE /** - * @defgroup CPUEndian Processor Dependent Endianness Support + * @defgroup CPUEndian Processor Dependent Endianness Support * - * This group assists in issues related to processor endianness. + * This group assists in issues related to processor endianness. + * */ +/**@{**/ /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the - * same values. + * NOTE: @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_LITTLE_ENDIAN + * @see CPU_LITTLE_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_BIG_ENDIAN TRUE /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the - * same values. + * NOTE: @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_BIG_ENDIAN + * @see CPU_BIG_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_LITTLE_ENDIAN FALSE +/** @} */ + /** - * @ingroup CPUInterrupt - * The following defines the number of bits actually used in the - * interrupt field of the task mode. How those bits map to the - * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. + * @ingroup CPUInterrupt + * + * The following defines the number of bits actually used in the + * interrupt field of the task mode. How those bits map to the + * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MODES_INTERRUPT_MASK 0x00000001 @@ -422,50 +427,52 @@ extern "C" { /** * @defgroup CPUContext Processor Dependent Context Management * - * From the highest level viewpoint, there are 2 types of context to save. + * From the highest level viewpoint, there are 2 types of context to save. * - * -# Interrupt registers to save - * -# Task level registers to save + * -# Interrupt registers to save + * -# Task level registers to save * - * Since RTEMS handles integer and floating point contexts separately, this - * means we have the following 3 context items: + * Since RTEMS handles integer and floating point contexts separately, this + * means we have the following 3 context items: * - * -# task level context stuff:: Context_Control - * -# floating point task stuff:: Context_Control_fp - * -# special interrupt level context :: CPU_Interrupt_frame + * -# task level context stuff:: Context_Control + * -# floating point task stuff:: Context_Control_fp + * -# special interrupt level context :: CPU_Interrupt_frame * - * On some processors, it is cost-effective to save only the callee - * preserved registers during a task context switch. This means - * that the ISR code needs to save those registers which do not - * persist across function calls. It is not mandatory to make this - * distinctions between the caller/callee saves registers for the - * purpose of minimizing context saved during task switch and on interrupts. - * If the cost of saving extra registers is minimal, simplicity is the - * choice. Save the same context on interrupt entry as for tasks in - * this case. + * On some processors, it is cost-effective to save only the callee + * preserved registers during a task context switch. This means + * that the ISR code needs to save those registers which do not + * persist across function calls. It is not mandatory to make this + * distinctions between the caller/callee saves registers for the + * purpose of minimizing context saved during task switch and on interrupts. + * If the cost of saving extra registers is minimal, simplicity is the + * choice. Save the same context on interrupt entry as for tasks in + * this case. * - * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then - * care should be used in designing the context area. + * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then + * care should be used in designing the context area. * - * On some CPUs with hardware floating point support, the Context_Control_fp - * structure will not be used or it simply consist of an array of a - * fixed number of bytes. This is done when the floating point context - * is dumped by a "FP save context" type instruction and the format - * is not really defined by the CPU. In this case, there is no need - * to figure out the exact format -- only the size. Of course, although - * this is enough information for RTEMS, it is probably not enough for - * a debugger such as gdb. But that is another problem. + * On some CPUs with hardware floating point support, the Context_Control_fp + * structure will not be used or it simply consist of an array of a + * fixed number of bytes. This is done when the floating point context + * is dumped by a "FP save context" type instruction and the format + * is not really defined by the CPU. In this case, there is no need + * to figure out the exact format -- only the size. Of course, although + * this is enough information for RTEMS, it is probably not enough for + * a debugger such as gdb. But that is another problem. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ +/**@{**/ /** - * @ingroup CPUContext Management - * This defines the minimal set of integer and processor state registers - * that must be saved during a voluntary context switch from one thread - * to another. + * @ingroup Management + * + * This defines the minimal set of integer and processor state registers + * that must be saved during a voluntary context switch from one thread + * to another. */ typedef struct { /** This will contain the stack pointer. */ @@ -475,49 +482,55 @@ typedef struct { } Context_Control; /** - * @ingroup CPUContext Management + * @ingroup Management * - * This macro returns the stack pointer associated with @a _context. + * This macro returns the stack pointer associated with @a _context. * - * @param[in] _context is the thread context area to access + * @param[in] _context is the thread context area to access * - * @return This method returns the stack pointer. + * @return This method returns the stack pointer. */ #define _CPU_Context_Get_SP( _context ) \ (_context)->sp /** - * @ingroup CPUContext Management - * This defines the set of integer and processor state registers that must - * be saved during an interrupt. This set does not include any which are - * in @ref Context_Control. + * @ingroup Management + * + * This defines the set of integer and processor state registers that must + * be saved during an interrupt. This set does not include any which are + * in @ref Context_Control. */ typedef struct { - /** This field is a hint that a port will have a number of integer - * registers that need to be saved when an interrupt occurs or - * when a context switch occurs at the end of an ISR. + /** + * This field is a hint that a port will have a number of integer + * registers that need to be saved when an interrupt occurs or + * when a context switch occurs at the end of an ISR. */ uint32_t special_interrupt_register; } CPU_Interrupt_frame; +/** @} */ + /** - * @defgroup CPUInterrupt Processor Dependent Interrupt Management + * @defgroup CPUInterrupt Processor Dependent Interrupt Management * - * On some CPUs, RTEMS supports a software managed interrupt stack. - * This stack is allocated by the Interrupt Manager and the switch - * is performed in @ref _ISR_Handler. These variables contain pointers - * to the lowest and highest addresses in the chunk of memory allocated - * for the interrupt stack. Since it is unknown whether the stack - * grows up or down (in general), this give the CPU dependent - * code the option of picking the version it wants to use. + * On some CPUs, RTEMS supports a software managed interrupt stack. + * This stack is allocated by the Interrupt Manager and the switch + * is performed in @ref _ISR_Handler. These variables contain pointers + * to the lowest and highest addresses in the chunk of memory allocated + * for the interrupt stack. Since it is unknown whether the stack + * grows up or down (in general), this give the CPU dependent + * code the option of picking the version it wants to use. * - * @note These two variables are required if the macro - * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. + * NOTE: These two variables are required if the macro + * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate + * */ +/**@{**/ /* * Nothing prevents the porter from declaring more CPU specific variables. @@ -530,48 +543,46 @@ typedef struct { /* XXX: if needed, put more variables here */ /** - * Amount of extra stack (above minimum stack size) required by - * MPCI receive server thread. Remember that in a multiprocessor - * system this thread must exist and be able to process all directives. + * Amount of extra stack (above minimum stack size) required by + * MPCI receive server thread. Remember that in a multiprocessor + * system this thread must exist and be able to process all directives. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0 /** - * @ingroup CPUInterrupt - * This defines the number of entries in the @ref _ISR_Vector_table managed - * by RTEMS. + * This defines the number of entries in the @ref _ISR_Vector_table managed + * by RTEMS. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INTERRUPT_NUMBER_OF_VECTORS 32 -/** - * @ingroup CPUInterrupt - * This defines the highest interrupt vector number for this port. - */ +/** This defines the highest interrupt vector number for this port. */ #define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER (CPU_INTERRUPT_NUMBER_OF_VECTORS - 1) /** - * @ingroup CPUInterrupt - * This is defined if the port has a special way to report the ISR nesting - * level. Most ports maintain the variable @a _ISR_Nest_level. + * This is defined if the port has a special way to report the ISR nesting + * level. Most ports maintain the variable @a _ISR_Nest_level. */ #define CPU_PROVIDES_ISR_IS_IN_PROGRESS FALSE +/** @} */ + /** - * @ingroup CPUContext - * Should be large enough to run all RTEMS tests. This ensures - * that a "reasonable" small application should not have any problems. + * @ingroup CPUContext + * + * Should be large enough to run all RTEMS tests. This ensures + * that a "reasonable" small application should not have any problems. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_MINIMUM_SIZE (2048L) @@ -582,70 +593,70 @@ typedef struct { #endif /** - * CPU's worst alignment requirement for data types on a byte boundary. This - * alignment does not take into account the requirements for the stack. + * CPU's worst alignment requirement for data types on a byte boundary. This + * alignment does not take into account the requirements for the stack. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALIGNMENT 2 /** - * This number corresponds to the byte alignment requirement for the - * heap handler. This alignment requirement may be stricter than that - * for the data types alignment specified by @ref CPU_ALIGNMENT. It is - * common for the heap to follow the same alignment requirement as - * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for - * the heap, then this should be set to @ref CPU_ALIGNMENT. - * - * @note This does not have to be a power of 2 although it should be - * a multiple of 2 greater than or equal to 2. The requirement - * to be a multiple of 2 is because the heap uses the least - * significant field of the front and back flags to indicate - * that a block is in use or free. So you do not want any odd - * length blocks really putting length data in that bit. - * - * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will - * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that - * elements allocated from the heap meet all restrictions. + * This number corresponds to the byte alignment requirement for the + * heap handler. This alignment requirement may be stricter than that + * for the data types alignment specified by @ref CPU_ALIGNMENT. It is + * common for the heap to follow the same alignment requirement as + * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for + * the heap, then this should be set to @ref CPU_ALIGNMENT. * - * Port Specific Information: + * NOTE: This does not have to be a power of 2 although it should be + * a multiple of 2 greater than or equal to 2. The requirement + * to be a multiple of 2 is because the heap uses the least + * significant field of the front and back flags to indicate + * that a block is in use or free. So you do not want any odd + * length blocks really putting length data in that bit. * - * XXX document implementation including references if appropriate + * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will + * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that + * elements allocated from the heap meet all restrictions. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ #define CPU_HEAP_ALIGNMENT 4 /** - * This number corresponds to the byte alignment requirement for memory - * buffers allocated by the partition manager. This alignment requirement - * may be stricter than that for the data types alignment specified by - * @ref CPU_ALIGNMENT. It is common for the partition to follow the same - * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is - * strict enough for the partition, then this should be set to - * @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for memory + * buffers allocated by the partition manager. This alignment requirement + * may be stricter than that for the data types alignment specified by + * @ref CPU_ALIGNMENT. It is common for the partition to follow the same + * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is + * strict enough for the partition, then this should be set to + * @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2. It does have to - * be greater or equal to than @ref CPU_ALIGNMENT. + * NOTE: This does not have to be a power of 2. It does have to + * be greater or equal to than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PARTITION_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. If the - * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be - * set to 0. + * This number corresponds to the byte alignment requirement for the + * stack. This alignment requirement may be stricter than that for the + * data types alignment specified by @ref CPU_ALIGNMENT. If the + * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be + * set to 0. * - * @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. + * NOTE: This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_ALIGNMENT 0 @@ -654,25 +665,27 @@ typedef struct { */ /** - * @ingroup CPUInterrupt - * Support routine to initialize the RTEMS vector table after it is allocated. + * @ingroup CPUInterrupt + * + * Support routine to initialize the RTEMS vector table after it is allocated. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Initialize_vectors() /** - * @ingroup CPUInterrupt - * Disable all interrupts for an RTEMS critical section. The previous - * level is returned in @a _isr_cookie. + * @ingroup CPUInterrupt + * + * Disable all interrupts for an RTEMS critical section. The previous + * level is returned in @a _isr_cookie. * - * @param[out] _isr_cookie will contain the previous level cookie + * @param[out] _isr_cookie will contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Disable( _isr_cookie ) \ do { \ @@ -683,16 +696,17 @@ typedef struct { } while(0) /** - * @ingroup CPUInterrupt - * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). - * This indicates the end of an RTEMS critical section. The parameter - * @a _isr_cookie is not modified. + * @ingroup CPUInterrupt + * + * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). + * This indicates the end of an RTEMS critical section. The parameter + * @a _isr_cookie is not modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Enable(_isr_cookie) \ do { \ @@ -701,17 +715,18 @@ typedef struct { } while(0) /** - * @ingroup CPUInterrupt - * This temporarily restores the interrupt to @a _isr_cookie before immediately - * disabling them again. This is used to divide long RTEMS critical - * sections into two or more parts. The parameter @a _isr_cookie is not - * modified. + * @ingroup CPUInterrupt + * + * This temporarily restores the interrupt to @a _isr_cookie before immediately + * disabling them again. This is used to divide long RTEMS critical + * sections into two or more parts. The parameter @a _isr_cookie is not + * modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Flash( _isr_cookie ) \ do { \ @@ -721,21 +736,21 @@ typedef struct { } while(0) /** - * @ingroup CPUInterrupt - * - * This routine and @ref _CPU_ISR_Get_level - * Map the interrupt level in task mode onto the hardware that the CPU - * actually provides. Currently, interrupt levels which do not - * map onto the CPU in a generic fashion are undefined. Someday, - * it would be nice if these were "mapped" by the application - * via a callout. For example, m68k has 8 levels 0 - 7, levels - * 8 - 255 would be available for bsp/application specific meaning. - * This could be used to manage a programmable interrupt controller - * via the rtems_task_mode directive. + * @ingroup CPUInterrupt * - * Port Specific Information: + * This routine and @ref _CPU_ISR_Get_level + * Map the interrupt level in task mode onto the hardware that the CPU + * actually provides. Currently, interrupt levels which do not + * map onto the CPU in a generic fashion are undefined. Someday, + * it would be nice if these were "mapped" by the application + * via a callout. For example, m68k has 8 levels 0 - 7, levels + * 8 - 255 would be available for bsp/application specific meaning. + *This could be used to manage a programmable interrupt controller + * via the rtems_task_mode directive. * - * XXX document implementation including references if appropriate + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Set_level( _new_level ) \ do { \ @@ -744,15 +759,16 @@ typedef struct { } while(0) /** - * @ingroup CPUInterrupt - * Return the current interrupt disable level for this task in - * the format used by the interrupt level portion of the task mode. + * @ingroup CPUInterrupt + * + * Return the current interrupt disable level for this task in + * the format used by the interrupt level portion of the task mode. * - * @note This routine usually must be implemented as a subroutine. + * NOTE: This routine usually must be implemented as a subroutine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ uint32_t _CPU_ISR_Get_level( void ); @@ -761,35 +777,36 @@ uint32_t _CPU_ISR_Get_level( void ); /* Context handler macros */ /** - * @ingroup CPUContext - * Initialize the context to a state suitable for starting a - * task after a context restore operation. Generally, this - * involves: - * - * - setting a starting address - * - preparing the stack - * - preparing the stack and frame pointers - * - setting the proper interrupt level in the context - * - initializing the floating point context - * - * This routine generally does not set any unnecessary register - * in the context. The state of the "general data" registers is - * undefined at task start time. - * - * @param[in] _the_context is the context structure to be initialized - * @param[in] _stack_base is the lowest physical address of this task's stack - * @param[in] _size is the size of this task's stack - * @param[in] _isr is the interrupt disable level - * @param[in] _entry_point is the thread's entry point. This is - * always @a _Thread_Handler - * @param[in] _is_fp is TRUE if the thread is to be a floating - * point thread. This is typically only used on CPUs where the - * FPU may be easily disabled by software such as on the SPARC - * where the PSR contains an enable FPU bit. - * - * Port Specific Information: - * - * XXX document implementation including references if appropriate + * @ingroup CPUContext + * + * Initialize the context to a state suitable for starting a + * task after a context restore operation. Generally, this + * involves: + * + * - setting a starting address + * - preparing the stack + * - preparing the stack and frame pointers + * - setting the proper interrupt level in the context + * - initializing the floating point context + * + * This routine generally does not set any unnecessary register + * in the context. The state of the "general data" registers is + * undefined at task start time. + * + * @param[in] _the_context is the context structure to be initialized + * @param[in] _stack_base is the lowest physical address of this task's stack + * @param[in] _size is the size of this task's stack + * @param[in] _isr is the interrupt disable level + * @param[in] _entry_point is the thread's entry point. This is + * always @a _Thread_Handler + * @param[in] _is_fp is TRUE if the thread is to be a floating + * point thread. This is typically only used on CPUs where the + * FPU may be easily disabled by software such as on the SPARC + * where the PSR contains an enable FPU bit. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ void _CPU_Context_Initialize( Context_Control *the_context, @@ -801,66 +818,67 @@ void _CPU_Context_Initialize( ); /** - * This routine is responsible for somehow restarting the currently - * executing task. If you are lucky, then all that is necessary - * is restoring the context. Otherwise, there will need to be - * a special assembly routine which does something special in this - * case. For many ports, simply adding a label to the restore path - * of @ref _CPU_Context_switch will work. On other ports, it may be - * possibly to load a few arguments and jump to the restore path. It will - * not work if restarting self conflicts with the stack frame - * assumptions of restoring a context. + * This routine is responsible for somehow restarting the currently + * executing task. If you are lucky, then all that is necessary + * is restoring the context. Otherwise, there will need to be + * a special assembly routine which does something special in this + * case. For many ports, simply adding a label to the restore path + * of @ref _CPU_Context_switch will work. On other ports, it may be + * possibly to load a few arguments and jump to the restore path. It will + * not work if restarting self conflicts with the stack frame + * assumptions of restoring a context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_Restart_self( Context_Control *the_context ); /** - * @ingroup CPUContext - * The purpose of this macro is to allow the initial pointer into - * a floating point context area (used to save the floating point - * context) to be at an arbitrary place in the floating point - * context area. - * - * This is necessary because some FP units are designed to have - * their context saved as a stack which grows into lower addresses. - * Other FP units can be saved by simply moving registers into offsets - * from the base of the context area. Finally some FP units provide - * a "dump context" instruction which could fill in from high to low - * or low to high based on the whim of the CPU designers. - * - * @param[in] _base is the lowest physical address of the floating point - * context area - * @param[in] _offset is the offset into the floating point area + * @ingroup CPUContext + * + * The purpose of this macro is to allow the initial pointer into + * a floating point context area (used to save the floating point + * context) to be at an arbitrary place in the floating point + * context area. * - * Port Specific Information: + * This is necessary because some FP units are designed to have + * their context saved as a stack which grows into lower addresses. + * Other FP units can be saved by simply moving registers into offsets + * from the base of the context area. Finally some FP units provide + * a "dump context" instruction which could fill in from high to low + * or low to high based on the whim of the CPU designers. * - * XXX document implementation including references if appropriate + * @param[in] _base is the lowest physical address of the floating point + * context area + * @param[in] _offset is the offset into the floating point area + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ #define _CPU_Context_Fp_start( _base, _offset ) \ ( (void *) _Addresses_Add_offset( (_base), (_offset) ) ) /** - * This routine initializes the FP context area passed to it to. - * There are a few standard ways in which to initialize the - * floating point context. The code included for this macro assumes - * that this is a CPU in which a "initial" FP context was saved into - * @a _CPU_Null_fp_context and it simply copies it to the destination - * context passed to it. + * This routine initializes the FP context area passed to it to. + * There are a few standard ways in which to initialize the + * floating point context. The code included for this macro assumes + * that this is a CPU in which a "initial" FP context was saved into + * @a _CPU_Null_fp_context and it simply copies it to the destination + * context passed to it. * - * Other floating point context save/restore models include: - * -# not doing anything, and - * -# putting a "null FP status word" in the correct place in the FP context. + * Other floating point context save/restore models include: + * -# not doing anything, and + * -# putting a "null FP status word" in the correct place in the FP context. * - * @param[in] _destination is the floating point context area + * @param[in] _destination is the floating point context area * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Initialize_fp( _destination ) \ { \ @@ -872,13 +890,13 @@ void _CPU_Context_Restart_self( /* Fatal Error manager macros */ /** - * This routine copies _error into a known place -- typically a stack - * location or a register, optionally disables interrupts, and - * halts/stops the CPU. + * This routine copies _error into a known place -- typically a stack + * location or a register, optionally disables interrupts, and + * halts/stops the CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Fatal_halt( _error ) \ { \ @@ -889,68 +907,66 @@ void _CPU_Context_Restart_self( /* Bitfield handler macros */ /** - * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation + * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation * - * This set of routines are used to implement fast searches for - * the most important ready task. + * This set of routines are used to implement fast searches for + * the most important ready task. */ +/**@{**/ /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the generic bitfield - * manipulation implementation. + * This definition is set to TRUE if the port uses the generic bitfield + * manipulation implementation. */ #define CPU_USE_GENERIC_BITFIELD_CODE TRUE /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the data tables provided - * by the generic bitfield manipulation implementation. - * This can occur when actually using the generic bitfield manipulation - * implementation or when implementing the same algorithm in assembly - * language for improved performance. It is unlikely that a port will use - * the data if it has a bitfield scan instruction. + * This definition is set to TRUE if the port uses the data tables provided + * by the generic bitfield manipulation implementation. + * This can occur when actually using the generic bitfield manipulation + * implementation or when implementing the same algorithm in assembly + * language for improved performance. It is unlikely that a port will use + * the data if it has a bitfield scan instruction. */ #define CPU_USE_GENERIC_BITFIELD_DATA TRUE /** - * @ingroup CPUBitfield - * This routine sets @a _output to the bit number of the first bit - * set in @a _value. @a _value is of CPU dependent type - * @a Priority_bit_map_Control. This type may be either 16 or 32 bits - * wide although only the 16 least significant bits will be used. - * - * There are a number of variables in using a "find first bit" type - * instruction. - * - * -# What happens when run on a value of zero? - * -# Bits may be numbered from MSB to LSB or vice-versa. - * -# The numbering may be zero or one based. - * -# The "find first bit" instruction may search from MSB or LSB. - * - * RTEMS guarantees that (1) will never happen so it is not a concern. - * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and - * @ref _CPU_Priority_bits_index. These three form a set of routines - * which must logically operate together. Bits in the _value are - * set and cleared based on masks built by @ref _CPU_Priority_Mask. - * The basic major and minor values calculated by @ref _Priority_Major - * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index - * to properly range between the values returned by the "find first bit" - * instruction. This makes it possible for @ref _Priority_Get_highest to - * calculate the major and directly index into the minor table. - * This mapping is necessary to ensure that 0 (a high priority major/minor) - * is the first bit found. - * - * This entire "find first bit" and mapping process depends heavily - * on the manner in which a priority is broken into a major and minor - * components with the major being the 4 MSB of a priority and minor - * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest - * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next - * to the lowest priority. - * - * If your CPU does not have a "find first bit" instruction, then - * there are ways to make do without it. Here are a handful of ways - * to implement this in software: + * This routine sets @a _output to the bit number of the first bit + * set in @a _value. @a _value is of CPU dependent type + * @a Priority_bit_map_Control. This type may be either 16 or 32 bits + * wide although only the 16 least significant bits will be used. + * + * There are a number of variables in using a "find first bit" type + * instruction. + * + * -# What happens when run on a value of zero? + * -# Bits may be numbered from MSB to LSB or vice-versa. + * -# The numbering may be zero or one based. + * -# The "find first bit" instruction may search from MSB or LSB. + * + * RTEMS guarantees that (1) will never happen so it is not a concern. + * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and + * @ref _CPU_Priority_bits_index. These three form a set of routines + * which must logically operate together. Bits in the _value are + * set and cleared based on masks built by @ref _CPU_Priority_Mask. + * The basic major and minor values calculated by @ref _Priority_Major + * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index + * to properly range between the values returned by the "find first bit" + * instruction. This makes it possible for @ref _Priority_Get_highest to + * calculate the major and directly index into the minor table. + * This mapping is necessary to ensure that 0 (a high priority major/minor) + * is the first bit found. + * + * This entire "find first bit" and mapping process depends heavily + * on the manner in which a priority is broken into a major and minor + * components with the major being the 4 MSB of a priority and minor + * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest + * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next + * to the lowest priority. + * + * If your CPU does not have a "find first bit" instruction, then + * there are ways to make do without it. Here are a handful of ways + * to implement this in software: * @verbatim - a series of 16 bit test instructions @@ -967,15 +983,15 @@ void _CPU_Context_Restart_self( _number += bit_set_table[ _value ] @endverbatim - * where bit_set_table[ 16 ] has values which indicate the first - * bit set + * where bit_set_table[ 16 ] has values which indicate the first + * bit set * - * @param[in] _value is the value to be scanned - * @param[in] _output is the first bit set + * @param[in] _value is the value to be scanned + * @param[in] _output is the first bit set * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -988,13 +1004,13 @@ void _CPU_Context_Restart_self( /* end of Bitfield handler macros */ /** - * This routine builds the mask which corresponds to the bit fields - * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion - * for that routine. + * This routine builds the mask which corresponds to the bit fields + * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion + * for that routine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1004,17 +1020,16 @@ void _CPU_Context_Restart_self( #endif /** - * @ingroup CPUBitfield - * This routine translates the bit numbers returned by - * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as - * a major or minor component of a priority. See the discussion - * for that routine. + * This routine translates the bit numbers returned by + * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as + * a major or minor component of a priority. See the discussion + * for that routine. * - * @param[in] _priority is the major or minor number to translate + * @param[in] _priority is the major or minor number to translate * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1023,31 +1038,34 @@ void _CPU_Context_Restart_self( #endif +/** @} */ + /* end of Priority handler macros */ /* functions */ /** - * This routine performs CPU dependent initialization. + * This routine performs CPU dependent initialization. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Initialize(void); /** - * @ingroup CPUInterrupt - * This routine installs a "raw" interrupt handler directly into the - * processor's vector table. + * @ingroup CPUInterrupt * - * @param[in] vector is the vector number - * @param[in] new_handler is the raw ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * This routine installs a "raw" interrupt handler directly into the + * processor's vector table. * - * Port Specific Information: + * @param[in] vector is the vector number + * @param[in] new_handler is the raw ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * XXX document implementation including references if appropriate + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_raw_handler( uint32_t vector, @@ -1056,16 +1074,17 @@ void _CPU_ISR_install_raw_handler( ); /** - * @ingroup CPUInterrupt - * This routine installs an interrupt vector. + * @ingroup CPUInterrupt + * + * This routine installs an interrupt vector. * - * @param[in] vector is the vector number - * @param[in] new_handler is the RTEMS ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * @param[in] vector is the vector number + * @param[in] new_handler is the RTEMS ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_vector( uint32_t vector, @@ -1074,40 +1093,42 @@ void _CPU_ISR_install_vector( ); /** - * @ingroup CPUInterrupt - * This routine installs the hardware interrupt stack pointer. + * @ingroup CPUInterrupt * - * @note It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK - * is TRUE. + * This routine installs the hardware interrupt stack pointer. * - * Port Specific Information: + * NOTE: It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK + * is TRUE. * - * XXX document implementation including references if appropriate + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ void _CPU_Install_interrupt_stack( void ); /** - * This routine is the CPU dependent IDLE thread body. + * This routine is the CPU dependent IDLE thread body. * - * @note It need only be provided if @ref CPU_PROVIDES_IDLE_THREAD_BODY - * is TRUE. + * NOTE: It need only be provided if @ref CPU_PROVIDES_IDLE_THREAD_BODY + * is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void *_CPU_Thread_Idle_body( uintptr_t ignored ); /** - * @ingroup CPUContext - * This routine switches from the run context to the heir context. + * @ingroup CPUContext + * + * This routine switches from the run context to the heir context. * - * @param[in] run points to the context of the currently executing task - * @param[in] heir points to the context of the heir task + * @param[in] run points to the context of the currently executing task + * @param[in] heir points to the context of the heir task * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_switch( Context_Control *run, @@ -1115,17 +1136,18 @@ void _CPU_Context_switch( ); /** - * @ingroup CPUContext - * This routine is generally used only to restart self in an - * efficient manner. It may simply be a label in @ref _CPU_Context_switch. + * @ingroup CPUContext + * + * This routine is generally used only to restart self in an + * efficient manner. It may simply be a label in @ref _CPU_Context_switch. * - * @param[in] new_context points to the context to be restored. + * @param[in] new_context points to the context to be restored. * - * @note May be unnecessary to reload some registers. + * NOTE: May be unnecessary to reload some registers. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore( Context_Control *new_context @@ -1137,32 +1159,33 @@ typedef CPU_Interrupt_frame CPU_Exception_frame; void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); /** - * @ingroup CPUEndian - * The following routine swaps the endian format of an unsigned int. - * It must be static because it is referenced indirectly. + * @ingroup CPUEndian + * + * The following routine swaps the endian format of an unsigned int. + * It must be static because it is referenced indirectly. * - * This version will work on any processor, but if there is a better - * way for your CPU PLEASE use it. The most common way to do this is to: + * This version will work on any processor, but if there is a better + * way for your CPU PLEASE use it. The most common way to do this is to: * - * swap least significant two bytes with 16-bit rotate - * swap upper and lower 16-bits - * swap most significant two bytes with 16-bit rotate + * swap least significant two bytes with 16-bit rotate + * swap upper and lower 16-bits + * swap most significant two bytes with 16-bit rotate * - * Some CPUs have special instructions which swap a 32-bit quantity in - * a single instruction (e.g. i486). It is probably best to avoid - * an "endian swapping control bit" in the CPU. One good reason is - * that interrupts would probably have to be disabled to ensure that - * an interrupt does not try to access the same "chunk" with the wrong - * endian. Another good reason is that on some CPUs, the endian bit - * endianness for ALL fetches -- both code and data -- so the code - * will be fetched incorrectly. + * Some CPUs have special instructions which swap a 32-bit quantity in + * a single instruction (e.g. i486). It is probably best to avoid + * an "endian swapping control bit" in the CPU. One good reason is + * that interrupts would probably have to be disabled to ensure that + * an interrupt does not try to access the same "chunk" with the wrong + * endian. Another good reason is that on some CPUs, the endian bit + * endianness for ALL fetches -- both code and data -- so the code + * will be fetched incorrectly. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ static inline uint32_t CPU_swap_u32( uint32_t value @@ -1180,11 +1203,12 @@ static inline uint32_t CPU_swap_u32( } /** - * @ingroup CPUEndian - * This routine swaps a 16 bir quantity. + * @ingroup CPUEndian + * + * This routine swaps a 16 bir quantity. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped */ #define CPU_swap_u16( value ) \ (((value&0xff) << 8) | ((value >> 8)&0xff)) diff --git a/cpukit/score/cpu/m32c/rtems/score/cpu_asm.h b/cpukit/score/cpu/m32c/rtems/score/cpu_asm.h index e3797a93f9..1519fbb6f3 100644 --- a/cpukit/score/cpu/m32c/rtems/score/cpu_asm.h +++ b/cpukit/score/cpu/m32c/rtems/score/cpu_asm.h @@ -1,12 +1,14 @@ /** - * @file rtems/score/cpu_asm.h + * @file + * + * @brief M32C CPU Assembly File + * + * Very loose template for an include file for the cpu_asm.? file + * if it is implemented as a ".S" file (preprocessed by cpp) instead + * of a ".s" file (preprocessed by gm4 or gasp). */ /* - * Very loose template for an include file for the cpu_asm.? file - * if it is implemented as a ".S" file (preprocessed by cpp) instead - * of a ".s" file (preprocessed by gm4 or gasp). - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/m32c/rtems/score/m32c.h b/cpukit/score/cpu/m32c/rtems/score/m32c.h index 5cd3e71103..9be83e71e4 100644 --- a/cpukit/score/cpu/m32c/rtems/score/m32c.h +++ b/cpukit/score/cpu/m32c/rtems/score/m32c.h @@ -1,9 +1,15 @@ -/* - * This file sets up basic CPU dependency settings based on - * compiler settings. For example, it can determine if - * floating point is available. This particular implementation - * is specified to the NO CPU port. +/** + * @file + * + * @brief M32C Set up Basic CPU Dependency Settings Based on Compiler Settings * + * This file sets up basic CPU dependency settings based on + * compiler settings. For example, it can determine if + * floating point is available. This particular implementation + * is specified to the NO CPU port. + */ + +/* * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/m32c/rtems/score/types.h b/cpukit/score/cpu/m32c/rtems/score/types.h index b9636ad780..4f1e7fe519 100644 --- a/cpukit/score/cpu/m32c/rtems/score/types.h +++ b/cpukit/score/cpu/m32c/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief M32C CPU Type Definitions + * + * This include file contains type definitions pertaining to the Intel + * m32c processor family. */ /* - * This include file contains type definitions pertaining to the Intel - * m32c processor family. - * * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/m32c/varvects.h b/cpukit/score/cpu/m32c/varvects.h index 30884edbd8..7168482b54 100644 --- a/cpukit/score/cpu/m32c/varvects.h +++ b/cpukit/score/cpu/m32c/varvects.h @@ -1,37 +1,41 @@ -/* - -Copyright (c) 2008 Red Hat Incorporated. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 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. +/** + * @file + * + * @brief M32C Built-in Variable Vector Table Interface + * + * This file defines the interface to the built-in variable vector + * table in R8C/M16C/M32C chips. + */ - The name of Red Hat Incorporated may not 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 RED HAT INCORPORATED 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. - -*/ - -/* This file defines the interface to the built-in variable vector - table in R8C/M16C/M32C chips. */ +/* + * Copyright (c) 2008 Red Hat Incorporated. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 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. + * + * The name of Red Hat Incorporated may not 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 RED HAT INCORPORATED 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 _VARVECTS_H_ #define _VARVECTS_H_ diff --git a/cpukit/score/cpu/m32r/rtems/asm.h b/cpukit/score/cpu/m32r/rtems/asm.h index cd258c513b..11f5b876b9 100644 --- a/cpukit/score/cpu/m32r/rtems/asm.h +++ b/cpukit/score/cpu/m32r/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available @@ -38,24 +41,24 @@ #ifndef __USER_LABEL_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * Recent versions of GNU cpp define variables which indicate the + * need for underscores and percents. If not using GNU cpp or + * the version does not support this, then you will obviously + * have to define these as appropriate. * - * This symbol is prefixed to all C program symbols. + * This symbol is prefixed to all C program symbols. */ #define __USER_LABEL_PREFIX__ _ #endif #ifndef __REGISTER_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * Recent versions of GNU cpp define variables which indicate the + * need for underscores and percents. If not using GNU cpp or + * the version does not support this, then you will obviously + * have to define these as appropriate. * - * This symbol is prefixed to all register names. + * This symbol is prefixed to all register names. */ #define __REGISTER_PREFIX__ #endif @@ -95,8 +98,9 @@ #define BEGIN_DATA /** This macro is used to denote the end of a data section. */ #define END_DATA -/** This macro is used to denote the beginning of the - * unitialized data section. +/** + * This macro is used to denote the beginning of the + * unitialized data section. */ #define BEGIN_BSS /** This macro is used to denote the end of the unitialized data section. */ @@ -105,18 +109,18 @@ #define END /** - * This macro is used to declare a public global symbol. + * This macro is used to declare a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * NOTE: This must be tailored for a particular flavor of the C compiler. + * They may need to put underscores in front of the symbols. */ #define PUBLIC(sym) .globl SYM (sym) /** - * This macro is used to prototype a public global symbol. + * This macro is used to prototype a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * NOTE: This must be tailored for a particular flavor of the C compiler. + * They may need to put underscores in front of the symbols. */ #define EXTERN(sym) .globl SYM (sym) diff --git a/cpukit/score/cpu/m32r/rtems/score/cpu.h b/cpukit/score/cpu/m32r/rtems/score/cpu.h index d6886ffefc..8c8a9c1c30 100644 --- a/cpukit/score/cpu/m32r/rtems/score/cpu.h +++ b/cpukit/score/cpu/m32r/rtems/score/cpu.h @@ -1,22 +1,22 @@ /** - * @file rtems/score/cpu.h - */ - -/* - * This include file contains information pertaining to the XXX - * processor. + * @file + * + * @brief Intel M32R CPU Dependent Source + * + * This include file contains information pertaining to the XXX + * processor. * - * @note This file is part of a porting template that is intended - * to be used as the starting point when porting RTEMS to a new - * CPU family. The following needs to be done when using this as - * the starting point for a new port: + * NOTE: This file is part of a porting template that is intended + * to be used as the starting point when porting RTEMS to a new + * CPU family. The following needs to be done when using this as + * the starting point for a new port: * - * + Anywhere there is an XXX, it should be replaced - * with information about the CPU family being ported to. + * + Anywhere there is an XXX, it should be replaced + * with information about the CPU family being ported to. * - * + At the end of each comment section, there is a heading which - * says "Port Specific Information:". When porting to RTEMS, - * add CPU family specific information in this section + * + At the end of each comment section, there is a heading which + * says "Port Specific Information:". When porting to RTEMS, + * add CPU family specific information in this section */ /* @@ -41,172 +41,172 @@ extern "C" { /* conditional compilation parameters */ /** - * Should the calls to @ref _Thread_Enable_dispatch be inlined? + * Should the calls to @ref _Thread_Enable_dispatch be inlined? * - * If TRUE, then they are inlined. - * If FALSE, then a subroutine call is made. + * If TRUE, then they are inlined. + * If FALSE, then a subroutine call is made. * - * This conditional is an example of the classic trade-off of size - * versus speed. Inlining the call (TRUE) typically increases the - * size of RTEMS while speeding up the enabling of dispatching. + * This conditional is an example of the classic trade-off of size + * versus speed. Inlining the call (TRUE) typically increases the + * size of RTEMS while speeding up the enabling of dispatching. * - * @note In general, the @ref _Thread_Dispatch_disable_level will - * only be 0 or 1 unless you are in an interrupt handler and that - * interrupt handler invokes the executive.] When not inlined - * something calls @ref _Thread_Enable_dispatch which in turns calls - * @ref _Thread_Dispatch. If the enable dispatch is inlined, then - * one subroutine call is avoided entirely. + * NOTE: In general, the @ref _Thread_Dispatch_disable_level will + * only be 0 or 1 unless you are in an interrupt handler and that + * interrupt handler invokes the executive.] When not inlined + * something calls @ref _Thread_Enable_dispatch which in turns calls + * @ref _Thread_Dispatch. If the enable dispatch is inlined, then + * one subroutine call is avoided entirely. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INLINE_ENABLE_DISPATCH FALSE /** - * Should the body of the search loops in _Thread_queue_Enqueue_priority - * be unrolled one time? In unrolled each iteration of the loop examines - * two "nodes" on the chain being searched. Otherwise, only one node - * is examined per iteration. + * Should the body of the search loops in _Thread_queue_Enqueue_priority + * be unrolled one time? In unrolled each iteration of the loop examines + * two "nodes" on the chain being searched. Otherwise, only one node + * is examined per iteration. * - * If TRUE, then the loops are unrolled. - * If FALSE, then the loops are not unrolled. + * If TRUE, then the loops are unrolled. + * If FALSE, then the loops are not unrolled. * - * The primary factor in making this decision is the cost of disabling - * and enabling interrupts (_ISR_Flash) versus the cost of rest of the - * body of the loop. On some CPUs, the flash is more expensive than - * one iteration of the loop body. In this case, it might be desirable - * to unroll the loop. It is important to note that on some CPUs, this - * code is the longest interrupt disable period in RTEMS. So it is - * necessary to strike a balance when setting this parameter. + * The primary factor in making this decision is the cost of disabling + * and enabling interrupts (_ISR_Flash) versus the cost of rest of the + * body of the loop. On some CPUs, the flash is more expensive than + * one iteration of the loop body. In this case, it might be desirable + * to unroll the loop. It is important to note that on some CPUs, this + * code is the longest interrupt disable period in RTEMS. So it is + * necessary to strike a balance when setting this parameter. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_UNROLL_ENQUEUE_PRIORITY TRUE /** - * Does RTEMS manage a dedicated interrupt stack in software? + * Does RTEMS manage a dedicated interrupt stack in software? * - * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. - * If FALSE, nothing is done. + * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. + * If FALSE, nothing is done. * - * If the CPU supports a dedicated interrupt stack in hardware, - * then it is generally the responsibility of the BSP to allocate it - * and set it up. + * If the CPU supports a dedicated interrupt stack in hardware, + * then it is generally the responsibility of the BSP to allocate it + * and set it up. * - * If the CPU does not support a dedicated interrupt stack, then - * the porter has two options: (1) execute interrupts on the - * stack of the interrupted task, and (2) have RTEMS manage a dedicated - * interrupt stack. + * If the CPU does not support a dedicated interrupt stack, then + * the porter has two options: (1) execute interrupts on the + * stack of the interrupted task, and (2) have RTEMS manage a dedicated + * interrupt stack. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_SOFTWARE_INTERRUPT_STACK FALSE /** - * Does the CPU follow the simple vectored interrupt model? + * Does the CPU follow the simple vectored interrupt model? * - * If TRUE, then RTEMS allocates the vector table it internally manages. - * If FALSE, then the BSP is assumed to allocate and manage the vector - * table + * If TRUE, then RTEMS allocates the vector table it internally manages. + * If FALSE, then the BSP is assumed to allocate and manage the vector + * table * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE /** - * Does this CPU have hardware support for a dedicated interrupt stack? + * Does this CPU have hardware support for a dedicated interrupt stack? * - * If TRUE, then it must be installed during initialization. - * If FALSE, then no installation is performed. + * If TRUE, then it must be installed during initialization. + * If FALSE, then no installation is performed. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_HARDWARE_INTERRUPT_STACK TRUE /** - * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? + * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? * - * If TRUE, then the memory is allocated during initialization. - * If FALSE, then the memory is allocated during initialization. + * If TRUE, then the memory is allocated during initialization. + * If FALSE, then the memory is allocated during initialization. * - * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. + * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALLOCATE_INTERRUPT_STACK TRUE /** - * Does the RTEMS invoke the user's ISR with the vector number and - * a pointer to the saved interrupt frame (1) or just the vector - * number (0)? + * Does the RTEMS invoke the user's ISR with the vector number and + * a pointer to the saved interrupt frame (1) or just the vector + * number (0)? * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ISR_PASSES_FRAME_POINTER 0 /** - * @def CPU_HARDWARE_FP + * @def CPU_HARDWARE_FP * - * Does the CPU have hardware floating point? + * Does the CPU have hardware floating point? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. * - * If there is a FP coprocessor such as the i387 or mc68881, then - * the answer is TRUE. + * If there is a FP coprocessor such as the i387 or mc68881, then + * the answer is TRUE. * - * The macro name "M32R_HAS_FPU" should be made CPU specific. - * It indicates whether or not this CPU model has FP support. For - * example, it would be possible to have an i386_nofp CPU model - * which set this to false to indicate that you have an i386 without - * an i387 and wish to leave floating point support out of RTEMS. + * The macro name "M32R_HAS_FPU" should be made CPU specific. + * It indicates whether or not this CPU model has FP support. For + * example, it would be possible to have an i386_nofp CPU model + * which set this to false to indicate that you have an i386 without + * an i387 and wish to leave floating point support out of RTEMS. */ /** - * @def CPU_SOFTWARE_FP + * @def CPU_SOFTWARE_FP * - * Does the CPU have no hardware floating point and GCC provides a - * software floating point implementation which must be context - * switched? + * Does the CPU have no hardware floating point and GCC provides a + * software floating point implementation which must be context + * switched? * - * This feature conditional is used to indicate whether or not there - * is software implemented floating point that must be context - * switched. The determination of whether or not this applies - * is very tool specific and the state saved/restored is also - * compiler specific. + * This feature conditional is used to indicate whether or not there + * is software implemented floating point that must be context + * switched. The determination of whether or not this applies + * is very tool specific and the state saved/restored is also + * compiler specific. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if ( M32R_HAS_FPU == 1 ) #define CPU_HARDWARE_FP TRUE @@ -216,201 +216,203 @@ extern "C" { #define CPU_SOFTWARE_FP FALSE /** - * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? + * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. * - * So far, the only CPUs in which this option has been used are the - * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and - * gcc both implicitly used the floating point registers to perform - * integer multiplies. Similarly, the PowerPC port of gcc has been - * seen to allocate floating point local variables and touch the FPU - * even when the flow through a subroutine (like vfprintf()) might - * not use floating point formats. + * So far, the only CPUs in which this option has been used are the + * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and + * gcc both implicitly used the floating point registers to perform + * integer multiplies. Similarly, the PowerPC port of gcc has been + * seen to allocate floating point local variables and touch the FPU + * even when the flow through a subroutine (like vfprintf()) might + * not use floating point formats. * - * If a function which you would not think utilize the FP unit DOES, - * then one can not easily predict which tasks will use the FP hardware. - * In this case, this option should be TRUE. + * If a function which you would not think utilize the FP unit DOES, + * then one can not easily predict which tasks will use the FP hardware. + * In this case, this option should be TRUE. * - * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. + * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALL_TASKS_ARE_FP TRUE /** - * Should the IDLE task have a floating point context? + * Should the IDLE task have a floating point context? * - * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task - * and it has a floating point context which is switched in and out. - * If FALSE, then the IDLE task does not have a floating point context. + * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task + * and it has a floating point context which is switched in and out. + * If FALSE, then the IDLE task does not have a floating point context. * - * Setting this to TRUE negatively impacts the time required to preempt - * the IDLE task from an interrupt because the floating point context - * must be saved as part of the preemption. + * Setting this to TRUE negatively impacts the time required to preempt + * the IDLE task from an interrupt because the floating point context + * must be saved as part of the preemption. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_IDLE_TASK_IS_FP FALSE /** - * Should the saving of the floating point registers be deferred - * until a context switch is made to another different floating point - * task? + * Should the saving of the floating point registers be deferred + * until a context switch is made to another different floating point + * task? * - * If TRUE, then the floating point context will not be stored until - * necessary. It will remain in the floating point registers and not - * disturned until another floating point task is switched to. + * If TRUE, then the floating point context will not be stored until + * necessary. It will remain in the floating point registers and not + * disturned until another floating point task is switched to. * - * If FALSE, then the floating point context is saved when a floating - * point task is switched out and restored when the next floating point - * task is restored. The state of the floating point registers between - * those two operations is not specified. + * If FALSE, then the floating point context is saved when a floating + * point task is switched out and restored when the next floating point + * task is restored. The state of the floating point registers between + * those two operations is not specified. * - * If the floating point context does NOT have to be saved as part of - * interrupt dispatching, then it should be safe to set this to TRUE. + * If the floating point context does NOT have to be saved as part of + * interrupt dispatching, then it should be safe to set this to TRUE. * - * Setting this flag to TRUE results in using a different algorithm - * for deciding when to save and restore the floating point context. - * The deferred FP switch algorithm minimizes the number of times - * the FP context is saved and restored. The FP context is not saved - * until a context switch is made to another, different FP task. - * Thus in a system with only one FP task, the FP context will never - * be saved or restored. + * Setting this flag to TRUE results in using a different algorithm + * for deciding when to save and restore the floating point context. + * The deferred FP switch algorithm minimizes the number of times + * the FP context is saved and restored. The FP context is not saved + * until a context switch is made to another, different FP task. + * Thus in a system with only one FP task, the FP context will never + * be saved or restored. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_USE_DEFERRED_FP_SWITCH TRUE /** - * Does this port provide a CPU dependent IDLE task implementation? + * Does this port provide a CPU dependent IDLE task implementation? * - * If TRUE, then the routine @ref _CPU_Thread_Idle_body - * must be provided and is the default IDLE thread body instead of - * @ref _CPU_Thread_Idle_body. + * If TRUE, then the routine @ref _CPU_Thread_Idle_body + * must be provided and is the default IDLE thread body instead of + * @ref _CPU_Thread_Idle_body. * - * If FALSE, then use the generic IDLE thread body if the BSP does - * not provide one. + * If FALSE, then use the generic IDLE thread body if the BSP does + * not provide one. * - * This is intended to allow for supporting processors which have - * a low power or idle mode. When the IDLE thread is executed, then - * the CPU can be powered down. + * This is intended to allow for supporting processors which have + * a low power or idle mode. When the IDLE thread is executed, then + * the CPU can be powered down. * - * The order of precedence for selecting the IDLE thread body is: + * The order of precedence for selecting the IDLE thread body is: * - * -# BSP provided - * -# CPU dependent (if provided) - * -# generic (if no BSP and no CPU dependent) + * -# BSP provided + * -# CPU dependent (if provided) + * -# generic (if no BSP and no CPU dependent) * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PROVIDES_IDLE_THREAD_BODY FALSE /** - * Does the stack grow up (toward higher addresses) or down - * (toward lower addresses)? + * Does the stack grow up (toward higher addresses) or down + * (toward lower addresses)? * - * If TRUE, then the grows upward. - * If FALSE, then the grows toward smaller addresses. + * If TRUE, then the grows upward. + * If FALSE, then the grows toward smaller addresses. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_GROWS_UP TRUE /** - * The following is the variable attribute used to force alignment - * of critical RTEMS structures. On some processors it may make - * sense to have these aligned on tighter boundaries than - * the minimum requirements of the compiler in order to have as - * much of the critical data area as possible in a cache line. + * The following is the variable attribute used to force alignment + * of critical RTEMS structures. On some processors it may make + * sense to have these aligned on tighter boundaries than + * the minimum requirements of the compiler in order to have as + * much of the critical data area as possible in a cache line. * - * The placement of this macro in the declaration of the variables - * is based on the syntactically requirements of the GNU C - * "__attribute__" extension. For example with GNU C, use - * the following to force a structures to a 32 byte boundary. + * The placement of this macro in the declaration of the variables + * is based on the syntactically requirements of the GNU C + * "__attribute__" extension. For example with GNU C, use + * the following to force a structures to a 32 byte boundary. * - * __attribute__ ((aligned (32))) + * __attribute__ ((aligned (32))) * - * @note Currently only the Priority Bit Map table uses this feature. - * To benefit from using this, the data must be heavily - * used so it will stay in the cache and used frequently enough - * in the executive to justify turning this on. + * NOTE: Currently only the Priority Bit Map table uses this feature. + * To benefit from using this, the data must be heavily + * used so it will stay in the cache and used frequently enough + * in the executive to justify turning this on. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STRUCTURE_ALIGNMENT #define CPU_TIMESTAMP_USE_STRUCT_TIMESPEC TRUE /** - * @defgroup CPUEndian Processor Dependent Endianness Support + * @defgroup CPUEndian Processor Dependent Endianness Support + * + * This group assists in issues related to processor endianness. * - * This group assists in issues related to processor endianness. */ +/**@{**/ /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the - * same values. + * NOTE: @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_LITTLE_ENDIAN + * @see CPU_LITTLE_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_BIG_ENDIAN TRUE /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the - * same values. + * NOTE: @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_BIG_ENDIAN + * @see CPU_BIG_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_LITTLE_ENDIAN FALSE +/** @} */ + /** - * @ingroup CPUInterrupt - * The following defines the number of bits actually used in the - * interrupt field of the task mode. How those bits map to the - * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. + * @ingroup CPUInterrupt + * The following defines the number of bits actually used in the + * interrupt field of the task mode. How those bits map to the + * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MODES_INTERRUPT_MASK 0x00000001 /* - * Processor defined structures required for cpukit/score. + * Processor defined structures required for cpukit/score. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ /* may need to put some structures here. */ @@ -418,50 +420,50 @@ extern "C" { /** * @defgroup CPUContext Processor Dependent Context Management * - * From the highest level viewpoint, there are 2 types of context to save. + * From the highest level viewpoint, there are 2 types of context to save. * - * -# Interrupt registers to save - * -# Task level registers to save + * -# Interrupt registers to save + * -# Task level registers to save * - * Since RTEMS handles integer and floating point contexts separately, this - * means we have the following 3 context items: + * Since RTEMS handles integer and floating point contexts separately, this + * means we have the following 3 context items: * - * -# task level context stuff:: Context_Control - * -# floating point task stuff:: Context_Control_fp - * -# special interrupt level context :: CPU_Interrupt_frame + * -# task level context stuff:: Context_Control + * -# floating point task stuff:: Context_Control_fp + * -# special interrupt level context :: CPU_Interrupt_frame * - * On some processors, it is cost-effective to save only the callee - * preserved registers during a task context switch. This means - * that the ISR code needs to save those registers which do not - * persist across function calls. It is not mandatory to make this - * distinctions between the caller/callee saves registers for the - * purpose of minimizing context saved during task switch and on interrupts. - * If the cost of saving extra registers is minimal, simplicity is the - * choice. Save the same context on interrupt entry as for tasks in - * this case. + * On some processors, it is cost-effective to save only the callee + * preserved registers during a task context switch. This means + * that the ISR code needs to save those registers which do not + * persist across function calls. It is not mandatory to make this + * distinctions between the caller/callee saves registers for the + * purpose of minimizing context saved during task switch and on interrupts. + * If the cost of saving extra registers is minimal, simplicity is the + * choice. Save the same context on interrupt entry as for tasks in + * this case. * - * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then - * care should be used in designing the context area. + * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then + * care should be used in designing the context area. * - * On some CPUs with hardware floating point support, the Context_Control_fp - * structure will not be used or it simply consist of an array of a - * fixed number of bytes. This is done when the floating point context - * is dumped by a "FP save context" type instruction and the format - * is not really defined by the CPU. In this case, there is no need - * to figure out the exact format -- only the size. Of course, although - * this is enough information for RTEMS, it is probably not enough for - * a debugger such as gdb. But that is another problem. + * On some CPUs with hardware floating point support, the Context_Control_fp + * structure will not be used or it simply consist of an array of a + * fixed number of bytes. This is done when the floating point context + * is dumped by a "FP save context" type instruction and the format + * is not really defined by the CPU. In this case, there is no need + * to figure out the exact format -- only the size. Of course, although + * this is enough information for RTEMS, it is probably not enough for + * a debugger such as gdb. But that is another problem. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ +/**@{**/ /** - * @ingroup CPUContext Management - * This defines the minimal set of integer and processor state registers - * that must be saved during a voluntary context switch from one thread - * to another. + * This defines the minimal set of integer and processor state registers + * that must be saved during a voluntary context switch from one thread + * to another. */ typedef struct { /** r8 -- temporary register */ @@ -487,21 +489,18 @@ typedef struct { } Context_Control; /** - * @ingroup CPUContext Management + * This macro returns the stack pointer associated with @a _context. * - * This macro returns the stack pointer associated with @a _context. + * @param[in] _context is the thread context area to access * - * @param[in] _context is the thread context area to access - * - * @return This method returns the stack pointer. + * @return This method returns the stack pointer. */ #define _CPU_Context_Get_SP( _context ) \ (_context)->r15_sp /** - * @ingroup CPUContext Management - * This defines the complete set of floating point registers that must - * be saved during any context switch from one thread to another. + * This defines the complete set of floating point registers that must + * be saved during any context switch from one thread to another. */ typedef struct { /** FPU registers are listed here */ @@ -509,49 +508,51 @@ typedef struct { } Context_Control_fp; /** - * @ingroup CPUContext Management - * This defines the set of integer and processor state registers that must - * be saved during an interrupt. This set does not include any which are - * in @ref Context_Control. + * This defines the set of integer and processor state registers that must + * be saved during an interrupt. This set does not include any which are + * in @ref Context_Control. */ typedef struct { /** This field is a hint that a port will have a number of integer - * registers that need to be saved when an interrupt occurs or - * when a context switch occurs at the end of an ISR. + * registers that need to be saved when an interrupt occurs or + * when a context switch occurs at the end of an ISR. */ uint32_t special_interrupt_register; } CPU_Interrupt_frame; /** - * This variable is optional. It is used on CPUs on which it is difficult - * to generate an "uninitialized" FP context. It is filled in by - * @ref _CPU_Initialize and copied into the task's FP context area during - * @ref _CPU_Context_Initialize. + * This variable is optional. It is used on CPUs on which it is difficult + * to generate an "uninitialized" FP context. It is filled in by + * @ref _CPU_Initialize and copied into the task's FP context area during + * @ref _CPU_Context_Initialize. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; +/** @} */ + /** - * @defgroup CPUInterrupt Processor Dependent Interrupt Management + * @defgroup CPUInterrupt Processor Dependent Interrupt Management * - * On some CPUs, RTEMS supports a software managed interrupt stack. - * This stack is allocated by the Interrupt Manager and the switch - * is performed in @ref _ISR_Handler. These variables contain pointers - * to the lowest and highest addresses in the chunk of memory allocated - * for the interrupt stack. Since it is unknown whether the stack - * grows up or down (in general), this give the CPU dependent - * code the option of picking the version it wants to use. + * On some CPUs, RTEMS supports a software managed interrupt stack. + * This stack is allocated by the Interrupt Manager and the switch + * is performed in @ref _ISR_Handler. These variables contain pointers + * to the lowest and highest addresses in the chunk of memory allocated + * for the interrupt stack. Since it is unknown whether the stack + * grows up or down (in general), this give the CPU dependent + * code the option of picking the version it wants to use. * - * @note These two variables are required if the macro - * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. + * NOTE: These two variables are required if the macro + * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ +/**@{**/ /* * Nothing prevents the porter from declaring more CPU specific variables. @@ -564,131 +565,130 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; /* XXX: if needed, put more variables here */ /** - * @ingroup CPUContext - * The size of the floating point context area. On some CPUs this - * will not be a "sizeof" because the format of the floating point - * area is not defined -- only the size is. This is usually on - * CPUs with a "floating point save context" instruction. + * @ingroup CPUContext + * The size of the floating point context area. On some CPUs this + * will not be a "sizeof" because the format of the floating point + * area is not defined -- only the size is. This is usually on + * CPUs with a "floating point save context" instruction. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_CONTEXT_FP_SIZE sizeof( Context_Control_fp ) /** - * Amount of extra stack (above minimum stack size) required by - * MPCI receive server thread. Remember that in a multiprocessor - * system this thread must exist and be able to process all directives. + * Amount of extra stack (above minimum stack size) required by + * MPCI receive server thread. Remember that in a multiprocessor + * system this thread must exist and be able to process all directives. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0 /** - * @ingroup CPUInterrupt - * This defines the number of entries in the @ref _ISR_Vector_table managed - * by RTEMS. + * This defines the number of entries in the @ref _ISR_Vector_table managed + * by RTEMS. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INTERRUPT_NUMBER_OF_VECTORS 32 /** - * @ingroup CPUInterrupt - * This defines the highest interrupt vector number for this port. + * This defines the highest interrupt vector number for this port. */ #define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER (CPU_INTERRUPT_NUMBER_OF_VECTORS - 1) /** - * @ingroup CPUInterrupt - * This is defined if the port has a special way to report the ISR nesting - * level. Most ports maintain the variable @a _ISR_Nest_level. + * This is defined if the port has a special way to report the ISR nesting + * level. Most ports maintain the variable @a _ISR_Nest_level. */ #define CPU_PROVIDES_ISR_IS_IN_PROGRESS FALSE +/** @} */ + /** - * @ingroup CPUContext - * Should be large enough to run all RTEMS tests. This ensures - * that a "reasonable" small application should not have any problems. + * @ingroup CPUContext + * Should be large enough to run all RTEMS tests. This ensures + * that a "reasonable" small application should not have any problems. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_MINIMUM_SIZE (1024) #define CPU_SIZEOF_POINTER 4 /** - * CPU's worst alignment requirement for data types on a byte boundary. This - * alignment does not take into account the requirements for the stack. + * CPU's worst alignment requirement for data types on a byte boundary. This + * alignment does not take into account the requirements for the stack. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALIGNMENT 8 /** - * This number corresponds to the byte alignment requirement for the - * heap handler. This alignment requirement may be stricter than that - * for the data types alignment specified by @ref CPU_ALIGNMENT. It is - * common for the heap to follow the same alignment requirement as - * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for - * the heap, then this should be set to @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for the + * heap handler. This alignment requirement may be stricter than that + * for the data types alignment specified by @ref CPU_ALIGNMENT. It is + * common for the heap to follow the same alignment requirement as + * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for + * the heap, then this should be set to @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2 although it should be - * a multiple of 2 greater than or equal to 2. The requirement - * to be a multiple of 2 is because the heap uses the least - * significant field of the front and back flags to indicate - * that a block is in use or free. So you do not want any odd - * length blocks really putting length data in that bit. + * NOTE: This does not have to be a power of 2 although it should be + * a multiple of 2 greater than or equal to 2. The requirement + * to be a multiple of 2 is because the heap uses the least + * significant field of the front and back flags to indicate + * that a block is in use or free. So you do not want any odd + * length blocks really putting length data in that bit. * - * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will - * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that - * elements allocated from the heap meet all restrictions. + * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will + * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that + * elements allocated from the heap meet all restrictions. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for memory - * buffers allocated by the partition manager. This alignment requirement - * may be stricter than that for the data types alignment specified by - * @ref CPU_ALIGNMENT. It is common for the partition to follow the same - * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is - * strict enough for the partition, then this should be set to - * @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for memory + * buffers allocated by the partition manager. This alignment requirement + * may be stricter than that for the data types alignment specified by + * @ref CPU_ALIGNMENT. It is common for the partition to follow the same + * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is + * strict enough for the partition, then this should be set to + * @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2. It does have to - * be greater or equal to than @ref CPU_ALIGNMENT. + * NOTE: This does not have to be a power of 2. It does have to + * be greater or equal to than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PARTITION_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. If the - * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be - * set to 0. + * This number corresponds to the byte alignment requirement for the + * stack. This alignment requirement may be stricter than that for the + * data types alignment specified by @ref CPU_ALIGNMENT. If the + * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be + * set to 0. * - * @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. + * NOTE: This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_ALIGNMENT 0 @@ -697,25 +697,28 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; */ /** - * @ingroup CPUInterrupt - * Support routine to initialize the RTEMS vector table after it is allocated. + * @addtogroup CPUInterrupt + */ +/**@{**/ + +/** + * Support routine to initialize the RTEMS vector table after it is allocated. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Initialize_vectors() /** - * @ingroup CPUInterrupt - * Disable all interrupts for an RTEMS critical section. The previous - * level is returned in @a _isr_cookie. + * Disable all interrupts for an RTEMS critical section. The previous + * level is returned in @a _isr_cookie. * - * @param[out] _isr_cookie will contain the previous level cookie + * @param[out] _isr_cookie will contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Disable( _isr_cookie ) \ { \ @@ -723,16 +726,15 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; } /** - * @ingroup CPUInterrupt - * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). - * This indicates the end of an RTEMS critical section. The parameter - * @a _isr_cookie is not modified. + * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). + * This indicates the end of an RTEMS critical section. The parameter + * @a _isr_cookie is not modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Enable( _isr_cookie ) \ { \ @@ -740,91 +742,90 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; } /** - * @ingroup CPUInterrupt - * This temporarily restores the interrupt to @a _isr_cookie before immediately - * disabling them again. This is used to divide long RTEMS critical - * sections into two or more parts. The parameter @a _isr_cookie is not - * modified. + * This temporarily restores the interrupt to @a _isr_cookie before immediately + * disabling them again. This is used to divide long RTEMS critical + * sections into two or more parts. The parameter @a _isr_cookie is not + * modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Flash( _isr_cookie ) \ { \ } /** - * @ingroup CPUInterrupt + * This routine and @ref _CPU_ISR_Get_level + * Map the interrupt level in task mode onto the hardware that the CPU + * actually provides. Currently, interrupt levels which do not + * map onto the CPU in a generic fashion are undefined. Someday, + * it would be nice if these were "mapped" by the application + * via a callout. For example, m68k has 8 levels 0 - 7, levels + * 8 - 255 would be available for bsp/application specific meaning. + * This could be used to manage a programmable interrupt controller + * via the rtems_task_mode directive. * - * This routine and @ref _CPU_ISR_Get_level - * Map the interrupt level in task mode onto the hardware that the CPU - * actually provides. Currently, interrupt levels which do not - * map onto the CPU in a generic fashion are undefined. Someday, - * it would be nice if these were "mapped" by the application - * via a callout. For example, m68k has 8 levels 0 - 7, levels - * 8 - 255 would be available for bsp/application specific meaning. - * This could be used to manage a programmable interrupt controller - * via the rtems_task_mode directive. - * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Set_level( new_level ) \ { \ } /** - * @ingroup CPUInterrupt - * Return the current interrupt disable level for this task in - * the format used by the interrupt level portion of the task mode. + * Return the current interrupt disable level for this task in + * the format used by the interrupt level portion of the task mode. * - * @note This routine usually must be implemented as a subroutine. + * NOTE: This routine usually must be implemented as a subroutine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ uint32_t _CPU_ISR_Get_level( void ); /* end of ISR handler macros */ +/** @} */ + /* Context handler macros */ /** - * @brief CPU Context Initialize - * @ingroup CPUContext - * Initialize the context to a state suitable for starting a - * task after a context restore operation. Generally, this - * involves: - * - * - setting a starting address - * - preparing the stack - * - preparing the stack and frame pointers - * - setting the proper interrupt level in the context - * - initializing the floating point context - * - * This routine generally does not set any unnecessary register - * in the context. The state of the "general data" registers is - * undefined at task start time. - * - * @param[in] _the_context is the context structure to be initialized - * @param[in] _stack_base is the lowest physical address of this task's stack - * @param[in] _size is the size of this task's stack - * @param[in] _isr is the interrupt disable level - * @param[in] _entry_point is the thread's entry point. This is - * always @a _Thread_Handler - * @param[in] _is_fp is TRUE if the thread is to be a floating - * point thread. This is typically only used on CPUs where the - * FPU may be easily disabled by software such as on the SPARC - * where the PSR contains an enable FPU bit. + * @brief Initialize CPU context. * - * Port Specific Information: + * @ingroup CPUContext + * Initialize the context to a state suitable for starting a + * task after a context restore operation. Generally, this + * involves: * - * XXX document implementation including references if appropriate + * - setting a starting address + * - preparing the stack + * - preparing the stack and frame pointers + * - setting the proper interrupt level in the context + * - initializing the floating point context + * + * This routine generally does not set any unnecessary register + * in the context. The state of the "general data" registers is + * undefined at task start time. + * + * @param[in] _the_context is the context structure to be initialized + * @param[in] _stack_base is the lowest physical address of this task's stack + * @param[in] _size is the size of this task's stack + * @param[in] _isr is the interrupt disable level + * @param[in] _entry_point is the thread's entry point. This is + * always @a _Thread_Handler + * @param[in] _is_fp is TRUE if the thread is to be a floating + * point thread. This is typically only used on CPUs where the + * FPU may be easily disabled by software such as on the SPARC + * where the PSR contains an enable FPU bit. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ void _CPU_Context_Initialize( Context_Control *the_context, @@ -836,66 +837,66 @@ void _CPU_Context_Initialize( ); /** - * This routine is responsible for somehow restarting the currently - * executing task. If you are lucky, then all that is necessary - * is restoring the context. Otherwise, there will need to be - * a special assembly routine which does something special in this - * case. For many ports, simply adding a label to the restore path - * of @ref _CPU_Context_switch will work. On other ports, it may be - * possibly to load a few arguments and jump to the restore path. It will - * not work if restarting self conflicts with the stack frame - * assumptions of restoring a context. + * This routine is responsible for somehow restarting the currently + * executing task. If you are lucky, then all that is necessary + * is restoring the context. Otherwise, there will need to be + * a special assembly routine which does something special in this + * case. For many ports, simply adding a label to the restore path + * of @ref _CPU_Context_switch will work. On other ports, it may be + * possibly to load a few arguments and jump to the restore path. It will + * not work if restarting self conflicts with the stack frame + * assumptions of restoring a context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_Restart_self( Context_Control *the_context ); /** - * @ingroup CPUContext - * The purpose of this macro is to allow the initial pointer into - * a floating point context area (used to save the floating point - * context) to be at an arbitrary place in the floating point - * context area. + * @ingroup CPUContext + * The purpose of this macro is to allow the initial pointer into + * a floating point context area (used to save the floating point + * context) to be at an arbitrary place in the floating point + * context area. * - * This is necessary because some FP units are designed to have - * their context saved as a stack which grows into lower addresses. - * Other FP units can be saved by simply moving registers into offsets - * from the base of the context area. Finally some FP units provide - * a "dump context" instruction which could fill in from high to low - * or low to high based on the whim of the CPU designers. + * This is necessary because some FP units are designed to have + * their context saved as a stack which grows into lower addresses. + * Other FP units can be saved by simply moving registers into offsets + * from the base of the context area. Finally some FP units provide + * a "dump context" instruction which could fill in from high to low + * or low to high based on the whim of the CPU designers. * - * @param[in] _base is the lowest physical address of the floating point - * context area - * @param[in] _offset is the offset into the floating point area + * @param[in] _base is the lowest physical address of the floating point + * context area + * @param[in] _offset is the offset into the floating point area * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Fp_start( _base, _offset ) \ ( (void *) _Addresses_Add_offset( (_base), (_offset) ) ) /** - * This routine initializes the FP context area passed to it to. - * There are a few standard ways in which to initialize the - * floating point context. The code included for this macro assumes - * that this is a CPU in which a "initial" FP context was saved into - * @a _CPU_Null_fp_context and it simply copies it to the destination - * context passed to it. + * This routine initializes the FP context area passed to it to. + * There are a few standard ways in which to initialize the + * floating point context. The code included for this macro assumes + * that this is a CPU in which a "initial" FP context was saved into + * @a _CPU_Null_fp_context and it simply copies it to the destination + * context passed to it. * - * Other floating point context save/restore models include: - * -# not doing anything, and - * -# putting a "null FP status word" in the correct place in the FP context. + * Other floating point context save/restore models include: + * -# not doing anything, and + * -# putting a "null FP status word" in the correct place in the FP context. * - * @param[in] _destination is the floating point context area + * @param[in] _destination is the floating point context area * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Initialize_fp( _destination ) \ { \ @@ -907,13 +908,13 @@ void _CPU_Context_Restart_self( /* Fatal Error manager macros */ /** - * This routine copies _error into a known place -- typically a stack - * location or a register, optionally disables interrupts, and - * halts/stops the CPU. + * This routine copies _error into a known place -- typically a stack + * location or a register, optionally disables interrupts, and + * halts/stops the CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Fatal_halt( _error ) \ { \ @@ -924,68 +925,66 @@ void _CPU_Context_Restart_self( /* Bitfield handler macros */ /** - * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation + * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation * - * This set of routines are used to implement fast searches for - * the most important ready task. + * This set of routines are used to implement fast searches for + * the most important ready task. */ +/**@{**/ /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the generic bitfield - * manipulation implementation. + * This definition is set to TRUE if the port uses the generic bitfield + * manipulation implementation. */ #define CPU_USE_GENERIC_BITFIELD_CODE TRUE /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the data tables provided - * by the generic bitfield manipulation implementation. - * This can occur when actually using the generic bitfield manipulation - * implementation or when implementing the same algorithm in assembly - * language for improved performance. It is unlikely that a port will use - * the data if it has a bitfield scan instruction. + * This definition is set to TRUE if the port uses the data tables provided + * by the generic bitfield manipulation implementation. + * This can occur when actually using the generic bitfield manipulation + * implementation or when implementing the same algorithm in assembly + * language for improved performance. It is unlikely that a port will use + * the data if it has a bitfield scan instruction. */ #define CPU_USE_GENERIC_BITFIELD_DATA TRUE /** - * @ingroup CPUBitfield - * This routine sets @a _output to the bit number of the first bit - * set in @a _value. @a _value is of CPU dependent type - * @a Priority_bit_map_Control. This type may be either 16 or 32 bits - * wide although only the 16 least significant bits will be used. - * - * There are a number of variables in using a "find first bit" type - * instruction. - * - * -# What happens when run on a value of zero? - * -# Bits may be numbered from MSB to LSB or vice-versa. - * -# The numbering may be zero or one based. - * -# The "find first bit" instruction may search from MSB or LSB. - * - * RTEMS guarantees that (1) will never happen so it is not a concern. - * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and - * @ref _CPU_Priority_bits_index. These three form a set of routines - * which must logically operate together. Bits in the _value are - * set and cleared based on masks built by @ref _CPU_Priority_Mask. - * The basic major and minor values calculated by @ref _Priority_Major - * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index - * to properly range between the values returned by the "find first bit" - * instruction. This makes it possible for @ref _Priority_Get_highest to - * calculate the major and directly index into the minor table. - * This mapping is necessary to ensure that 0 (a high priority major/minor) - * is the first bit found. - * - * This entire "find first bit" and mapping process depends heavily - * on the manner in which a priority is broken into a major and minor - * components with the major being the 4 MSB of a priority and minor - * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest - * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next - * to the lowest priority. - * - * If your CPU does not have a "find first bit" instruction, then - * there are ways to make do without it. Here are a handful of ways - * to implement this in software: + * This routine sets @a _output to the bit number of the first bit + * set in @a _value. @a _value is of CPU dependent type + * @a Priority_bit_map_Control. This type may be either 16 or 32 bits + * wide although only the 16 least significant bits will be used. + * + * There are a number of variables in using a "find first bit" type + * instruction. + * + * -# What happens when run on a value of zero? + * -# Bits may be numbered from MSB to LSB or vice-versa. + * -# The numbering may be zero or one based. + * -# The "find first bit" instruction may search from MSB or LSB. + * + * RTEMS guarantees that (1) will never happen so it is not a concern. + * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and + * @ref _CPU_Priority_bits_index. These three form a set of routines + * which must logically operate together. Bits in the _value are + * set and cleared based on masks built by @ref _CPU_Priority_Mask. + * The basic major and minor values calculated by @ref _Priority_Major + * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index + * to properly range between the values returned by the "find first bit" + * instruction. This makes it possible for @ref _Priority_Get_highest to + * calculate the major and directly index into the minor table. + * This mapping is necessary to ensure that 0 (a high priority major/minor) + * is the first bit found. + * + * This entire "find first bit" and mapping process depends heavily + * on the manner in which a priority is broken into a major and minor + * components with the major being the 4 MSB of a priority and minor + * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest + * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next + * to the lowest priority. + * + * If your CPU does not have a "find first bit" instruction, then + * there are ways to make do without it. Here are a handful of ways + * to implement this in software: * @verbatim - a series of 16 bit test instructions @@ -1002,15 +1001,15 @@ void _CPU_Context_Restart_self( _number += bit_set_table[ _value ] @endverbatim - * where bit_set_table[ 16 ] has values which indicate the first - * bit set + * where bit_set_table[ 16 ] has values which indicate the first + * bit set * - * @param[in] _value is the value to be scanned - * @param[in] _output is the first bit set + * @param[in] _value is the value to be scanned + * @param[in] _output is the first bit set * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1023,13 +1022,13 @@ void _CPU_Context_Restart_self( /* end of Bitfield handler macros */ /** - * This routine builds the mask which corresponds to the bit fields - * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion - * for that routine. + * This routine builds the mask which corresponds to the bit fields + * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion + * for that routine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1039,17 +1038,16 @@ void _CPU_Context_Restart_self( #endif /** - * @ingroup CPUBitfield - * This routine translates the bit numbers returned by - * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as - * a major or minor component of a priority. See the discussion - * for that routine. + * This routine translates the bit numbers returned by + * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as + * a major or minor component of a priority. See the discussion + * for that routine. * - * @param[in] _priority is the major or minor number to translate + * @param[in] _priority is the major or minor number to translate * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1060,30 +1058,33 @@ void _CPU_Context_Restart_self( /* end of Priority handler macros */ +/** @} */ + /* functions */ /** - * @brief CPU Initialize - * This routine performs CPU dependent initialization. + * @brief CPU initialization. * - * Port Specific Information: + * This routine performs CPU dependent initialization. * - * XXX document implementation including references if appropriate + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ void _CPU_Initialize(void); /** - * @ingroup CPUInterrupt - * This routine installs a "raw" interrupt handler directly into the - * processor's vector table. + * @ingroup CPUInterrupt + * This routine installs a "raw" interrupt handler directly into the + * processor's vector table. * - * @param[in] vector is the vector number - * @param[in] new_handler is the raw ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * @param[in] vector is the vector number + * @param[in] new_handler is the raw ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_raw_handler( uint32_t vector, @@ -1092,16 +1093,16 @@ void _CPU_ISR_install_raw_handler( ); /** - * @ingroup CPUInterrupt - * This routine installs an interrupt vector. + * @ingroup CPUInterrupt + * This routine installs an interrupt vector. * - * @param[in] vector is the vector number - * @param[in] new_handler is the RTEMS ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * @param[in] vector is the vector number + * @param[in] new_handler is the RTEMS ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_vector( uint32_t vector, @@ -1110,28 +1111,28 @@ void _CPU_ISR_install_vector( ); /** - * @ingroup CPUInterrupt - * This routine installs the hardware interrupt stack pointer. + * @ingroup CPUInterrupt + * This routine installs the hardware interrupt stack pointer. * - * @note It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK - * is TRUE. + * NOTE: It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK + * is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Install_interrupt_stack( void ); /** - * @ingroup CPUContext - * This routine switches from the run context to the heir context. + * @ingroup CPUContext + * This routine switches from the run context to the heir context. * - * @param[in] run points to the context of the currently executing task - * @param[in] heir points to the context of the heir task + * @param[in] run points to the context of the currently executing task + * @param[in] heir points to the context of the heir task * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_switch( Context_Control *run, @@ -1139,90 +1140,94 @@ void _CPU_Context_switch( ); /** - * @ingroup CPUContext - * This routine is generally used only to restart self in an - * efficient manner. It may simply be a label in @ref _CPU_Context_switch. + * @addtogroup CPUContext + */ +/**@{**/ + +/** + * This routine is generally used only to restart self in an + * efficient manner. It may simply be a label in @ref _CPU_Context_switch. * - * @param[in] new_context points to the context to be restored. + * @param[in] new_context points to the context to be restored. * - * @note May be unnecessary to reload some registers. + * NOTE: May be unnecessary to reload some registers. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore( Context_Control *new_context ) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; /** - * @ingroup CPUContext - * This routine saves the floating point context passed to it. + * This routine saves the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_restore_fp to restore this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_restore_fp to restore this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_save_fp( Context_Control_fp **fp_context_ptr ); /** - * @ingroup CPUContext - * This routine restores the floating point context passed to it. + * This routine restores the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area to restore + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area to restore * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_save_fp to save this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_save_fp to save this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore_fp( Context_Control_fp **fp_context_ptr ); +/** @} */ + /* FIXME */ typedef CPU_Interrupt_frame CPU_Exception_frame; void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); /** - * @ingroup CPUEndian - * The following routine swaps the endian format of an unsigned int. - * It must be static because it is referenced indirectly. + * @ingroup CPUEndian + * The following routine swaps the endian format of an unsigned int. + * It must be static because it is referenced indirectly. * - * This version will work on any processor, but if there is a better - * way for your CPU PLEASE use it. The most common way to do this is to: + * This version will work on any processor, but if there is a better + * way for your CPU PLEASE use it. The most common way to do this is to: * - * swap least significant two bytes with 16-bit rotate - * swap upper and lower 16-bits - * swap most significant two bytes with 16-bit rotate + * swap least significant two bytes with 16-bit rotate + * swap upper and lower 16-bits + * swap most significant two bytes with 16-bit rotate * - * Some CPUs have special instructions which swap a 32-bit quantity in - * a single instruction (e.g. i486). It is probably best to avoid - * an "endian swapping control bit" in the CPU. One good reason is - * that interrupts would probably have to be disabled to ensure that - * an interrupt does not try to access the same "chunk" with the wrong - * endian. Another good reason is that on some CPUs, the endian bit - * endianness for ALL fetches -- both code and data -- so the code - * will be fetched incorrectly. + * Some CPUs have special instructions which swap a 32-bit quantity in + * a single instruction (e.g. i486). It is probably best to avoid + * an "endian swapping control bit" in the CPU. One good reason is + * that interrupts would probably have to be disabled to ensure that + * an interrupt does not try to access the same "chunk" with the wrong + * endian. Another good reason is that on some CPUs, the endian bit + * endianness for ALL fetches -- both code and data -- so the code + * will be fetched incorrectly. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ static inline uint32_t CPU_swap_u32( uint32_t value @@ -1240,11 +1245,11 @@ static inline uint32_t CPU_swap_u32( } /** - * @ingroup CPUEndian - * This routine swaps a 16 bir quantity. + * @ingroup CPUEndian + * This routine swaps a 16 bir quantity. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped */ #define CPU_swap_u16( value ) \ (((value&0xff) << 8) | ((value >> 8)&0xff)) diff --git a/cpukit/score/cpu/m32r/rtems/score/cpu_asm.h b/cpukit/score/cpu/m32r/rtems/score/cpu_asm.h index e3797a93f9..51648b1597 100644 --- a/cpukit/score/cpu/m32r/rtems/score/cpu_asm.h +++ b/cpukit/score/cpu/m32r/rtems/score/cpu_asm.h @@ -1,12 +1,14 @@ /** - * @file rtems/score/cpu_asm.h + * @file + * + * @brief Intel M32R Assembly File + * + * Very loose template for an include file for the cpu_asm.? file + * if it is implemented as a ".S" file (preprocessed by cpp) instead + * of a ".s" file (preprocessed by gm4 or gasp). */ /* - * Very loose template for an include file for the cpu_asm.? file - * if it is implemented as a ".S" file (preprocessed by cpp) instead - * of a ".s" file (preprocessed by gm4 or gasp). - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/m32r/rtems/score/m32r.h b/cpukit/score/cpu/m32r/rtems/score/m32r.h index d4dbe69744..98461dfa37 100644 --- a/cpukit/score/cpu/m32r/rtems/score/m32r.h +++ b/cpukit/score/cpu/m32r/rtems/score/m32r.h @@ -1,9 +1,15 @@ -/* - * This file sets up basic CPU dependency settings based on - * compiler settings. For example, it can determine if - * floating point is available. This particular implementation - * is specified to the NO CPU port. +/** + * @file + * + * @brief Set up Basic CPU Dependency Settings Based on Compiler Settings * + * This file sets up basic CPU dependency settings based on + * compiler settings. For example, it can determine if + * floating point is available. This particular implementation + * is specified to the NO CPU port. + */ + +/* * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/m32r/rtems/score/types.h b/cpukit/score/cpu/m32r/rtems/score/types.h index 839ac98cc6..829b668f69 100644 --- a/cpukit/score/cpu/m32r/rtems/score/types.h +++ b/cpukit/score/cpu/m32r/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief Intel M32R CPU Type Definitions + * + * This include file contains type definitions pertaining to the Intel + * m32r processor family. */ /* - * This include file contains type definitions pertaining to the Intel - * m32r processor family. - * * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/m68k/rtems/asm.h b/cpukit/score/cpu/m68k/rtems/asm.h index f6abbd6d32..cbd2a7f8b2 100644 --- a/cpukit/score/cpu/m68k/rtems/asm.h +++ b/cpukit/score/cpu/m68k/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file + * + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available diff --git a/cpukit/score/cpu/m68k/rtems/m68k/m68302.h b/cpukit/score/cpu/m68k/rtems/m68k/m68302.h index bcda554948..acf55f50c5 100644 --- a/cpukit/score/cpu/m68k/rtems/m68k/m68302.h +++ b/cpukit/score/cpu/m68k/rtems/m68k/m68302.h @@ -1,7 +1,7 @@ -/* - *------------------------------------------------------------------ +/** + * @file * - * m68302.h - Definitions for Motorola MC68302 processor. + * @brief Definitions for Motorola MC68302 Processor * * Section references in this file refer to revision 2 of Motorola's * "MC68302 Integrated Multiprotocol Processor User's Manual". @@ -9,7 +9,9 @@ * * Based on Don Meyer's cpu68302.h that was posted in comp.sys.m68k * on 17 February, 1993. - * + */ + +/* * COPYRIGHT 1995 David W. Glessner. * * Redistribution and use in source and binary forms are permitted diff --git a/cpukit/score/cpu/m68k/rtems/m68k/m68360.h b/cpukit/score/cpu/m68k/rtems/m68k/m68360.h index 5c7b90691f..dc181d0cdf 100644 --- a/cpukit/score/cpu/m68k/rtems/m68k/m68360.h +++ b/cpukit/score/cpu/m68k/rtems/m68k/m68360.h @@ -1,3 +1,8 @@ +/** + * @file + * + * @brief Definitions for Motorola MC68360 Processor + */ /* ************************************************************************** ************************************************************************** @@ -707,7 +712,7 @@ typedef struct m360_ { unsigned char _pad14[0xF0-0xD0]; unsigned char _pad15[0x100-0xF0]; unsigned char _pad16[0x500-0x100]; - + /* * IDMA1 Block */ @@ -725,7 +730,7 @@ typedef struct m360_ { unsigned char csr1; unsigned char _pad21; unsigned short _pad22; - + /* * SDMA Block */ @@ -733,7 +738,7 @@ typedef struct m360_ { unsigned char _pad23; unsigned short sdcr; unsigned long sdar; - + /* * IDMA2 Block */ @@ -750,7 +755,7 @@ typedef struct m360_ { unsigned char _pad28; unsigned short _pad29; unsigned long _pad30; - + /* * CPIC Block */ @@ -774,7 +779,7 @@ typedef struct m360_ { unsigned short pcint; unsigned short _pad32; unsigned long _pad33[5]; - + /* * TIMER Block */ @@ -802,7 +807,7 @@ typedef struct m360_ { unsigned short ter3; unsigned short ter4; unsigned long _pad36[2]; - + /* * CP Block */ diff --git a/cpukit/score/cpu/m68k/rtems/m68k/qsm.h b/cpukit/score/cpu/m68k/rtems/m68k/qsm.h index 312dfa8325..32dbc1d5f9 100644 --- a/cpukit/score/cpu/m68k/rtems/m68k/qsm.h +++ b/cpukit/score/cpu/m68k/rtems/m68k/qsm.h @@ -1,7 +1,7 @@ -/* - *------------------------------------------------------------------- +/** + * @file * - * QSM -- Queued Serial Module + * @brief Motorola M68K Queued Serial Module * * The QSM contains two serial interfaces: (a) the queued serial * peripheral interface (QSPI) and the serial communication interface @@ -15,7 +15,9 @@ * For more information, refer to Motorola's "Modular Microcontroller * Family Queued Serial Module Reference Manual" (Motorola document * QSMRM/AD). - * + */ + +/* * This file was created by John S. Gwynne to support Motorola's 68332 MCU. * * Redistribution and use in source and binary forms are permitted diff --git a/cpukit/score/cpu/m68k/rtems/m68k/sim.h b/cpukit/score/cpu/m68k/rtems/m68k/sim.h index 42eae109d9..cec6b84cc1 100644 --- a/cpukit/score/cpu/m68k/rtems/m68k/sim.h +++ b/cpukit/score/cpu/m68k/rtems/m68k/sim.h @@ -1,7 +1,7 @@ -/* - *------------------------------------------------------------------- +/** + * @file * - * SIM -- System Integration Module + * @brief Motorola M68K System Integration Module * * The system integration module (SIM) is used on many Motorola 16- * and 32-bit MCUs for the following functions: @@ -23,7 +23,9 @@ * For more information, refer to Motorola's "Modular Microcontroller * Family System Integration Module Reference Manual" (Motorola document * SIMRM/AD). - * + */ + +/* * This file was created by John S. Gwynne to support Motorola's 68332 MCU. * * Redistribution and use in source and binary forms are permitted diff --git a/cpukit/score/cpu/m68k/rtems/score/cpu.h b/cpukit/score/cpu/m68k/rtems/score/cpu.h index fb970eb108..8575f90e19 100644 --- a/cpukit/score/cpu/m68k/rtems/score/cpu.h +++ b/cpukit/score/cpu/m68k/rtems/score/cpu.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/cpu.h + * @file + * + * @brief Motorola M68K CPU Dependent Source + * + * This include file contains information pertaining to the Motorola + * m68xxx processor family. */ /* - * This include file contains information pertaining to the Motorola - * m68xxx processor family. - * * COPYRIGHT (c) 1989-2011. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/m68k/rtems/score/m68k.h b/cpukit/score/cpu/m68k/rtems/score/m68k.h index cc2f11dc40..2c646c5bcf 100644 --- a/cpukit/score/cpu/m68k/rtems/score/m68k.h +++ b/cpukit/score/cpu/m68k/rtems/score/m68k.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/m68k.h + * @file + * + * @brief Motorola M68K CPU Dependent Source + * + * This include file contains information pertaining to the Motorola + * m68xxx processor family. */ /* - * This include file contains information pertaining to the Motorola - * m68xxx processor family. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/m68k/rtems/score/types.h b/cpukit/score/cpu/m68k/rtems/score/types.h index 8591511075..a901c90542 100644 --- a/cpukit/score/cpu/m68k/rtems/score/types.h +++ b/cpukit/score/cpu/m68k/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief Motorola M68K CPU Type Definitions + * + * This include file contains type definitions pertaining to the Motorola + * m68xxx processor family. */ /* - * This include file contains type definitions pertaining to the Motorola - * m68xxx processor family. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/mips/rtems/asm.h b/cpukit/score/cpu/mips/rtems/asm.h index 73e4366b87..9c84f61990 100644 --- a/cpukit/score/cpu/mips/rtems/asm.h +++ b/cpukit/score/cpu/mips/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available diff --git a/cpukit/score/cpu/mips/rtems/mips/idtcpu.h b/cpukit/score/cpu/mips/rtems/mips/idtcpu.h index c1a934098f..927bbec133 100644 --- a/cpukit/score/cpu/mips/rtems/mips/idtcpu.h +++ b/cpukit/score/cpu/mips/rtems/mips/idtcpu.h @@ -1,33 +1,46 @@ -/* - -Based upon IDT provided code with the following release: - -This source code has been made available to you by IDT on an AS-IS -basis. Anyone receiving this source is licensed under IDT copyrights -to use it in any way he or she deems fit, including copying it, -modifying it, compiling it, and redistributing it either with or -without modifications. No license under IDT patents or patent -applications is to be implied by the copyright license. - -Any user of this software should understand that IDT cannot provide -technical support for this software and will not be responsible for -any consequences resulting from the use of this software. - -Any person who transfers this source code or any derivative work must -include the IDT copyright notice, this paragraph, and the preceeding -two paragraphs in the transferred software. - -COPYRIGHT IDT CORPORATION 1996 -LICENSED MATERIAL - PROGRAM PROPERTY OF IDT -*/ +/** + * @file idtcpu.h + * + * @brief CPU Related Definitions + * + * 950313: Ketan added sreg/lreg and R_SZ for 64-bit saves + * added Register definition for XContext reg. + * Look towards end of this file. + */ /* -** idtcpu.h -- cpu related defines -*/ + * Based upon IDT provided code with the following release: + * + * This source code has been made available to you by IDT on an AS-IS + * basis. Anyone receiving this source is licensed under IDT copyrights + * to use it in any way he or she deems fit, including copying it, + * modifying it, compiling it, and redistributing it either with or + * without modifications. No license under IDT patents or patent + * applications is to be implied by the copyright license. + * + * Any user of this software should understand that IDT cannot provide + * technical support for this software and will not be responsible for + * any consequences resulting from the use of this software. + * + * Any person who transfers this source code or any derivative work must + * include the IDT copyright notice, this paragraph, and the preceeding + * two paragraphs in the transferred software. + * + * COPYRIGHT IDT CORPORATION 1996 + * LICENSED MATERIAL - PROGRAM PROPERTY OF IDT + */ #ifndef _RTEMS_MIPS_IDTCPU_H #define _RTEMS_MIPS_IDTCPU_H +/** + * @defgroup MipsSet_idtcpu CPU Related Definitions + * + * @ingroup MIPS + * + */ +/**@{*/ + /* * 950313: Ketan added Register definition for XContext reg. * added define for WAIT instruction. @@ -92,7 +105,7 @@ LICENSED MATERIAL - PROGRAM PROPERTY OF IDT ** Cache size constants */ #define MINCACHE 0x200 /* 512 For 3041. */ -#define MAXCACHE 0x40000 /* 256*1024 256k */ +#define MAXCACHE 0x40000 /* 256*1024 256k */ #if __mips == 32 /* R4000 configuration register definitions */ @@ -691,5 +704,5 @@ LICENSED MATERIAL - PROGRAM PROPERTY OF IDT #define CALG $17 #endif +/**@}*/ #endif /* _RTEMS_MIPS_IDTCPU_H */ - diff --git a/cpukit/score/cpu/mips/rtems/mips/iregdef.h b/cpukit/score/cpu/mips/rtems/mips/iregdef.h index 631e5aa178..5d41074184 100644 --- a/cpukit/score/cpu/mips/rtems/mips/iregdef.h +++ b/cpukit/score/cpu/mips/rtems/mips/iregdef.h @@ -1,44 +1,51 @@ -/* - -Based upon IDT provided code with the following release: - -This source code has been made available to you by IDT on an AS-IS -basis. Anyone receiving this source is licensed under IDT copyrights -to use it in any way he or she deems fit, including copying it, -modifying it, compiling it, and redistributing it either with or -without modifications. No license under IDT patents or patent -applications is to be implied by the copyright license. - -Any user of this software should understand that IDT cannot provide -technical support for this software and will not be responsible for -any consequences resulting from the use of this software. - -Any person who transfers this source code or any derivative work must -include the IDT copyright notice, this paragraph, and the preceeding -two paragraphs in the transferred software. - -COPYRIGHT IDT CORPORATION 1996 -LICENSED MATERIAL - PROGRAM PROPERTY OF IDT - +/** + * @file iregdef.h + * + * @brief IDT R3000 Register Structure + * + * 950313: Ketan added sreg/lreg and R_SZ for 64-bit saves + * added Register definition for XContext reg. + * Look towards end of this file. + */ /* -** iregdef.h - IDT R3000 register structure header file -** -** Copyright 1989 Integrated Device Technology, Inc -** All Rights Reserved -** -*/ + * Copyright 1989 Integrated Device Technology, Inc + * All Rights Reserved + * + * Based upon IDT provided code with the following release: + * + * This source code has been made available to you by IDT on an AS-IS + * basis. Anyone receiving this source is licensed under IDT copyrights + * to use it in any way he or she deems fit, including copying it, + * modifying it, compiling it, and redistributing it either with or + * without modifications. No license under IDT patents or patent + * applications is to be implied by the copyright license. + * + * Any user of this software should understand that IDT cannot provide + * technical support for this software and will not be responsible for + * any consequences resulting from the use of this software. + * + * Any person who transfers this source code or any derivative work must + * include the IDT copyright notice, this paragraph, and the preceeding + * two paragraphs in the transferred software. + * + * COPYRIGHT IDT CORPORATION 1996 + * LICENSED MATERIAL - PROGRAM PROPERTY OF IDT + */ + #ifndef _RTEMS_MIPS_IREGDEF_H #define _RTEMS_MIPS_IREGDEF_H -/* - * 950313: Ketan added sreg/lreg and R_SZ for 64-bit saves - * added Register definition for XContext reg. - * Look towards end of this file. +/** + * @defgroup MipsSet_iregdef Register Structure + * + * @ingroup MIPS + * */ -/* -** register names -*/ +/**@{*/ + +/* register names */ + #define r0 $0 #define r1 $1 #define r2 $2 @@ -326,5 +333,5 @@ LICENSED MATERIAL - PROGRAM PROPERTY OF IDT /* Ketan till here */ #endif +/**@}*/ #endif /* _RTEMS_MIPS_IREGDEF_H */ - diff --git a/cpukit/score/cpu/mips/rtems/score/cpu.h b/cpukit/score/cpu/mips/rtems/score/cpu.h index 1da23db423..b4d040e72b 100644 --- a/cpukit/score/cpu/mips/rtems/score/cpu.h +++ b/cpukit/score/cpu/mips/rtems/score/cpu.h @@ -1,7 +1,7 @@ /** * @file - * - * Mips CPU Dependent Header File + * + * @brief Mips CPU Dependent Header File * * Conversion to MIPS port by Alan Cudmore <alanc@linuxstart.com> and * Joel Sherrill <joel@OARcorp.com>. @@ -42,6 +42,14 @@ #ifndef _RTEMS_SCORE_CPU_H #define _RTEMS_SCORE_CPU_H +/** + * @defgroup ScoreCPU CPU CPU + * + * @ingroup Score + * + */ +/**@{*/ + #ifdef __cplusplus extern "C" { #endif @@ -211,7 +219,7 @@ extern "C" { * all tasks floating point. */ -#define CPU_ALL_TASKS_ARE_FP CPU_HARDWARE_FP +#define CPU_ALL_TASKS_ARE_FP CPU_HARDWARE_FP /* * Should the IDLE task have a floating point context? @@ -1172,4 +1180,5 @@ static inline uint32_t CPU_swap_u32( } #endif +/**@}*/ #endif diff --git a/cpukit/score/cpu/mips/rtems/score/mips.h b/cpukit/score/cpu/mips/rtems/score/mips.h index f81fd32ec2..8348501e30 100644 --- a/cpukit/score/cpu/mips/rtems/score/mips.h +++ b/cpukit/score/cpu/mips/rtems/score/mips.h @@ -1,5 +1,14 @@ /** * @file rtems/score/mips.h + * + * @brief Information to build RTEMS for a "no cpu" while in protected mode. + * + * This file contains the information required to build + * RTEMS for a particular member of the "no cpu" + * family when executing in protected mode. It does + * this by setting variables to indicate which implementation + * dependent features are present in a particular member + * of the family. */ /* @@ -14,6 +23,14 @@ #ifndef _RTEMS_SCORE_MIPS_H #define _RTEMS_SCORE_MIPS_H +/** + * @defgroup ScoreMips RTEMS no cpu Build Information + * + * @ingroup Score + * + */ +/**@{*/ + #ifdef __cplusplus extern "C" { #endif @@ -277,5 +294,6 @@ extern "C" { } #endif +/**@}*/ #endif /* _RTEMS_SCORE_MIPS_H */ /* end of include file */ diff --git a/cpukit/score/cpu/mips/rtems/score/types.h b/cpukit/score/cpu/mips/rtems/score/types.h index f26819a739..f935389271 100644 --- a/cpukit/score/cpu/mips/rtems/score/types.h +++ b/cpukit/score/cpu/mips/rtems/score/types.h @@ -1,11 +1,13 @@ /** * @file rtems/score/types.h + * + * @brief Type Definitions Pertaining to the MIPS Processor Family + * + * This include file contains type definitions pertaining to the MIPS + * processor family. */ /* - * This include file contains type definitions pertaining to the MIPS - * processor family. - * * COPYRIGHT (c) 1989-2001. * On-Line Applications Research Corporation (OAR). * @@ -18,6 +20,14 @@ #ifndef _RTEMS_SCORE_TYPES_H #define _RTEMS_SCORE_TYPES_H +/** + * @defgroup ScoreTypes MIPS Processor Family Type Definitions + * + * @ingroup Score + * + */ +/**@{*/ + #include <rtems/score/basedefs.h> #ifndef ASM @@ -40,4 +50,5 @@ typedef void ( *mips_isr_entry )( void ); #endif /* !ASM */ +/**@}*/ #endif diff --git a/cpukit/score/cpu/nios2/nios2-eic-il-low-level.S b/cpukit/score/cpu/nios2/nios2-eic-il-low-level.S index 42da434da6..f214f4ddef 100644 --- a/cpukit/score/cpu/nios2/nios2-eic-il-low-level.S +++ b/cpukit/score/cpu/nios2/nios2-eic-il-low-level.S @@ -160,7 +160,6 @@ do_thread_dispatch: ldw r10, FRAME_OFFSET_R10(sp) ldw r11, FRAME_OFFSET_R11(sp) ldw r12, FRAME_OFFSET_R12(sp) - ldw r13, FRAME_OFFSET_R13(sp) /* * Disable interrupts. @@ -180,15 +179,16 @@ do_thread_dispatch: wrctl status, r15 /* Load thread dispatch necessary */ - ldb r12, %gprel(_Per_CPU_Information + PER_CPU_DISPATCH_NEEDED)(gp) + ldb r13, %gprel(_Per_CPU_Information + PER_CPU_DISPATCH_NEEDED)(gp) /* Is thread dispatch necessary? */ - bne r12, zero, enable_interrupts_before_thread_dispatch + bne r13, zero, enable_interrupts_before_thread_dispatch /* Enable Nios II specific thread dispatch */ stw zero, %gprel(_Nios2_Thread_dispatch_disabled)(gp) /* Restore remaining volatile register */ + ldw r13, FRAME_OFFSET_R13(sp) ldw r14, FRAME_OFFSET_R14(sp) ldw r15, FRAME_OFFSET_R15(sp) diff --git a/cpukit/score/cpu/nios2/rtems/asm.h b/cpukit/score/cpu/nios2/rtems/asm.h index 0725d7c0ed..45ccd8b050 100644 --- a/cpukit/score/cpu/nios2/rtems/asm.h +++ b/cpukit/score/cpu/nios2/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * @note The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available diff --git a/cpukit/score/cpu/nios2/rtems/score/cpu.h b/cpukit/score/cpu/nios2/rtems/score/cpu.h index 7beb4ec06f..6db6d1d46c 100644 --- a/cpukit/score/cpu/nios2/rtems/score/cpu.h +++ b/cpukit/score/cpu/nios2/rtems/score/cpu.h @@ -1,3 +1,9 @@ +/** + * @file + * + * @brief Altera Nios II CPU Department Source + */ + /* * Copyright (c) 2011 embedded brains GmbH * @@ -253,8 +259,8 @@ void _CPU_Initialize_vectors( void ); * _CPU_ISR_Disable(). The value is not modified. * * This flash code is optimal for all Nios II configurations. The rdctl does - * not flush the pipeline and has only a late result penalty. The wrctl on the - * other hand leads to a pipeline flush. + * not flush the pipeline and has only a late result penalty. The wrctl on + * the other hand leads to a pipeline flush. */ #define _CPU_ISR_Flash( _isr_cookie ) \ do { \ @@ -319,14 +325,12 @@ void _CPU_Context_Initialize( void _CPU_Fatal_halt( uint32_t _error ) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; /** - * @brief CPU Initialize - * + * @brief CPU initialization. */ void _CPU_Initialize( void ); /** - * @brief CPU ISR Install Raw Handler - * + * @brief CPU ISR install raw handler. */ void _CPU_ISR_install_raw_handler( uint32_t vector, @@ -335,8 +339,7 @@ void _CPU_ISR_install_raw_handler( ); /** - * @brief CPU ISR Install Vector. - * + * @brief CPU ISR install vector. */ void _CPU_ISR_install_vector( uint32_t vector, diff --git a/cpukit/score/cpu/nios2/rtems/score/cpu_asm.h b/cpukit/score/cpu/nios2/rtems/score/cpu_asm.h index d0572d8b2a..8c0e046c34 100644 --- a/cpukit/score/cpu/nios2/rtems/score/cpu_asm.h +++ b/cpukit/score/cpu/nios2/rtems/score/cpu_asm.h @@ -1,12 +1,14 @@ /** - * @file rtems/score/cpu_asm.h + * @file + * + * @brief Altera Nios II Assembly File + * + * Very loose template for an include file for the cpu_asm.? file + * if it is implemented as a ".S" file (preprocessed by cpp) instead + * of a ".s" file (preprocessed by gm4 or gasp). */ /* - * Very loose template for an include file for the cpu_asm.? file - * if it is implemented as a ".S" file (preprocessed by cpp) instead - * of a ".s" file (preprocessed by gm4 or gasp). - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/nios2/rtems/score/nios2-utility.h b/cpukit/score/cpu/nios2/rtems/score/nios2-utility.h index b99dd02cd2..078484fe6b 100644 --- a/cpukit/score/cpu/nios2/rtems/score/nios2-utility.h +++ b/cpukit/score/cpu/nios2/rtems/score/nios2-utility.h @@ -1,3 +1,8 @@ +/** + * @file + * + * @brief NIOS II Utility + */ /* * Copyright (c) 2011 embedded brains GmbH. All rights reserved. * @@ -496,9 +501,8 @@ static inline void _Nios2_MPU_Restore( uint32_t config ) _Nios2_Set_ctlreg_config( config ); } -/* - * @brief Nios2 MPU Disable Protected - * +/** + * @brief Nios2 MPU disable protected. */ uint32_t _Nios2_MPU_Disable_protected( void ); diff --git a/cpukit/score/cpu/nios2/rtems/score/nios2.h b/cpukit/score/cpu/nios2/rtems/score/nios2.h index 9fd8bff0f3..9a8e232eee 100644 --- a/cpukit/score/cpu/nios2/rtems/score/nios2.h +++ b/cpukit/score/cpu/nios2/rtems/score/nios2.h @@ -1,11 +1,16 @@ -/* nios2.h - * - * This file sets up basic CPU dependency settings based on - * compiler settings. For example, it can determine if - * floating point is available. This particular implementation - * is specific to the NIOS2 port. +/** + * @file * + * @brief NIOS II Set up Basic CPU Dependency Settings Based on + * Compiler Settings * + * This file sets up basic CPU dependency settings based on + * compiler settings. For example, it can determine if + * floating point is available. This particular implementation + * is specific to the NIOS2 port. + */ + +/* * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/nios2/rtems/score/types.h b/cpukit/score/cpu/nios2/rtems/score/types.h index 48c1ebacb9..13a4ecba94 100644 --- a/cpukit/score/cpu/nios2/rtems/score/types.h +++ b/cpukit/score/cpu/nios2/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief Altera Nios II CPU Type Definitions + * + * This include file contains type definitions pertaining to the + * Altera Nios II processor family. */ /* - * This include file contains type definitions pertaining to the - * Altera Nios II processor family. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/no_cpu/rtems/asm.h b/cpukit/score/cpu/no_cpu/rtems/asm.h index 90708e3cfc..926e3964e5 100644 --- a/cpukit/score/cpu/no_cpu/rtems/asm.h +++ b/cpukit/score/cpu/no_cpu/rtems/asm.h @@ -1,17 +1,19 @@ /** * @file rtems/asm.h * + * @brief Addresses Incompatible Flavors Problems + * * This include file attempts to address the problems * caused by incompatible flavors of assemblers and * toolsets. It primarily addresses variations in the * use of leading underscores on symbols and the requirement * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available @@ -26,6 +28,13 @@ #ifndef _RTEMS_ASM_H #define _RTEMS_ASM_H +/** + * @defgroup no_cpuAsm Address Incompatible Flavors Problems + * + * @ingroup no_cpu + */ +/**@{*/ + /* * Indicate we are in an assembly file and get the basic CPU definitions. */ @@ -120,4 +129,5 @@ */ #define EXTERN(sym) .globl SYM (sym) +/**@}*/ #endif diff --git a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h index fe63aea3fc..8c4a61bbb4 100644 --- a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h +++ b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h @@ -41,172 +41,172 @@ extern "C" { /* conditional compilation parameters */ /** - * Should the calls to @ref _Thread_Enable_dispatch be inlined? + * Should the calls to @ref _Thread_Enable_dispatch be inlined? * - * If TRUE, then they are inlined. - * If FALSE, then a subroutine call is made. + * If TRUE, then they are inlined. + * If FALSE, then a subroutine call is made. * - * This conditional is an example of the classic trade-off of size - * versus speed. Inlining the call (TRUE) typically increases the - * size of RTEMS while speeding up the enabling of dispatching. + * This conditional is an example of the classic trade-off of size + * versus speed. Inlining the call (TRUE) typically increases the + * size of RTEMS while speeding up the enabling of dispatching. * - * @note In general, the @ref _Thread_Dispatch_disable_level will - * only be 0 or 1 unless you are in an interrupt handler and that - * interrupt handler invokes the executive.] When not inlined - * something calls @ref _Thread_Enable_dispatch which in turns calls - * @ref _Thread_Dispatch. If the enable dispatch is inlined, then - * one subroutine call is avoided entirely. + * NOTE: In general, the @ref _Thread_Dispatch_disable_level will + * only be 0 or 1 unless you are in an interrupt handler and that + * interrupt handler invokes the executive.] When not inlined + * something calls @ref _Thread_Enable_dispatch which in turns calls + * @ref _Thread_Dispatch. If the enable dispatch is inlined, then + * one subroutine call is avoided entirely. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INLINE_ENABLE_DISPATCH FALSE /** - * Should the body of the search loops in _Thread_queue_Enqueue_priority - * be unrolled one time? In unrolled each iteration of the loop examines - * two "nodes" on the chain being searched. Otherwise, only one node - * is examined per iteration. + * Should the body of the search loops in _Thread_queue_Enqueue_priority + * be unrolled one time? In unrolled each iteration of the loop examines + * two "nodes" on the chain being searched. Otherwise, only one node + * is examined per iteration. * - * If TRUE, then the loops are unrolled. - * If FALSE, then the loops are not unrolled. + * If TRUE, then the loops are unrolled. + * If FALSE, then the loops are not unrolled. * - * The primary factor in making this decision is the cost of disabling - * and enabling interrupts (_ISR_Flash) versus the cost of rest of the - * body of the loop. On some CPUs, the flash is more expensive than - * one iteration of the loop body. In this case, it might be desirable - * to unroll the loop. It is important to note that on some CPUs, this - * code is the longest interrupt disable period in RTEMS. So it is - * necessary to strike a balance when setting this parameter. + * The primary factor in making this decision is the cost of disabling + * and enabling interrupts (_ISR_Flash) versus the cost of rest of the + * body of the loop. On some CPUs, the flash is more expensive than + * one iteration of the loop body. In this case, it might be desirable + * to unroll the loop. It is important to note that on some CPUs, this + * code is the longest interrupt disable period in RTEMS. So it is + * necessary to strike a balance when setting this parameter. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_UNROLL_ENQUEUE_PRIORITY TRUE /** - * Does RTEMS manage a dedicated interrupt stack in software? + * Does RTEMS manage a dedicated interrupt stack in software? * - * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. - * If FALSE, nothing is done. + * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. + * If FALSE, nothing is done. * - * If the CPU supports a dedicated interrupt stack in hardware, - * then it is generally the responsibility of the BSP to allocate it - * and set it up. + * If the CPU supports a dedicated interrupt stack in hardware, + * then it is generally the responsibility of the BSP to allocate it + * and set it up. * - * If the CPU does not support a dedicated interrupt stack, then - * the porter has two options: (1) execute interrupts on the - * stack of the interrupted task, and (2) have RTEMS manage a dedicated - * interrupt stack. + * If the CPU does not support a dedicated interrupt stack, then + * the porter has two options: (1) execute interrupts on the + * stack of the interrupted task, and (2) have RTEMS manage a dedicated + * interrupt stack. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_SOFTWARE_INTERRUPT_STACK FALSE /** - * Does the CPU follow the simple vectored interrupt model? + * Does the CPU follow the simple vectored interrupt model? * - * If TRUE, then RTEMS allocates the vector table it internally manages. - * If FALSE, then the BSP is assumed to allocate and manage the vector - * table + * If TRUE, then RTEMS allocates the vector table it internally manages. + * If FALSE, then the BSP is assumed to allocate and manage the vector + * table * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE /** - * Does this CPU have hardware support for a dedicated interrupt stack? + * Does this CPU have hardware support for a dedicated interrupt stack? * - * If TRUE, then it must be installed during initialization. - * If FALSE, then no installation is performed. + * If TRUE, then it must be installed during initialization. + * If FALSE, then no installation is performed. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HAS_HARDWARE_INTERRUPT_STACK TRUE /** - * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? + * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? * - * If TRUE, then the memory is allocated during initialization. - * If FALSE, then the memory is allocated during initialization. + * If TRUE, then the memory is allocated during initialization. + * If FALSE, then the memory is allocated during initialization. * - * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. + * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALLOCATE_INTERRUPT_STACK TRUE /** - * Does the RTEMS invoke the user's ISR with the vector number and - * a pointer to the saved interrupt frame (1) or just the vector - * number (0)? + * Does the RTEMS invoke the user's ISR with the vector number and + * a pointer to the saved interrupt frame (1) or just the vector + * number (0)? * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ISR_PASSES_FRAME_POINTER 0 /** - * @def CPU_HARDWARE_FP + * @def CPU_HARDWARE_FP * - * Does the CPU have hardware floating point? + * Does the CPU have hardware floating point? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. * - * If there is a FP coprocessor such as the i387 or mc68881, then - * the answer is TRUE. + * If there is a FP coprocessor such as the i387 or mc68881, then + * the answer is TRUE. * - * The macro name "NO_CPU_HAS_FPU" should be made CPU specific. - * It indicates whether or not this CPU model has FP support. For - * example, it would be possible to have an i386_nofp CPU model - * which set this to false to indicate that you have an i386 without - * an i387 and wish to leave floating point support out of RTEMS. + * The macro name "NO_CPU_HAS_FPU" should be made CPU specific. + * It indicates whether or not this CPU model has FP support. For + * example, it would be possible to have an i386_nofp CPU model + * which set this to false to indicate that you have an i386 without + * an i387 and wish to leave floating point support out of RTEMS. */ /** - * @def CPU_SOFTWARE_FP + * @def CPU_SOFTWARE_FP * - * Does the CPU have no hardware floating point and GCC provides a - * software floating point implementation which must be context - * switched? + * Does the CPU have no hardware floating point and GCC provides a + * software floating point implementation which must be context + * switched? * - * This feature conditional is used to indicate whether or not there - * is software implemented floating point that must be context - * switched. The determination of whether or not this applies - * is very tool specific and the state saved/restored is also - * compiler specific. + * This feature conditional is used to indicate whether or not there + * is software implemented floating point that must be context + * switched. The determination of whether or not this applies + * is very tool specific and the state saved/restored is also + * compiler specific. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if ( NO_CPU_HAS_FPU == 1 ) #define CPU_HARDWARE_FP TRUE @@ -216,260 +216,261 @@ extern "C" { #define CPU_SOFTWARE_FP FALSE /** - * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? + * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. * - * So far, the only CPUs in which this option has been used are the - * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and - * gcc both implicitly used the floating point registers to perform - * integer multiplies. Similarly, the PowerPC port of gcc has been - * seen to allocate floating point local variables and touch the FPU - * even when the flow through a subroutine (like vfprintf()) might - * not use floating point formats. + * So far, the only CPUs in which this option has been used are the + * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and + * gcc both implicitly used the floating point registers to perform + * integer multiplies. Similarly, the PowerPC port of gcc has been + * seen to allocate floating point local variables and touch the FPU + * even when the flow through a subroutine (like vfprintf()) might + * not use floating point formats. * - * If a function which you would not think utilize the FP unit DOES, - * then one can not easily predict which tasks will use the FP hardware. - * In this case, this option should be TRUE. + * If a function which you would not think utilize the FP unit DOES, + * then one can not easily predict which tasks will use the FP hardware. + * In this case, this option should be TRUE. * - * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. + * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALL_TASKS_ARE_FP TRUE /** - * Should the IDLE task have a floating point context? + * Should the IDLE task have a floating point context? * - * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task - * and it has a floating point context which is switched in and out. - * If FALSE, then the IDLE task does not have a floating point context. + * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task + * and it has a floating point context which is switched in and out. + * If FALSE, then the IDLE task does not have a floating point context. * - * Setting this to TRUE negatively impacts the time required to preempt - * the IDLE task from an interrupt because the floating point context - * must be saved as part of the preemption. + * Setting this to TRUE negatively impacts the time required to preempt + * the IDLE task from an interrupt because the floating point context + * must be saved as part of the preemption. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_IDLE_TASK_IS_FP FALSE /** - * Should the saving of the floating point registers be deferred - * until a context switch is made to another different floating point - * task? + * Should the saving of the floating point registers be deferred + * until a context switch is made to another different floating point + * task? * - * If TRUE, then the floating point context will not be stored until - * necessary. It will remain in the floating point registers and not - * disturned until another floating point task is switched to. + * If TRUE, then the floating point context will not be stored until + * necessary. It will remain in the floating point registers and not + * disturned until another floating point task is switched to. * - * If FALSE, then the floating point context is saved when a floating - * point task is switched out and restored when the next floating point - * task is restored. The state of the floating point registers between - * those two operations is not specified. + * If FALSE, then the floating point context is saved when a floating + * point task is switched out and restored when the next floating point + * task is restored. The state of the floating point registers between + * those two operations is not specified. * - * If the floating point context does NOT have to be saved as part of - * interrupt dispatching, then it should be safe to set this to TRUE. + * If the floating point context does NOT have to be saved as part of + * interrupt dispatching, then it should be safe to set this to TRUE. * - * Setting this flag to TRUE results in using a different algorithm - * for deciding when to save and restore the floating point context. - * The deferred FP switch algorithm minimizes the number of times - * the FP context is saved and restored. The FP context is not saved - * until a context switch is made to another, different FP task. - * Thus in a system with only one FP task, the FP context will never - * be saved or restored. + * Setting this flag to TRUE results in using a different algorithm + * for deciding when to save and restore the floating point context. + * The deferred FP switch algorithm minimizes the number of times + * the FP context is saved and restored. The FP context is not saved + * until a context switch is made to another, different FP task. + * Thus in a system with only one FP task, the FP context will never + * be saved or restored. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_USE_DEFERRED_FP_SWITCH TRUE /** - * Does this port provide a CPU dependent IDLE task implementation? + * Does this port provide a CPU dependent IDLE task implementation? * - * If TRUE, then the routine @ref _CPU_Thread_Idle_body - * must be provided and is the default IDLE thread body instead of - * @ref _CPU_Thread_Idle_body. + * If TRUE, then the routine @ref _CPU_Thread_Idle_body + * must be provided and is the default IDLE thread body instead of + * @ref _CPU_Thread_Idle_body. * - * If FALSE, then use the generic IDLE thread body if the BSP does - * not provide one. + * If FALSE, then use the generic IDLE thread body if the BSP does + * not provide one. * - * This is intended to allow for supporting processors which have - * a low power or idle mode. When the IDLE thread is executed, then - * the CPU can be powered down. + * This is intended to allow for supporting processors which have + * a low power or idle mode. When the IDLE thread is executed, then + * the CPU can be powered down. * - * The order of precedence for selecting the IDLE thread body is: + * The order of precedence for selecting the IDLE thread body is: * - * -# BSP provided - * -# CPU dependent (if provided) - * -# generic (if no BSP and no CPU dependent) + * -# BSP provided + * -# CPU dependent (if provided) + * -# generic (if no BSP and no CPU dependent) * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PROVIDES_IDLE_THREAD_BODY TRUE /** - * Does the stack grow up (toward higher addresses) or down - * (toward lower addresses)? + * Does the stack grow up (toward higher addresses) or down + * (toward lower addresses)? * - * If TRUE, then the grows upward. - * If FALSE, then the grows toward smaller addresses. + * If TRUE, then the grows upward. + * If FALSE, then the grows toward smaller addresses. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_GROWS_UP TRUE /** - * The following is the variable attribute used to force alignment - * of critical RTEMS structures. On some processors it may make - * sense to have these aligned on tighter boundaries than - * the minimum requirements of the compiler in order to have as - * much of the critical data area as possible in a cache line. + * The following is the variable attribute used to force alignment + * of critical RTEMS structures. On some processors it may make + * sense to have these aligned on tighter boundaries than + * the minimum requirements of the compiler in order to have as + * much of the critical data area as possible in a cache line. * - * The placement of this macro in the declaration of the variables - * is based on the syntactically requirements of the GNU C - * "__attribute__" extension. For example with GNU C, use - * the following to force a structures to a 32 byte boundary. + * The placement of this macro in the declaration of the variables + * is based on the syntactically requirements of the GNU C + * "__attribute__" extension. For example with GNU C, use + * the following to force a structures to a 32 byte boundary. * - * __attribute__ ((aligned (32))) + * __attribute__ ((aligned (32))) * - * @note Currently only the Priority Bit Map table uses this feature. - * To benefit from using this, the data must be heavily - * used so it will stay in the cache and used frequently enough - * in the executive to justify turning this on. + * NOTE: Currently only the Priority Bit Map table uses this feature. + * To benefit from using this, the data must be heavily + * used so it will stay in the cache and used frequently enough + * in the executive to justify turning this on. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STRUCTURE_ALIGNMENT /** - * @defgroup CPUTimestamp Processor Dependent Timestamp Support + * @defgroup CPUTimestamp Processor Dependent Timestamp Support * - * This group assists in issues related to timestamp implementation. + * This group assists in issues related to timestamp implementation. * - * The port must choose exactly one of the following defines: - * - #define CPU_TIMESTAMP_USE_STRUCT_TIMESPEC TRUE - * - #define CPU_TIMESTAMP_USE_INT64 TRUE - * - #define CPU_TIMESTAMP_USE_INT64_INLINE TRUE + * The port must choose exactly one of the following defines: + * - #define CPU_TIMESTAMP_USE_STRUCT_TIMESPEC TRUE + * - #define CPU_TIMESTAMP_USE_INT64 TRUE + * - #define CPU_TIMESTAMP_USE_INT64_INLINE TRUE * - * Performance of int64_t versus struct timespec - * ============================================= + * Performance of int64_t versus struct timespec + * ============================================= * - * On PowerPC/psim, inlined int64_t saves ~50 instructions on each - * _Thread_Dispatch operation which results in a context switch. - * This works out to be about 10% faster dispatches and 7.5% faster - * blocking semaphore obtains. The following numbers are in instructions - * and from tm02 and tm26. + * On PowerPC/psim, inlined int64_t saves ~50 instructions on each + * _Thread_Dispatch operation which results in a context switch. + * This works out to be about 10% faster dispatches and 7.5% faster + * blocking semaphore obtains. The following numbers are in instructions + * and from tm02 and tm26. * - * timespec int64 inlined int64 - * dispatch: 446 446 400 - * blocking sem obtain: 627 626 581 + * timespec int64 inlined int64 + * dispatch: 446 446 400 + * blocking sem obtain: 627 626 581 * - * On SPARC/sis, inlined int64_t shows the same percentage gains. - * The following numbers are in microseconds and from tm02 and tm26. + * On SPARC/sis, inlined int64_t shows the same percentage gains. + * The following numbers are in microseconds and from tm02 and tm26. * - * timespec int64 inlined int64 - * dispatch: 59 61 53 - * blocking sem obtain: 98 100 92 + * timespec int64 inlined int64 + * dispatch: 59 61 53 + * blocking sem obtain: 98 100 92 * - * Inlining appears to have a tendency to increase the size of - * some executables. - * Not inlining reduces the execution improvement but does not seem to - * be an improvement on the PowerPC and SPARC. The struct timespec - * and the executables with int64 not inlined are about the same size. + * Inlining appears to have a tendency to increase the size of + * some executables. + * Not inlining reduces the execution improvement but does not seem to + * be an improvement on the PowerPC and SPARC. The struct timespec + * and the executables with int64 not inlined are about the same size. + * */ +/**@{**/ /** - * @ingroup CPUTimestamp - * - * Selects the timestamp implementation using struct timespec. + * Selects the timestamp implementation using struct timespec. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_TIMESTAMP_USE_STRUCT_TIMESPEC TRUE /** - * @ingroup CPUTimestamp + * Selects the timestamp implementation using int64_t and no inlined methods. * - * Selects the timestamp implementation using int64_t and no inlined methods. - * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_TIMESTAMP_USE_INT64 TRUE /** - * @ingroup CPUTimestamp - * - * Selects the timestamp implementation using int64_t and inlined methods. + * Selects the timestamp implementation using int64_t and inlined methods. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_TIMESTAMP_USE_INT64_INLINE TRUE +/** @} */ + /** - * @defgroup CPUEndian Processor Dependent Endianness Support + * @defgroup CPUEndian Processor Dependent Endianness Support * - * This group assists in issues related to processor endianness. + * This group assists in issues related to processor endianness. + * */ +/**@{**/ /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the - * same values. + * NOTE: @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_LITTLE_ENDIAN + * @see CPU_LITTLE_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_BIG_ENDIAN TRUE /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the - * same values. + * NOTE: @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_BIG_ENDIAN + * @see CPU_BIG_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_LITTLE_ENDIAN FALSE +/** @} */ + /** - * @ingroup CPUInterrupt - * The following defines the number of bits actually used in the - * interrupt field of the task mode. How those bits map to the - * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. + * @ingroup CPUInterrupt + * + * The following defines the number of bits actually used in the + * interrupt field of the task mode. How those bits map to the + * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MODES_INTERRUPT_MASK 0x00000001 @@ -486,83 +487,89 @@ extern "C" { /** * @defgroup CPUContext Processor Dependent Context Management * - * From the highest level viewpoint, there are 2 types of context to save. + * From the highest level viewpoint, there are 2 types of context to save. * - * -# Interrupt registers to save - * -# Task level registers to save + * -# Interrupt registers to save + * -# Task level registers to save * - * Since RTEMS handles integer and floating point contexts separately, this - * means we have the following 3 context items: + * Since RTEMS handles integer and floating point contexts separately, this + * means we have the following 3 context items: * - * -# task level context stuff:: Context_Control - * -# floating point task stuff:: Context_Control_fp - * -# special interrupt level context :: CPU_Interrupt_frame + * -# task level context stuff:: Context_Control + * -# floating point task stuff:: Context_Control_fp + * -# special interrupt level context :: CPU_Interrupt_frame * - * On some processors, it is cost-effective to save only the callee - * preserved registers during a task context switch. This means - * that the ISR code needs to save those registers which do not - * persist across function calls. It is not mandatory to make this - * distinctions between the caller/callee saves registers for the - * purpose of minimizing context saved during task switch and on interrupts. - * If the cost of saving extra registers is minimal, simplicity is the - * choice. Save the same context on interrupt entry as for tasks in - * this case. + * On some processors, it is cost-effective to save only the callee + * preserved registers during a task context switch. This means + * that the ISR code needs to save those registers which do not + * persist across function calls. It is not mandatory to make this + * distinctions between the caller/callee saves registers for the + * purpose of minimizing context saved during task switch and on interrupts. + * If the cost of saving extra registers is minimal, simplicity is the + * choice. Save the same context on interrupt entry as for tasks in + * this case. * - * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then - * care should be used in designing the context area. + * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then + * care should be used in designing the context area. * - * On some CPUs with hardware floating point support, the Context_Control_fp - * structure will not be used or it simply consist of an array of a - * fixed number of bytes. This is done when the floating point context - * is dumped by a "FP save context" type instruction and the format - * is not really defined by the CPU. In this case, there is no need - * to figure out the exact format -- only the size. Of course, although - * this is enough information for RTEMS, it is probably not enough for - * a debugger such as gdb. But that is another problem. + * On some CPUs with hardware floating point support, the Context_Control_fp + * structure will not be used or it simply consist of an array of a + * fixed number of bytes. This is done when the floating point context + * is dumped by a "FP save context" type instruction and the format + * is not really defined by the CPU. In this case, there is no need + * to figure out the exact format -- only the size. Of course, although + * this is enough information for RTEMS, it is probably not enough for + * a debugger such as gdb. But that is another problem. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate + * */ +/**@{**/ /** - * @ingroup CPUContext Management - * This defines the minimal set of integer and processor state registers - * that must be saved during a voluntary context switch from one thread - * to another. + * @ingroup Management + * This defines the minimal set of integer and processor state registers + * that must be saved during a voluntary context switch from one thread + * to another. */ typedef struct { - /** This field is a hint that a port will have a number of integer - * registers that need to be saved at a context switch. + /** + * This field is a hint that a port will have a number of integer + * registers that need to be saved at a context switch. */ uint32_t some_integer_register; - /** This field is a hint that a port will have a number of system - * registers that need to be saved at a context switch. + /** + * This field is a hint that a port will have a number of system + * registers that need to be saved at a context switch. */ uint32_t some_system_register; - /** This field is a hint that a port will have a register that - * is the stack pointer. + /** + * This field is a hint that a port will have a register that + * is the stack pointer. */ uint32_t stack_pointer; } Context_Control; /** - * @ingroup CPUContext Management + * @ingroup Management * - * This macro returns the stack pointer associated with @a _context. + * This macro returns the stack pointer associated with @a _context. * - * @param[in] _context is the thread context area to access + * @param[in] _context is the thread context area to access * - * @return This method returns the stack pointer. + * @return This method returns the stack pointer. */ #define _CPU_Context_Get_SP( _context ) \ (_context)->stack_pointer /** - * @ingroup CPUContext Management - * This defines the complete set of floating point registers that must - * be saved during any context switch from one thread to another. + * @ingroup Management + * + * This defines the complete set of floating point registers that must + * be saved during any context switch from one thread to another. */ typedef struct { /** FPU registers are listed here */ @@ -570,48 +577,52 @@ typedef struct { } Context_Control_fp; /** - * @ingroup CPUContext Management - * This defines the set of integer and processor state registers that must - * be saved during an interrupt. This set does not include any which are - * in @ref Context_Control. + * @ingroup Management + * + * This defines the set of integer and processor state registers that must + * be saved during an interrupt. This set does not include any which are + * in @ref Context_Control. */ typedef struct { - /** This field is a hint that a port will have a number of integer - * registers that need to be saved when an interrupt occurs or - * when a context switch occurs at the end of an ISR. + /** + * This field is a hint that a port will have a number of integer + * registers that need to be saved when an interrupt occurs or + * when a context switch occurs at the end of an ISR. */ uint32_t special_interrupt_register; } CPU_Interrupt_frame; /** - * This variable is optional. It is used on CPUs on which it is difficult - * to generate an "uninitialized" FP context. It is filled in by - * @ref _CPU_Initialize and copied into the task's FP context area during - * @ref _CPU_Context_Initialize. + * This variable is optional. It is used on CPUs on which it is difficult + * to generate an "uninitialized" FP context. It is filled in by + * @ref _CPU_Initialize and copied into the task's FP context area during + * @ref _CPU_Context_Initialize. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; +/** @} */ + /** - * @defgroup CPUInterrupt Processor Dependent Interrupt Management + * @defgroup CPUInterrupt Processor Dependent Interrupt Management * - * On some CPUs, RTEMS supports a software managed interrupt stack. - * This stack is allocated by the Interrupt Manager and the switch - * is performed in @ref _ISR_Handler. These variables contain pointers - * to the lowest and highest addresses in the chunk of memory allocated - * for the interrupt stack. Since it is unknown whether the stack - * grows up or down (in general), this give the CPU dependent - * code the option of picking the version it wants to use. + * On some CPUs, RTEMS supports a software managed interrupt stack. + * This stack is allocated by the Interrupt Manager and the switch + * is performed in @ref _ISR_Handler. These variables contain pointers + * to the lowest and highest addresses in the chunk of memory allocated + * for the interrupt stack. Since it is unknown whether the stack + * grows up or down (in general), this give the CPU dependent + * code the option of picking the version it wants to use. * - * @note These two variables are required if the macro - * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. + * NOTE: These two variables are required if the macro + * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ /* @@ -625,138 +636,143 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; /* XXX: if needed, put more variables here */ /** - * @ingroup CPUContext - * The size of the floating point context area. On some CPUs this - * will not be a "sizeof" because the format of the floating point - * area is not defined -- only the size is. This is usually on - * CPUs with a "floating point save context" instruction. + * @ingroup CPUContext + * + * The size of the floating point context area. On some CPUs this + * will not be a "sizeof" because the format of the floating point + * area is not defined -- only the size is. This is usually on + * CPUs with a "floating point save context" instruction. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_CONTEXT_FP_SIZE sizeof( Context_Control_fp ) /** - * Amount of extra stack (above minimum stack size) required by - * MPCI receive server thread. Remember that in a multiprocessor - * system this thread must exist and be able to process all directives. + * Amount of extra stack (above minimum stack size) required by + * MPCI receive server thread. Remember that in a multiprocessor + * system this thread must exist and be able to process all directives. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0 /** - * @ingroup CPUInterrupt - * This defines the number of entries in the @ref _ISR_Vector_table managed - * by RTEMS. + * @ingroup CPUInterrupt + * + * This defines the number of entries in the @ref _ISR_Vector_table managed + * by RTEMS. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INTERRUPT_NUMBER_OF_VECTORS 32 /** - * @ingroup CPUInterrupt - * This defines the highest interrupt vector number for this port. + * @ingroup CPUInterrupt + * + * This defines the highest interrupt vector number for this port. */ #define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER (CPU_INTERRUPT_NUMBER_OF_VECTORS - 1) /** - * @ingroup CPUInterrupt - * This is defined if the port has a special way to report the ISR nesting - * level. Most ports maintain the variable @a _ISR_Nest_level. + * @ingroup CPUInterrupt + * + * This is defined if the port has a special way to report the ISR nesting + * level. Most ports maintain the variable @a _ISR_Nest_level. */ #define CPU_PROVIDES_ISR_IS_IN_PROGRESS FALSE /** - * @ingroup CPUContext - * Should be large enough to run all RTEMS tests. This ensures - * that a "reasonable" small application should not have any problems. + * @ingroup CPUContext + * + * Should be large enough to run all RTEMS tests. This ensures + * that a "reasonable" small application should not have any problems. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_MINIMUM_SIZE (1024*4) /** - * Size of a pointer. + * Size of a pointer. * - * This must be an integer literal that can be used by the assembler. This - * value will be used to calculate offsets of structure members. These - * offsets will be used in assembler code. + * This must be an integer literal that can be used by the assembler. This + * value will be used to calculate offsets of structure members. These + * offsets will be used in assembler code. */ #define CPU_SIZEOF_POINTER 4 /** - * CPU's worst alignment requirement for data types on a byte boundary. This - * alignment does not take into account the requirements for the stack. + * CPU's worst alignment requirement for data types on a byte boundary. This + * alignment does not take into account the requirements for the stack. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALIGNMENT 8 /** - * This number corresponds to the byte alignment requirement for the - * heap handler. This alignment requirement may be stricter than that - * for the data types alignment specified by @ref CPU_ALIGNMENT. It is - * common for the heap to follow the same alignment requirement as - * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for - * the heap, then this should be set to @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for the + * heap handler. This alignment requirement may be stricter than that + * for the data types alignment specified by @ref CPU_ALIGNMENT. It is + * common for the heap to follow the same alignment requirement as + * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for + * the heap, then this should be set to @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2 although it should be - * a multiple of 2 greater than or equal to 2. The requirement - * to be a multiple of 2 is because the heap uses the least - * significant field of the front and back flags to indicate - * that a block is in use or free. So you do not want any odd - * length blocks really putting length data in that bit. + * NOTE: This does not have to be a power of 2 although it should be + * a multiple of 2 greater than or equal to 2. The requirement + * to be a multiple of 2 is because the heap uses the least + * significant field of the front and back flags to indicate + * that a block is in use or free. So you do not want any odd + * length blocks really putting length data in that bit. * - * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will - * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that - * elements allocated from the heap meet all restrictions. + * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will + * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that + * elements allocated from the heap meet all restrictions. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for memory - * buffers allocated by the partition manager. This alignment requirement - * may be stricter than that for the data types alignment specified by - * @ref CPU_ALIGNMENT. It is common for the partition to follow the same - * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is - * strict enough for the partition, then this should be set to - * @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for memory + * buffers allocated by the partition manager. This alignment requirement + * may be stricter than that for the data types alignment specified by + * @ref CPU_ALIGNMENT. It is common for the partition to follow the same + * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is + * strict enough for the partition, then this should be set to + * @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2. It does have to - * be greater or equal to than @ref CPU_ALIGNMENT. + * NOTE: This does not have to be a power of 2. It does have to + * be greater or equal to than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_PARTITION_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. If the - * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be - * set to 0. + * This number corresponds to the byte alignment requirement for the + * stack. This alignment requirement may be stricter than that for the + * data types alignment specified by @ref CPU_ALIGNMENT. If the + * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be + * set to 0. * - * @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. + * NOTE: This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_STACK_ALIGNMENT 0 @@ -765,25 +781,27 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; */ /** - * @ingroup CPUInterrupt - * Support routine to initialize the RTEMS vector table after it is allocated. + * @ingroup CPUInterrupt + * + * Support routine to initialize the RTEMS vector table after it is allocated. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Initialize_vectors() /** - * @ingroup CPUInterrupt - * Disable all interrupts for an RTEMS critical section. The previous - * level is returned in @a _isr_cookie. + * @ingroup CPUInterrupt + * + * Disable all interrupts for an RTEMS critical section. The previous + * level is returned in @a _isr_cookie. * - * @param[out] _isr_cookie will contain the previous level cookie + * @param[out] _isr_cookie will contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Disable( _isr_cookie ) \ { \ @@ -791,69 +809,72 @@ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context; } /** - * @ingroup CPUInterrupt - * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). - * This indicates the end of an RTEMS critical section. The parameter - * @a _isr_cookie is not modified. + * @ingroup CPUInterrupt + * + * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). + * This indicates the end of an RTEMS critical section. The parameter + * @a _isr_cookie is not modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Enable( _isr_cookie ) \ { \ } /** - * @ingroup CPUInterrupt - * This temporarily restores the interrupt to @a _isr_cookie before immediately - * disabling them again. This is used to divide long RTEMS critical - * sections into two or more parts. The parameter @a _isr_cookie is not - * modified. + * @ingroup CPUInterrupt + * + * This temporarily restores the interrupt to @a _isr_cookie before immediately + * disabling them again. This is used to divide long RTEMS critical + * sections into two or more parts. The parameter @a _isr_cookie is not + * modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Flash( _isr_cookie ) \ { \ } /** - * @ingroup CPUInterrupt + * @ingroup CPUInterrupt * - * This routine and @ref _CPU_ISR_Get_level - * Map the interrupt level in task mode onto the hardware that the CPU - * actually provides. Currently, interrupt levels which do not - * map onto the CPU in a generic fashion are undefined. Someday, - * it would be nice if these were "mapped" by the application - * via a callout. For example, m68k has 8 levels 0 - 7, levels - * 8 - 255 would be available for bsp/application specific meaning. - * This could be used to manage a programmable interrupt controller - * via the rtems_task_mode directive. + * This routine and @ref _CPU_ISR_Get_level + * Map the interrupt level in task mode onto the hardware that the CPU + * actually provides. Currently, interrupt levels which do not + * map onto the CPU in a generic fashion are undefined. Someday, + * it would be nice if these were "mapped" by the application + * via a callout. For example, m68k has 8 levels 0 - 7, levels + * 8 - 255 would be available for bsp/application specific meaning. + * This could be used to manage a programmable interrupt controller + * via the rtems_task_mode directive. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_ISR_Set_level( new_level ) \ { \ } /** - * @ingroup CPUInterrupt - * Return the current interrupt disable level for this task in - * the format used by the interrupt level portion of the task mode. + * @ingroup CPUInterrupt + * + * Return the current interrupt disable level for this task in + * the format used by the interrupt level portion of the task mode. * - * @note This routine usually must be implemented as a subroutine. + * NOTE: This routine usually must be implemented as a subroutine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ uint32_t _CPU_ISR_Get_level( void ); @@ -863,34 +884,35 @@ uint32_t _CPU_ISR_Get_level( void ); /** * @ingroup CPUContext - * Initialize the context to a state suitable for starting a - * task after a context restore operation. Generally, this - * involves: - * - * - setting a starting address - * - preparing the stack - * - preparing the stack and frame pointers - * - setting the proper interrupt level in the context - * - initializing the floating point context - * - * This routine generally does not set any unnecessary register - * in the context. The state of the "general data" registers is - * undefined at task start time. - * - * @param[in] _the_context is the context structure to be initialized - * @param[in] _stack_base is the lowest physical address of this task's stack - * @param[in] _size is the size of this task's stack - * @param[in] _isr is the interrupt disable level - * @param[in] _entry_point is the thread's entry point. This is - * always @a _Thread_Handler - * @param[in] _is_fp is TRUE if the thread is to be a floating - * point thread. This is typically only used on CPUs where the - * FPU may be easily disabled by software such as on the SPARC - * where the PSR contains an enable FPU bit. - * - * Port Specific Information: - * - * XXX document implementation including references if appropriate + * + * Initialize the context to a state suitable for starting a + * task after a context restore operation. Generally, this + * involves: + * + * - setting a starting address + * - preparing the stack + * - preparing the stack and frame pointers + * - setting the proper interrupt level in the context + * - initializing the floating point context + * + * This routine generally does not set any unnecessary register + * in the context. The state of the "general data" registers is + * undefined at task start time. + * + * @param[in] _the_context is the context structure to be initialized + * @param[in] _stack_base is the lowest physical address of this task's stack + * @param[in] _size is the size of this task's stack + * @param[in] _isr is the interrupt disable level + * @param[in] _entry_point is the thread's entry point. This is + * always @a _Thread_Handler + * @param[in] _is_fp is TRUE if the thread is to be a floating + * point thread. This is typically only used on CPUs where the + * FPU may be easily disabled by software such as on the SPARC + * where the PSR contains an enable FPU bit. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ #define _CPU_Context_Initialize( _the_context, _stack_base, _size, \ _isr, _entry_point, _is_fp ) \ @@ -898,65 +920,66 @@ uint32_t _CPU_ISR_Get_level( void ); } /** - * This routine is responsible for somehow restarting the currently - * executing task. If you are lucky, then all that is necessary - * is restoring the context. Otherwise, there will need to be - * a special assembly routine which does something special in this - * case. For many ports, simply adding a label to the restore path - * of @ref _CPU_Context_switch will work. On other ports, it may be - * possibly to load a few arguments and jump to the restore path. It will - * not work if restarting self conflicts with the stack frame - * assumptions of restoring a context. + * This routine is responsible for somehow restarting the currently + * executing task. If you are lucky, then all that is necessary + * is restoring the context. Otherwise, there will need to be + * a special assembly routine which does something special in this + * case. For many ports, simply adding a label to the restore path + * of @ref _CPU_Context_switch will work. On other ports, it may be + * possibly to load a few arguments and jump to the restore path. It will + * not work if restarting self conflicts with the stack frame + * assumptions of restoring a context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Restart_self( _the_context ) \ _CPU_Context_restore( (_the_context) ); /** - * @ingroup CPUContext - * The purpose of this macro is to allow the initial pointer into - * a floating point context area (used to save the floating point - * context) to be at an arbitrary place in the floating point - * context area. - * - * This is necessary because some FP units are designed to have - * their context saved as a stack which grows into lower addresses. - * Other FP units can be saved by simply moving registers into offsets - * from the base of the context area. Finally some FP units provide - * a "dump context" instruction which could fill in from high to low - * or low to high based on the whim of the CPU designers. - * - * @param[in] _base is the lowest physical address of the floating point - * context area - * @param[in] _offset is the offset into the floating point area + * @ingroup CPUContext + * + * The purpose of this macro is to allow the initial pointer into + * a floating point context area (used to save the floating point + * context) to be at an arbitrary place in the floating point + *context area. * - * Port Specific Information: + * This is necessary because some FP units are designed to have + * their context saved as a stack which grows into lower addresses. + * Other FP units can be saved by simply moving registers into offsets + * from the base of the context area. Finally some FP units provide + * a "dump context" instruction which could fill in from high to low + * or low to high based on the whim of the CPU designers. * - * XXX document implementation including references if appropriate + * @param[in] _base is the lowest physical address of the floating point + * context area + * @param[in] _offset is the offset into the floating point area + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ #define _CPU_Context_Fp_start( _base, _offset ) \ ( (void *) _Addresses_Add_offset( (_base), (_offset) ) ) /** - * This routine initializes the FP context area passed to it to. - * There are a few standard ways in which to initialize the - * floating point context. The code included for this macro assumes - * that this is a CPU in which a "initial" FP context was saved into - * @a _CPU_Null_fp_context and it simply copies it to the destination - * context passed to it. + * This routine initializes the FP context area passed to it to. + * There are a few standard ways in which to initialize the + * floating point context. The code included for this macro assumes + * that this is a CPU in which a "initial" FP context was saved into + * @a _CPU_Null_fp_context and it simply copies it to the destination + * context passed to it. * - * Other floating point context save/restore models include: - * -# not doing anything, and - * -# putting a "null FP status word" in the correct place in the FP context. + * Other floating point context save/restore models include: + * -# not doing anything, and + * -# putting a "null FP status word" in the correct place in the FP context. * - * @param[in] _destination is the floating point context area + * @param[in] _destination is the floating point context area * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Initialize_fp( _destination ) \ { \ @@ -968,13 +991,13 @@ uint32_t _CPU_ISR_Get_level( void ); /* Fatal Error manager macros */ /** - * This routine copies _error into a known place -- typically a stack - * location or a register, optionally disables interrupts, and - * halts/stops the CPU. + * This routine copies _error into a known place -- typically a stack + * location or a register, optionally disables interrupts, and + * halts/stops the CPU. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Fatal_halt( _error ) \ { \ @@ -985,68 +1008,67 @@ uint32_t _CPU_ISR_Get_level( void ); /* Bitfield handler macros */ /** - * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation + * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation * - * This set of routines are used to implement fast searches for - * the most important ready task. + * This set of routines are used to implement fast searches for + * the most important ready task. + * */ +/**@{**/ /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the generic bitfield - * manipulation implementation. + * This definition is set to TRUE if the port uses the generic bitfield + * manipulation implementation. */ #define CPU_USE_GENERIC_BITFIELD_CODE TRUE /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the data tables provided - * by the generic bitfield manipulation implementation. - * This can occur when actually using the generic bitfield manipulation - * implementation or when implementing the same algorithm in assembly - * language for improved performance. It is unlikely that a port will use - * the data if it has a bitfield scan instruction. + * This definition is set to TRUE if the port uses the data tables provided + * by the generic bitfield manipulation implementation. + * This can occur when actually using the generic bitfield manipulation + * implementation or when implementing the same algorithm in assembly + * language for improved performance. It is unlikely that a port will use + * the data if it has a bitfield scan instruction. */ #define CPU_USE_GENERIC_BITFIELD_DATA TRUE /** - * @ingroup CPUBitfield - * This routine sets @a _output to the bit number of the first bit - * set in @a _value. @a _value is of CPU dependent type - * @a Priority_bit_map_Control. This type may be either 16 or 32 bits - * wide although only the 16 least significant bits will be used. - * - * There are a number of variables in using a "find first bit" type - * instruction. - * - * -# What happens when run on a value of zero? - * -# Bits may be numbered from MSB to LSB or vice-versa. - * -# The numbering may be zero or one based. - * -# The "find first bit" instruction may search from MSB or LSB. - * - * RTEMS guarantees that (1) will never happen so it is not a concern. - * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and - * @ref _CPU_Priority_bits_index. These three form a set of routines - * which must logically operate together. Bits in the _value are - * set and cleared based on masks built by @ref _CPU_Priority_Mask. - * The basic major and minor values calculated by @ref _Priority_Major - * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index - * to properly range between the values returned by the "find first bit" - * instruction. This makes it possible for @ref _Priority_Get_highest to - * calculate the major and directly index into the minor table. - * This mapping is necessary to ensure that 0 (a high priority major/minor) - * is the first bit found. - * - * This entire "find first bit" and mapping process depends heavily - * on the manner in which a priority is broken into a major and minor - * components with the major being the 4 MSB of a priority and minor - * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest - * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next - * to the lowest priority. - * - * If your CPU does not have a "find first bit" instruction, then - * there are ways to make do without it. Here are a handful of ways - * to implement this in software: + * This routine sets @a _output to the bit number of the first bit + * set in @a _value. @a _value is of CPU dependent type + * @a Priority_bit_map_Control. This type may be either 16 or 32 bits + * wide although only the 16 least significant bits will be used. + * + * There are a number of variables in using a "find first bit" type + * instruction. + * + * -# What happens when run on a value of zero? + * -# Bits may be numbered from MSB to LSB or vice-versa. + * -# The numbering may be zero or one based. + * -# The "find first bit" instruction may search from MSB or LSB. + * + * RTEMS guarantees that (1) will never happen so it is not a concern. + * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and + * @ref _CPU_Priority_bits_index. These three form a set of routines + * which must logically operate together. Bits in the _value are + * set and cleared based on masks built by @ref _CPU_Priority_Mask. + * The basic major and minor values calculated by @ref _Priority_Major + * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index + * to properly range between the values returned by the "find first bit" + * instruction. This makes it possible for @ref _Priority_Get_highest to + * calculate the major and directly index into the minor table. + * This mapping is necessary to ensure that 0 (a high priority major/minor) + * is the first bit found. + * + * This entire "find first bit" and mapping process depends heavily + * on the manner in which a priority is broken into a major and minor + * components with the major being the 4 MSB of a priority and minor + * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest + * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next + * to the lowest priority. + * + * If your CPU does not have a "find first bit" instruction, then + * there are ways to make do without it. Here are a handful of ways + * to implement this in software: * @verbatim - a series of 16 bit test instructions @@ -1063,15 +1085,15 @@ uint32_t _CPU_ISR_Get_level( void ); _number += bit_set_table[ _value ] @endverbatim - * where bit_set_table[ 16 ] has values which indicate the first - * bit set + * where bit_set_table[ 16 ] has values which indicate the first + * bit set * - * @param[in] _value is the value to be scanned - * @param[in] _output is the first bit set + * @param[in] _value is the value to be scanned + * @param[in] _output is the first bit set * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1081,16 +1103,18 @@ uint32_t _CPU_ISR_Get_level( void ); } #endif +/** @} */ + /* end of Bitfield handler macros */ /** - * This routine builds the mask which corresponds to the bit fields - * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion - * for that routine. + * This routine builds the mask which corresponds to the bit fields + * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion + * for that routine. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1100,17 +1124,18 @@ uint32_t _CPU_ISR_Get_level( void ); #endif /** - * @ingroup CPUBitfield - * This routine translates the bit numbers returned by - * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as - * a major or minor component of a priority. See the discussion - * for that routine. + * @ingroup CPUBitfield + * + * This routine translates the bit numbers returned by + * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as + * a major or minor component of a priority. See the discussion + * for that routine. * - * @param[in] _priority is the major or minor number to translate + * @param[in] _priority is the major or minor number to translate * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1124,26 +1149,27 @@ uint32_t _CPU_ISR_Get_level( void ); /* functions */ /** - * This routine performs CPU dependent initialization. + * This routine performs CPU dependent initialization. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Initialize(void); /** - * @ingroup CPUInterrupt - * This routine installs a "raw" interrupt handler directly into the - * processor's vector table. + * @ingroup CPUInterrupt + * + * This routine installs a "raw" interrupt handler directly into the + * processor's vector table. * - * @param[in] vector is the vector number - * @param[in] new_handler is the raw ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * @param[in] vector is the vector number + * @param[in] new_handler is the raw ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_raw_handler( uint32_t vector, @@ -1152,16 +1178,17 @@ void _CPU_ISR_install_raw_handler( ); /** - * @ingroup CPUInterrupt - * This routine installs an interrupt vector. + * @ingroup CPUInterrupt + * + * This routine installs an interrupt vector. * - * @param[in] vector is the vector number - * @param[in] new_handler is the RTEMS ISR handler to install - * @param[in] old_handler is the previously installed ISR Handler + * @param[in] vector is the vector number + * @param[in] new_handler is the RTEMS ISR handler to install + * @param[in] old_handler is the previously installed ISR Handler * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_ISR_install_vector( uint32_t vector, @@ -1170,40 +1197,41 @@ void _CPU_ISR_install_vector( ); /** - * @ingroup CPUInterrupt - * This routine installs the hardware interrupt stack pointer. + * @ingroup CPUInterrupt + * This routine installs the hardware interrupt stack pointer. * - * @note It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK - * is TRUE. + * NOTE: It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK + * is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Install_interrupt_stack( void ); /** - * This routine is the CPU dependent IDLE thread body. + * This routine is the CPU dependent IDLE thread body. * - * @note It need only be provided if @ref CPU_PROVIDES_IDLE_THREAD_BODY + * NOTE: It need only be provided if @ref CPU_PROVIDES_IDLE_THREAD_BODY * is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void *_CPU_Thread_Idle_body( uintptr_t ignored ); /** - * @ingroup CPUContext - * This routine switches from the run context to the heir context. + * @ingroup CPUContext + * + * This routine switches from the run context to the heir context. * - * @param[in] run points to the context of the currently executing task - * @param[in] heir points to the context of the heir task + * @param[in] run points to the context of the currently executing task + * @param[in] heir points to the context of the heir task * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_switch( Context_Control *run, @@ -1211,66 +1239,69 @@ void _CPU_Context_switch( ); /** - * @ingroup CPUContext - * This routine is generally used only to restart self in an - * efficient manner. It may simply be a label in @ref _CPU_Context_switch. + * @ingroup CPUContext + * + * This routine is generally used only to restart self in an + * efficient manner. It may simply be a label in @ref _CPU_Context_switch. * - * @param[in] new_context points to the context to be restored. + * @param[in] new_context points to the context to be restored. * - * @note May be unnecessary to reload some registers. + * NOTE: May be unnecessary to reload some registers. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore( Context_Control *new_context ) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; /** - * @ingroup CPUContext - * This routine saves the floating point context passed to it. + * @ingroup CPUContext + * + * This routine saves the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_restore_fp to restore this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_restore_fp to restore this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_save_fp( Context_Control_fp **fp_context_ptr ); /** - * @ingroup CPUContext - * This routine restores the floating point context passed to it. + * @ingroup CPUContext + * + * This routine restores the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area to restore + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area to restore * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_save_fp to save this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_save_fp to save this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore_fp( Context_Control_fp **fp_context_ptr ); /** - * @brief The set of registers that specifies the complete processor state. + * @brief The set of registers that specifies the complete processor state. * - * The CPU exception frame may be available in fatal error conditions like for - * example illegal opcodes, instruction fetch errors, or data access errors. + * The CPU exception frame may be available in fatal error conditions like for + * example illegal opcodes, instruction fetch errors, or data access errors. * - * @see rtems_fatal(), RTEMS_FATAL_SOURCE_EXCEPTION, and - * rtems_exception_frame_print(). + * @see rtems_fatal(), RTEMS_FATAL_SOURCE_EXCEPTION, and + * rtems_exception_frame_print(). */ typedef struct { uint32_t processor_state_register; @@ -1279,39 +1310,40 @@ typedef struct { } CPU_Exception_frame; /** - * @brief Prints the exception frame via printk(). + * @brief Prints the exception frame via printk(). * - * @see rtems_fatal() and RTEMS_FATAL_SOURCE_EXCEPTION. + * @see rtems_fatal() and RTEMS_FATAL_SOURCE_EXCEPTION. */ void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); /** - * @ingroup CPUEndian - * The following routine swaps the endian format of an unsigned int. - * It must be static because it is referenced indirectly. + * @ingroup CPUEndian + * + * The following routine swaps the endian format of an unsigned int. + * It must be static because it is referenced indirectly. * - * This version will work on any processor, but if there is a better - * way for your CPU PLEASE use it. The most common way to do this is to: + * This version will work on any processor, but if there is a better + * way for your CPU PLEASE use it. The most common way to do this is to: * - * swap least significant two bytes with 16-bit rotate - * swap upper and lower 16-bits - * swap most significant two bytes with 16-bit rotate + * swap least significant two bytes with 16-bit rotate + * swap upper and lower 16-bits + * swap most significant two bytes with 16-bit rotate * - * Some CPUs have special instructions which swap a 32-bit quantity in - * a single instruction (e.g. i486). It is probably best to avoid - * an "endian swapping control bit" in the CPU. One good reason is - * that interrupts would probably have to be disabled to ensure that - * an interrupt does not try to access the same "chunk" with the wrong - * endian. Another good reason is that on some CPUs, the endian bit - * endianness for ALL fetches -- both code and data -- so the code - * will be fetched incorrectly. + * Some CPUs have special instructions which swap a 32-bit quantity in + * a single instruction (e.g. i486). It is probably best to avoid + * an "endian swapping control bit" in the CPU. One good reason is + * that interrupts would probably have to be disabled to ensure that + * an interrupt does not try to access the same "chunk" with the wrong + * endian. Another good reason is that on some CPUs, the endian bit + * endianness for ALL fetches -- both code and data -- so the code + * will be fetched incorrectly. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ static inline uint32_t CPU_swap_u32( uint32_t value @@ -1329,11 +1361,12 @@ static inline uint32_t CPU_swap_u32( } /** - * @ingroup CPUEndian - * This routine swaps a 16 bir quantity. + * @ingroup CPUEndian + * + * This routine swaps a 16 bir quantity. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped */ #define CPU_swap_u16( value ) \ (((value&0xff) << 8) | ((value >> 8)&0xff)) diff --git a/cpukit/score/cpu/no_cpu/rtems/score/cpu_asm.h b/cpukit/score/cpu/no_cpu/rtems/score/cpu_asm.h index e3797a93f9..94dfdc11e8 100644 --- a/cpukit/score/cpu/no_cpu/rtems/score/cpu_asm.h +++ b/cpukit/score/cpu/no_cpu/rtems/score/cpu_asm.h @@ -1,11 +1,15 @@ /** - * @file rtems/score/cpu_asm.h + * @file + * + * @brief No-CPU Assembly File + * + * Very loose template for an include file for the cpu_asm.? file + * if it is implemented as a ".S" file (preprocessed by cpp) instead + * of a ".s" file (preprocessed by gm4 or gasp). */ /* - * Very loose template for an include file for the cpu_asm.? file - * if it is implemented as a ".S" file (preprocessed by cpp) instead - * of a ".s" file (preprocessed by gm4 or gasp). + * * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). diff --git a/cpukit/score/cpu/no_cpu/rtems/score/types.h b/cpukit/score/cpu/no_cpu/rtems/score/types.h index 74240aa1e4..81ae8ccf15 100644 --- a/cpukit/score/cpu/no_cpu/rtems/score/types.h +++ b/cpukit/score/cpu/no_cpu/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief No-CPU Type Definitions + * + * This include file contains type definitions pertaining to the Intel + * no_cpu processor family. */ /* - * This include file contains type definitions pertaining to the Intel - * no_cpu processor family. - * * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/powerpc/rtems/asm.h b/cpukit/score/cpu/powerpc/rtems/asm.h index 594e3232bb..62571ad4eb 100644 --- a/cpukit/score/cpu/powerpc/rtems/asm.h +++ b/cpukit/score/cpu/powerpc/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file + * + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available diff --git a/cpukit/score/cpu/powerpc/rtems/powerpc/registers.h b/cpukit/score/cpu/powerpc/rtems/powerpc/registers.h index 7090203a02..a64291ed15 100644 --- a/cpukit/score/cpu/powerpc/rtems/powerpc/registers.h +++ b/cpukit/score/cpu/powerpc/rtems/powerpc/registers.h @@ -1,6 +1,12 @@ -/* +/** + * @file + * + * @brief PowerPc MSR and Registers Access Definitions + * * This file contains some powerpc MSR and registers access definitions. - * + */ + +/* * COPYRIGHT (C) 1999 Eric Valette (valette@crf.canon.fr) * Canon Centre Recherche France. * diff --git a/cpukit/score/cpu/powerpc/rtems/score/cpu.h b/cpukit/score/cpu/powerpc/rtems/score/cpu.h index e776f3ccf2..37d8c34bb9 100644 --- a/cpukit/score/cpu/powerpc/rtems/score/cpu.h +++ b/cpukit/score/cpu/powerpc/rtems/score/cpu.h @@ -1,5 +1,7 @@ /** - * @file rtems/score/cpu.h + * @file + * + * @brief PowerPC CPU Department Source */ /* diff --git a/cpukit/score/cpu/powerpc/rtems/score/powerpc.h b/cpukit/score/cpu/powerpc/rtems/score/powerpc.h index bee0695000..691c81ce83 100644 --- a/cpukit/score/cpu/powerpc/rtems/score/powerpc.h +++ b/cpukit/score/cpu/powerpc/rtems/score/powerpc.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/powerpc.h + * @file + * + * @brief IBM/Motorola Power Pc Definitions + * + * This file contains definitions for the IBM/Motorola PowerPC + * family members. */ /* - * This file contains definitions for the IBM/Motorola PowerPC - * family members. - * * Author: Andrew Bray <andy@i-cubed.co.uk> * * COPYRIGHT (c) 1995 by i-cubed ltd. diff --git a/cpukit/score/cpu/powerpc/rtems/score/types.h b/cpukit/score/cpu/powerpc/rtems/score/types.h index 1f61bfe6ef..0b5f16e6b9 100644 --- a/cpukit/score/cpu/powerpc/rtems/score/types.h +++ b/cpukit/score/cpu/powerpc/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief PowerPC CPU Type Definitions + * + * This include file contains type definitions pertaining to the PowerPC + * processor family. */ /* - * This include file contains type definitions pertaining to the PowerPC - * processor family. - * * Author: Andrew Bray <andy@i-cubed.co.uk> * * COPYRIGHT (c) 1995 by i-cubed ltd. diff --git a/cpukit/score/cpu/sh/rtems/asm.h b/cpukit/score/cpu/sh/rtems/asm.h index b2cbce6020..d7ad694365 100644 --- a/cpukit/score/cpu/sh/rtems/asm.h +++ b/cpukit/score/cpu/sh/rtems/asm.h @@ -1,20 +1,23 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * @note The spacing in the use of these macros + * is critical to them working as advertised. */ /* * Authors: Ralf Corsepius (corsepiu@faw.uni-ulm.de) and * Bernd Becker (becker@faw.uni-ulm.de) * - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available diff --git a/cpukit/score/cpu/sh/rtems/score/sh.h b/cpukit/score/cpu/sh/rtems/score/sh.h index 507a812bc7..e7ab9c0850 100644 --- a/cpukit/score/cpu/sh/rtems/score/sh.h +++ b/cpukit/score/cpu/sh/rtems/score/sh.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/sh.h + * @file + * + * @brief Hitachi SH CPU Department Source + * + * This include file contains information pertaining to the Hitachi SH + * processor. */ /* - * This include file contains information pertaining to the Hitachi SH - * processor. - * * Authors: Ralf Corsepius (corsepiu@faw.uni-ulm.de) and * Bernd Becker (becker@faw.uni-ulm.de) * diff --git a/cpukit/score/cpu/sh/rtems/score/sh_io.h b/cpukit/score/cpu/sh/rtems/score/sh_io.h index 6cb1ffcb0f..fcbdbcee42 100644 --- a/cpukit/score/cpu/sh/rtems/score/sh_io.h +++ b/cpukit/score/cpu/sh/rtems/score/sh_io.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/sh_io.h + * @file + * + * @brief Macros to Access Memory Mapped Devices on the SH7000-Architecture + * + * These are some macros to access memory mapped devices + * on the SH7000-architecture. */ /* - * These are some macros to access memory mapped devices - * on the SH7000-architecture. - * * Inspired from the linux kernel's include/asm/io.h * * Authors: Ralf Corsepius (corsepiu@faw.uni-ulm.de) and diff --git a/cpukit/score/cpu/sh/rtems/score/types.h b/cpukit/score/cpu/sh/rtems/score/types.h index 8f0b06c79c..5943a42bc9 100644 --- a/cpukit/score/cpu/sh/rtems/score/types.h +++ b/cpukit/score/cpu/sh/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief Hitachi SH CPU Type Definitions + * + * This include file contains information pertaining to the Hitachi SH + * processor. */ /* - * This include file contains information pertaining to the Hitachi SH - * processor. - * * Authors: Ralf Corsepius (corsepiu@faw.uni-ulm.de) and * Bernd Becker (becker@faw.uni-ulm.de) * diff --git a/cpukit/score/cpu/sparc/rtems/asm.h b/cpukit/score/cpu/sparc/rtems/asm.h index 530197eeb8..a2b11f63fc 100644 --- a/cpukit/score/cpu/sparc/rtems/asm.h +++ b/cpukit/score/cpu/sparc/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available diff --git a/cpukit/score/cpu/sparc/rtems/score/cpu.h b/cpukit/score/cpu/sparc/rtems/score/cpu.h index 6e88b9efcb..610235568b 100644 --- a/cpukit/score/cpu/sparc/rtems/score/cpu.h +++ b/cpukit/score/cpu/sparc/rtems/score/cpu.h @@ -1,8 +1,10 @@ /** - * @file rtems/score/cpu.h + * @file * - * This include file contains information pertaining to the port of - * the executive to the SPARC processor. + * @brief SPARC CPU Department Source + * + * This include file contains information pertaining to the port of + * the executive to the SPARC processor. */ /* @@ -27,94 +29,94 @@ extern "C" { /* conditional compilation parameters */ /** - * Should the calls to _Thread_Enable_dispatch be inlined? + * Should the calls to _Thread_Enable_dispatch be inlined? * - * - If TRUE, then they are inlined. - * - If FALSE, then a subroutine call is made. + * - If TRUE, then they are inlined. + * - If FALSE, then a subroutine call is made. * - * On this port, it is faster to inline _Thread_Enable_dispatch. + * On this port, it is faster to inline _Thread_Enable_dispatch. */ #define CPU_INLINE_ENABLE_DISPATCH TRUE /** - * Should the body of the search loops in _Thread_queue_Enqueue_priority - * be unrolled one time? In unrolled each iteration of the loop examines - * two "nodes" on the chain being searched. Otherwise, only one node - * is examined per iteration. + * Should the body of the search loops in _Thread_queue_Enqueue_priority + * be unrolled one time? In unrolled each iteration of the loop examines + * two "nodes" on the chain being searched. Otherwise, only one node + * is examined per iteration. * - * - If TRUE, then the loops are unrolled. - * - If FALSE, then the loops are not unrolled. + * - If TRUE, then the loops are unrolled. + * - If FALSE, then the loops are not unrolled. * - * This parameter could go either way on the SPARC. The interrupt flash - * code is relatively lengthy given the requirements for nops following - * writes to the psr. But if the clock speed were high enough, this would - * not represent a great deal of time. + * This parameter could go either way on the SPARC. The interrupt flash + * code is relatively lengthy given the requirements for nops following + * writes to the psr. But if the clock speed were high enough, this would + * not represent a great deal of time. */ #define CPU_UNROLL_ENQUEUE_PRIORITY TRUE /** - * Does the executive manage a dedicated interrupt stack in software? + * Does the executive manage a dedicated interrupt stack in software? * - * If TRUE, then a stack is allocated in _ISR_Handler_initialization. - * If FALSE, nothing is done. + * If TRUE, then a stack is allocated in _ISR_Handler_initialization. + * If FALSE, nothing is done. * - * The SPARC does not have a dedicated HW interrupt stack and one has - * been implemented in SW. + * The SPARC does not have a dedicated HW interrupt stack and one has + * been implemented in SW. */ #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE /** - * Does the CPU follow the simple vectored interrupt model? + * Does the CPU follow the simple vectored interrupt model? * - * - If TRUE, then RTEMS allocates the vector table it internally manages. - * - If FALSE, then the BSP is assumed to allocate and manage the vector - * table + * - If TRUE, then RTEMS allocates the vector table it internally manages. + * - If FALSE, then the BSP is assumed to allocate and manage the vector + * table * - * THe SPARC is a simple vectored architecture. Usually there is no - * PIC and the CPU directly vectors the interrupts. + * THe SPARC is a simple vectored architecture. Usually there is no + * PIC and the CPU directly vectors the interrupts. */ #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE -/** - * Does this CPU have hardware support for a dedicated interrupt stack? +/** + * Does this CPU have hardware support for a dedicated interrupt stack? * - * - If TRUE, then it must be installed during initialization. - * - If FALSE, then no installation is performed. + * - If TRUE, then it must be installed during initialization. + * - If FALSE, then no installation is performed. * - * The SPARC does not have a dedicated HW interrupt stack. + * The SPARC does not have a dedicated HW interrupt stack. */ #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE /** - * Do we allocate a dedicated interrupt stack in the Interrupt Manager? + * Do we allocate a dedicated interrupt stack in the Interrupt Manager? * - * - If TRUE, then the memory is allocated during initialization. - * - If FALSE, then the memory is allocated during initialization. + * - If TRUE, then the memory is allocated during initialization. + * - If FALSE, then the memory is allocated during initialization. * - * The SPARC does not have hardware support for switching to a - * dedicated interrupt stack. The port includes support for doing this - * in software. + * The SPARC does not have hardware support for switching to a + * dedicated interrupt stack. The port includes support for doing this + * in software. * */ #define CPU_ALLOCATE_INTERRUPT_STACK TRUE /** - * Does the RTEMS invoke the user's ISR with the vector number and - * a pointer to the saved interrupt frame (1) or just the vector - * number (0)? + * Does the RTEMS invoke the user's ISR with the vector number and + * a pointer to the saved interrupt frame (1) or just the vector + * number (0)? * - * The SPARC port does not pass an Interrupt Stack Frame pointer to - * interrupt handlers. + * The SPARC port does not pass an Interrupt Stack Frame pointer to + * interrupt handlers. */ #define CPU_ISR_PASSES_FRAME_POINTER 0 /** - * Does the CPU have hardware floating point? + * Does the CPU have hardware floating point? * - * - If TRUE, then the FLOATING_POINT task attribute is supported. - * - If FALSE, then the FLOATING_POINT task attribute is ignored. + * - If TRUE, then the FLOATING_POINT task attribute is supported. + * - If FALSE, then the FLOATING_POINT task attribute is ignored. * - * This is set based upon the multilib settings. + * This is set based upon the multilib settings. */ #if ( SPARC_HAS_FPU == 1 ) #define CPU_HARDWARE_FP TRUE @@ -123,123 +125,123 @@ extern "C" { #endif /** - * The SPARC GCC port does not have a software floating point library - * that requires RTEMS assistance. + * The SPARC GCC port does not have a software floating point library + * that requires RTEMS assistance. */ #define CPU_SOFTWARE_FP FALSE /** - * Are all tasks FLOATING_POINT tasks implicitly? + * Are all tasks FLOATING_POINT tasks implicitly? * - * - If TRUE, then the FLOATING_POINT task attribute is assumed. - * - If FALSE, then the FLOATING_POINT task attribute is followed. + * - If TRUE, then the FLOATING_POINT task attribute is assumed. + * - If FALSE, then the FLOATING_POINT task attribute is followed. * - * The SPARC GCC port does not implicitly use floating point registers. + * The SPARC GCC port does not implicitly use floating point registers. */ #define CPU_ALL_TASKS_ARE_FP FALSE /** - * Should the IDLE task have a floating point context? + * Should the IDLE task have a floating point context? * - * - If TRUE, then the IDLE task is created as a FLOATING_POINT task - * and it has a floating point context which is switched in and out. - * - If FALSE, then the IDLE task does not have a floating point context. + * - If TRUE, then the IDLE task is created as a FLOATING_POINT task + * and it has a floating point context which is switched in and out. + * - If FALSE, then the IDLE task does not have a floating point context. * - * The IDLE task does not have to be floating point on the SPARC. + * The IDLE task does not have to be floating point on the SPARC. */ #define CPU_IDLE_TASK_IS_FP FALSE /** - * Should the saving of the floating point registers be deferred - * until a context switch is made to another different floating point - * task? + * Should the saving of the floating point registers be deferred + * until a context switch is made to another different floating point + * task? * - * - If TRUE, then the floating point context will not be stored until - * necessary. It will remain in the floating point registers and not - * disturned until another floating point task is switched to. + * - If TRUE, then the floating point context will not be stored until + * necessary. It will remain in the floating point registers and not + * disturned until another floating point task is switched to. * - * - If FALSE, then the floating point context is saved when a floating - * point task is switched out and restored when the next floating point - * task is restored. The state of the floating point registers between - * those two operations is not specified. + * - If FALSE, then the floating point context is saved when a floating + * point task is switched out and restored when the next floating point + * task is restored. The state of the floating point registers between + * those two operations is not specified. * - * On the SPARC, we can disable the FPU for integer only tasks so - * it is safe to defer floating point context switches. + * On the SPARC, we can disable the FPU for integer only tasks so + * it is safe to defer floating point context switches. */ #define CPU_USE_DEFERRED_FP_SWITCH TRUE /** - * Does this port provide a CPU dependent IDLE task implementation? + * Does this port provide a CPU dependent IDLE task implementation? * - * - If TRUE, then the routine _CPU_Thread_Idle_body - * must be provided and is the default IDLE thread body instead of - * _CPU_Thread_Idle_body. + * - If TRUE, then the routine _CPU_Thread_Idle_body + * must be provided and is the default IDLE thread body instead of + * _CPU_Thread_Idle_body. * - * - If FALSE, then use the generic IDLE thread body if the BSP does - * not provide one. + * - If FALSE, then use the generic IDLE thread body if the BSP does + * not provide one. * - * The SPARC architecture does not have a low power or halt instruction. - * It is left to the BSP and/or CPU specific code to provide an IDLE - * thread body which is aware of low power modes. + * The SPARC architecture does not have a low power or halt instruction. + * It is left to the BSP and/or CPU specific code to provide an IDLE + * thread body which is aware of low power modes. */ #define CPU_PROVIDES_IDLE_THREAD_BODY FALSE /** - * Does the stack grow up (toward higher addresses) or down - * (toward lower addresses)? + * Does the stack grow up (toward higher addresses) or down + * (toward lower addresses)? * - * - If TRUE, then the grows upward. - * - If FALSE, then the grows toward smaller addresses. + * - If TRUE, then the grows upward. + * - If FALSE, then the grows toward smaller addresses. * - * The stack grows to lower addresses on the SPARC. + * The stack grows to lower addresses on the SPARC. */ #define CPU_STACK_GROWS_UP FALSE /** - * The following is the variable attribute used to force alignment - * of critical data structures. On some processors it may make - * sense to have these aligned on tighter boundaries than - * the minimum requirements of the compiler in order to have as - * much of the critical data area as possible in a cache line. + * The following is the variable attribute used to force alignment + * of critical data structures. On some processors it may make + * sense to have these aligned on tighter boundaries than + * the minimum requirements of the compiler in order to have as + * much of the critical data area as possible in a cache line. * - * The SPARC does not appear to have particularly strict alignment - * requirements. This value was chosen to take advantages of caches. + * The SPARC does not appear to have particularly strict alignment + * requirements. This value was chosen to take advantages of caches. */ #define CPU_STRUCTURE_ALIGNMENT __attribute__ ((aligned (16))) #define CPU_TIMESTAMP_USE_INT64_INLINE TRUE /** - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * The SPARC is big endian. + * The SPARC is big endian. */ #define CPU_BIG_ENDIAN TRUE /** - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * The SPARC is NOT little endian. + * The SPARC is NOT little endian. */ #define CPU_LITTLE_ENDIAN FALSE /** - * The following defines the number of bits actually used in the - * interrupt field of the task mode. How those bits map to the - * CPU interrupt levels is defined by the routine _CPU_ISR_Set_level(). + * The following defines the number of bits actually used in the + * interrupt field of the task mode. How those bits map to the + * CPU interrupt levels is defined by the routine _CPU_ISR_Set_level(). * - * The SPARC has 16 interrupt levels in the PIL field of the PSR. + * The SPARC has 16 interrupt levels in the PIL field of the PSR. */ #define CPU_MODES_INTERRUPT_MASK 0x0000000F #ifndef ASM /** - * This structure represents the organization of the minimum stack frame - * for the SPARC. More framing information is required in certain situaions - * such as when there are a large number of out parameters or when the callee - * must save floating point registers. + * This structure represents the organization of the minimum stack frame + * for the SPARC. More framing information is required in certain situaions + * such as when there are a large number of out parameters or when the callee + * must save floating point registers. */ typedef struct { /** This is the offset of the l0 register. */ @@ -278,8 +280,8 @@ typedef struct { void *structure_return_address; /* - * The following are for the callee to save the register arguments in - * should this be necessary. + * The following are for the callee to save the register arguments in + * should this be necessary. */ /** This is the offset of the register for saved argument 0. */ uint32_t saved_arg0; @@ -354,35 +356,36 @@ typedef struct { /** * @defgroup Contexts SPARC Context Structures * - * Generally there are 2 types of context to save. - * + Interrupt registers to save - * + Task level registers to save + * @ingroup Score + * + * Generally there are 2 types of context to save. + * + Interrupt registers to save + * + Task level registers to save * - * This means we have the following 3 context items: - * + task level context stuff:: Context_Control - * + floating point task stuff:: Context_Control_fp - * + special interrupt level context :: Context_Control_interrupt + * This means we have the following 3 context items: + * + task level context stuff:: Context_Control + * + floating point task stuff:: Context_Control_fp + * + special interrupt level context :: Context_Control_interrupt * - * On the SPARC, we are relatively conservative in that we save most - * of the CPU state in the context area. The ET (enable trap) bit and - * the CWP (current window pointer) fields of the PSR are considered - * system wide resources and are not maintained on a per-thread basis. + * On the SPARC, we are relatively conservative in that we save most + * of the CPU state in the context area. The ET (enable trap) bit and + * the CWP (current window pointer) fields of the PSR are considered + * system wide resources and are not maintained on a per-thread basis. */ +/**@{**/ #ifndef ASM /** - * @brief SPARC Basic Context + * @brief SPARC basic context. * - * @ingroup Contexts - * - * This structure defines the basic integer and processor state context - * for the SPARC architecture. + * This structure defines the basic integer and processor state context + * for the SPARC architecture. */ typedef struct { /** - * Using a double g0_g1 will put everything in this structure on a - * double word boundary which allows us to use double word loads - * and stores safely in the context switch. + * Using a double g0_g1 will put everything in this structure on a + * double word boundary which allows us to use double word loads + * and stores safely in the context switch. */ double g0_g1; /** This will contain the contents of the g2 register. */ @@ -460,9 +463,9 @@ typedef struct { } Context_Control; /** - * This macro provides a CPU independent way for RTEMS to access the - * stack pointer in a context structure. The actual name and offset is - * CPU architecture dependent. + * This macro provides a CPU independent way for RTEMS to access the + * stack pointer in a context structure. The actual name and offset is + * CPU architecture dependent. */ #define _CPU_Context_Get_SP( _context ) \ (_context)->o6_sp @@ -551,11 +554,9 @@ typedef struct { #ifndef ASM /** - * @brief SPARC Basic Context - * - * @ingroup Contexts + * @brief SPARC basic context. * - * This structure defines floating point context area. + * This structure defines floating point context area. */ typedef struct { /** This will contain the contents of the f0 and f1 register. */ @@ -640,13 +641,15 @@ typedef struct { #ifndef ASM +/** @} */ + /** - * @brief Interrupt Stack Frame (ISF) + * @brief Interrupt stack frame (ISF). * - * Context saved on stack for an interrupt. + * Context saved on stack for an interrupt. * - * @note The PSR, PC, and NPC are only saved in this structure for the - * benefit of the user's handler. + * NOTE: The PSR, PC, and NPC are only saved in this structure for the + * benefit of the user's handler. */ typedef struct { /** On an interrupt, we must save the minimum stack frame. */ @@ -748,27 +751,27 @@ typedef struct { #ifndef ASM /** - * This variable is contains the initialize context for the FP unit. - * It is filled in by _CPU_Initialize and copied into the task's FP - * context area during _CPU_Context_Initialize. + * This variable is contains the initialize context for the FP unit. + * It is filled in by _CPU_Initialize and copied into the task's FP + * context area during _CPU_Context_Initialize. */ SCORE_EXTERN Context_Control_fp _CPU_Null_fp_context CPU_STRUCTURE_ALIGNMENT; /** - * This flag is context switched with each thread. It indicates - * that THIS thread has an _ISR_Dispatch stack frame on its stack. - * By using this flag, we can avoid nesting more interrupt dispatching - * attempts on a previously interrupted thread's stack. + * This flag is context switched with each thread. It indicates + * that THIS thread has an _ISR_Dispatch stack frame on its stack. + * By using this flag, we can avoid nesting more interrupt dispatching + * attempts on a previously interrupted thread's stack. */ SCORE_EXTERN volatile uint32_t _CPU_ISR_Dispatch_disable; /** - * The following type defines an entry in the SPARC's trap table. + * The following type defines an entry in the SPARC's trap table. * - * @note The instructions chosen are RTEMS dependent although one is - * obligated to use two of the four instructions to perform a - * long jump. The other instructions load one register with the - * trap type (a.k.a. vector) and another with the psr. + * NOTE: The instructions chosen are RTEMS dependent although one is + * obligated to use two of the four instructions to perform a + * long jump. The other instructions load one register with the + * trap type (a.k.a. vector) and another with the psr. */ typedef struct { /** This will contain a "mov %psr, %l0" instruction. */ @@ -782,52 +785,52 @@ typedef struct { } CPU_Trap_table_entry; /** - * This is the set of opcodes for the instructions loaded into a trap - * table entry. The routine which installs a handler is responsible - * for filling in the fields for the _handler address and the _vector - * trap type. + * This is the set of opcodes for the instructions loaded into a trap + * table entry. The routine which installs a handler is responsible + * for filling in the fields for the _handler address and the _vector + * trap type. * - * The constants following this structure are masks for the fields which - * must be filled in when the handler is installed. + * The constants following this structure are masks for the fields which + * must be filled in when the handler is installed. */ extern const CPU_Trap_table_entry _CPU_Trap_slot_template; /** - * The size of the floating point context area. + * The size of the floating point context area. */ #define CPU_CONTEXT_FP_SIZE sizeof( Context_Control_fp ) #endif /** - * Amount of extra stack (above minimum stack size) required by - * MPCI receive server thread. Remember that in a multiprocessor - * system this thread must exist and be able to process all directives. + * Amount of extra stack (above minimum stack size) required by + * MPCI receive server thread. Remember that in a multiprocessor + * system this thread must exist and be able to process all directives. */ #define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 1024 /** - * This defines the number of entries in the ISR_Vector_table managed - * by the executive. - * - * On the SPARC, there are really only 256 vectors. However, the executive - * has no easy, fast, reliable way to determine which traps are synchronous - * and which are asynchronous. By default, synchronous traps return to the - * instruction which caused the interrupt. So if you install a software - * trap handler as an executive interrupt handler (which is desirable since - * RTEMS takes care of window and register issues), then the executive needs - * to know that the return address is to the trap rather than the instruction - * following the trap. - * - * So vectors 0 through 255 are treated as regular asynchronous traps which - * provide the "correct" return address. Vectors 256 through 512 are assumed - * by the executive to be synchronous and to require that the return address - * be fudged. - * - * If you use this mechanism to install a trap handler which must reexecute - * the instruction which caused the trap, then it should be installed as - * an asynchronous trap. This will avoid the executive changing the return - * address. + * This defines the number of entries in the ISR_Vector_table managed + * by the executive. + * + * On the SPARC, there are really only 256 vectors. However, the executive + * has no easy, fast, reliable way to determine which traps are synchronous + * and which are asynchronous. By default, synchronous traps return to the + * instruction which caused the interrupt. So if you install a software + * trap handler as an executive interrupt handler (which is desirable since + * RTEMS takes care of window and register issues), then the executive needs + * to know that the return address is to the trap rather than the instruction + * following the trap. + * + * So vectors 0 through 255 are treated as regular asynchronous traps which + * provide the "correct" return address. Vectors 256 through 512 are assumed + * by the executive to be synchronous and to require that the return address + * be fudged. + * + * If you use this mechanism to install a trap handler which must reexecute + * the instruction which caused the trap, then it should be installed as + * an asynchronous trap. This will avoid the executive changing the return + * address. */ #define CPU_INTERRUPT_NUMBER_OF_VECTORS 256 @@ -838,18 +841,18 @@ extern const CPU_Trap_table_entry _CPU_Trap_slot_template; #define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER 511 /** - * This is the bit step in a vector number to indicate it is being installed - * as a synchronous trap. + * This is the bit step in a vector number to indicate it is being installed + * as a synchronous trap. */ #define SPARC_SYNCHRONOUS_TRAP_BIT_MASK 0x100 /** - * This macro indicates that @a _trap as an asynchronous trap. + * This macro indicates that @a _trap as an asynchronous trap. */ #define SPARC_ASYNCHRONOUS_TRAP( _trap ) (_trap) /** - * This macro indicates that @a _trap as a synchronous trap. + * This macro indicates that @a _trap as a synchronous trap. */ #define SPARC_SYNCHRONOUS_TRAP( _trap ) ((_trap) + 256 ) @@ -859,69 +862,69 @@ extern const CPU_Trap_table_entry _CPU_Trap_slot_template; #define SPARC_REAL_TRAP_NUMBER( _trap ) ((_trap) % 256) /** - * This is defined if the port has a special way to report the ISR nesting - * level. Most ports maintain the variable _ISR_Nest_level. + * This is defined if the port has a special way to report the ISR nesting + * level. Most ports maintain the variable _ISR_Nest_level. */ #define CPU_PROVIDES_ISR_IS_IN_PROGRESS FALSE /** - * Should be large enough to run all tests. This ensures - * that a "reasonable" small application should not have any problems. + * Should be large enough to run all tests. This ensures + * that a "reasonable" small application should not have any problems. * - * This appears to be a fairly generous number for the SPARC since - * represents a call depth of about 20 routines based on the minimum - * stack frame. + * This appears to be a fairly generous number for the SPARC since + * represents a call depth of about 20 routines based on the minimum + * stack frame. */ #define CPU_STACK_MINIMUM_SIZE (1024*4) #define CPU_SIZEOF_POINTER 4 /** - * CPU's worst alignment requirement for data types on a byte boundary. This - * alignment does not take into account the requirements for the stack. + * CPU's worst alignment requirement for data types on a byte boundary. This + * alignment does not take into account the requirements for the stack. * - * On the SPARC, this is required for double word loads and stores. + * On the SPARC, this is required for double word loads and stores. */ #define CPU_ALIGNMENT 8 /** - * This number corresponds to the byte alignment requirement for the - * heap handler. This alignment requirement may be stricter than that - * for the data types alignment specified by CPU_ALIGNMENT. It is - * common for the heap to follow the same alignment requirement as - * CPU_ALIGNMENT. If the CPU_ALIGNMENT is strict enough for the heap, - * then this should be set to CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for the + * heap handler. This alignment requirement may be stricter than that + * for the data types alignment specified by CPU_ALIGNMENT. It is + * common for the heap to follow the same alignment requirement as + * CPU_ALIGNMENT. If the CPU_ALIGNMENT is strict enough for the heap, + * then this should be set to CPU_ALIGNMENT. * - * @note This does not have to be a power of 2. It does have to - * be greater or equal to than CPU_ALIGNMENT. + * NOTE: This does not have to be a power of 2. It does have to + * be greater or equal to than CPU_ALIGNMENT. */ #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for memory - * buffers allocated by the partition manager. This alignment requirement - * may be stricter than that for the data types alignment specified by - * CPU_ALIGNMENT. It is common for the partition to follow the same - * alignment requirement as CPU_ALIGNMENT. If the CPU_ALIGNMENT is strict - * enough for the partition, then this should be set to CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for memory + * buffers allocated by the partition manager. This alignment requirement + * may be stricter than that for the data types alignment specified by + * CPU_ALIGNMENT. It is common for the partition to follow the same + * alignment requirement as CPU_ALIGNMENT. If the CPU_ALIGNMENT is strict + * enough for the partition, then this should be set to CPU_ALIGNMENT. * - * @note This does not have to be a power of 2. It does have to - * be greater or equal to than CPU_ALIGNMENT. + * NOTE: This does not have to be a power of 2. It does have to + * be greater or equal to than CPU_ALIGNMENT. */ #define CPU_PARTITION_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by CPU_ALIGNMENT. If the CPU_ALIGNMENT - * is strict enough for the stack, then this should be set to 0. + * This number corresponds to the byte alignment requirement for the + * stack. This alignment requirement may be stricter than that for the + * data types alignment specified by CPU_ALIGNMENT. If the CPU_ALIGNMENT + * is strict enough for the stack, then this should be set to 0. * - * @note This must be a power of 2 either 0 or greater than CPU_ALIGNMENT. + * NOTE: This must be a power of 2 either 0 or greater than CPU_ALIGNMENT. * - * The alignment restrictions for the SPARC are not that strict but this - * should unsure that the stack is always sufficiently alignment that the - * window overflow, underflow, and flush routines can use double word loads - * and stores. + * The alignment restrictions for the SPARC are not that strict but this + * should unsure that the stack is always sufficiently alignment that the + * window overflow, underflow, and flush routines can use double word loads + * and stores. */ #define CPU_STACK_ALIGNMENT 16 @@ -932,49 +935,49 @@ extern const CPU_Trap_table_entry _CPU_Trap_slot_template; */ /** - * Support routine to initialize the RTEMS vector table after it is allocated. + * Support routine to initialize the RTEMS vector table after it is allocated. */ #define _CPU_Initialize_vectors() /** - * Disable all interrupts for a critical section. The previous - * level is returned in _level. + * Disable all interrupts for a critical section. The previous + * level is returned in _level. */ #define _CPU_ISR_Disable( _level ) \ (_level) = sparc_disable_interrupts() /** - * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). - * This indicates the end of a critical section. The parameter - * _level is not modified. + * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). + * This indicates the end of a critical section. The parameter + * _level is not modified. */ #define _CPU_ISR_Enable( _level ) \ sparc_enable_interrupts( _level ) /** - * This temporarily restores the interrupt to _level before immediately - * disabling them again. This is used to divide long critical - * sections into two or more parts. The parameter _level is not - * modified. + * This temporarily restores the interrupt to _level before immediately + * disabling them again. This is used to divide long critical + * sections into two or more parts. The parameter _level is not + * modified. */ #define _CPU_ISR_Flash( _level ) \ sparc_flash_interrupts( _level ) /** - * Map interrupt level in task mode onto the hardware that the CPU - * actually provides. Currently, interrupt levels which do not - * map onto the CPU in a straight fashion are undefined. + * Map interrupt level in task mode onto the hardware that the CPU + * actually provides. Currently, interrupt levels which do not + * map onto the CPU in a straight fashion are undefined. */ #define _CPU_ISR_Set_level( _newlevel ) \ sparc_enable_interrupts( _newlevel << 8) /** - * @brief Obtain the Current Interrupt Disable Level + * @brief Obtain the current interrupt disable level. * - * This method is invoked to return the current interrupt disable level. + * This method is invoked to return the current interrupt disable level. * - * @return This method returns the current interrupt disable level. - */ + * @return This method returns the current interrupt disable level. + */ uint32_t _CPU_ISR_Get_level( void ); /* end of ISR handler macros */ @@ -982,15 +985,15 @@ uint32_t _CPU_ISR_Get_level( void ); /* Context handler macros */ /** - * Initialize the context to a state suitable for starting a - * task after a context restore operation. Generally, this - * involves: + * Initialize the context to a state suitable for starting a + * task after a context restore operation. Generally, this + * involves: * - * - setting a starting address - * - preparing the stack - * - preparing the stack and frame pointers - * - setting the proper interrupt level in the context - * - initializing the floating point context + * - setting a starting address + * - preparing the stack + * - preparing the stack and frame pointers + * - setting the proper interrupt level in the context + * - initializing the floating point context * * @param[in] the_context points to the context area * @param[in] stack_base is the low address of the allocated stack area @@ -999,7 +1002,7 @@ uint32_t _CPU_ISR_Get_level( void ); * @param[in] entry_point is the task's entry point * @param[in] is_fp is set to TRUE if the task is a floating point task * - * @note Implemented as a subroutine for the SPARC port. + * NOTE: Implemented as a subroutine for the SPARC port. */ void _CPU_Context_Initialize( Context_Control *the_context, @@ -1011,17 +1014,17 @@ void _CPU_Context_Initialize( ); /** - * This macro is invoked from _Thread_Handler to do whatever CPU - * specific magic is required that must be done in the context of - * the thread when it starts. + * This macro is invoked from _Thread_Handler to do whatever CPU + * specific magic is required that must be done in the context of + * the thread when it starts. * - * On the SPARC, this is setting the frame pointer so GDB is happy. - * Make GDB stop unwinding at _Thread_Handler, previous register window - * Frame pointer is 0 and calling address must be a function with starting - * with a SAVE instruction. If return address is leaf-function (no SAVE) - * GDB will not look at prev reg window fp. + * On the SPARC, this is setting the frame pointer so GDB is happy. + * Make GDB stop unwinding at _Thread_Handler, previous register window + * Frame pointer is 0 and calling address must be a function with starting + * with a SAVE instruction. If return address is leaf-function (no SAVE) + * GDB will not look at prev reg window fp. * - * _Thread_Handler is known to start with SAVE. + * _Thread_Handler is known to start with SAVE. */ #define _CPU_Context_Initialization_at_thread_begin() \ do { \ @@ -1029,30 +1032,30 @@ void _CPU_Context_Initialize( } while (0) /** - * This routine is responsible for somehow restarting the currently - * executing task. + * This routine is responsible for somehow restarting the currently + * executing task. * - * On the SPARC, this is is relatively painless but requires a small - * amount of wrapper code before using the regular restore code in - * of the context switch. + * On the SPARC, this is is relatively painless but requires a small + * amount of wrapper code before using the regular restore code in + * of the context switch. */ #define _CPU_Context_Restart_self( _the_context ) \ _CPU_Context_restore( (_the_context) ); /** - * The FP context area for the SPARC is a simple structure and nothing - * special is required to find the "starting load point" + * The FP context area for the SPARC is a simple structure and nothing + * special is required to find the "starting load point" */ #define _CPU_Context_Fp_start( _base, _offset ) \ ( (void *) _Addresses_Add_offset( (_base), (_offset) ) ) /** - * This routine initializes the FP context area passed to it to. + * This routine initializes the FP context area passed to it to. * - * The SPARC allows us to use the simple initialization model - * in which an "initial" FP context was saved into _CPU_Null_fp_context - * at CPU initialization and it is simply copied into the destination - * context. + * The SPARC allows us to use the simple initialization model + * in which an "initial" FP context was saved into _CPU_Null_fp_context + * at CPU initialization and it is simply copied into the destination + * context. */ #define _CPU_Context_Initialize_fp( _destination ) \ do { \ @@ -1064,9 +1067,9 @@ void _CPU_Context_Initialize( /* Fatal Error manager macros */ /** - * This routine copies _error into a known place -- typically a stack - * location or a register, optionally disables interrupts, and - * halts/stops the CPU. + * This routine copies _error into a known place -- typically a stack + * location or a register, optionally disables interrupts, and + * halts/stops the CPU. */ #define _CPU_Fatal_halt( _error ) \ do { \ @@ -1083,14 +1086,14 @@ void _CPU_Context_Initialize( #if ( SPARC_HAS_BITSCAN == 0 ) /** - * The SPARC port uses the generic C algorithm for bitfield scan if the - * CPU model does not have a scan instruction. + * The SPARC port uses the generic C algorithm for bitfield scan if the + * CPU model does not have a scan instruction. */ #define CPU_USE_GENERIC_BITFIELD_CODE TRUE /** - * The SPARC port uses the generic C algorithm for bitfield scan if the - * CPU model does not have a scan instruction. Thus is needs the generic - * data table used by that algorithm. + * The SPARC port uses the generic C algorithm for bitfield scan if the + * CPU model does not have a scan instruction. Thus is needs the generic + * data table used by that algorithm. */ #define CPU_USE_GENERIC_BITFIELD_DATA TRUE #else @@ -1102,21 +1105,21 @@ void _CPU_Context_Initialize( /* functions */ /** - * @brief SPARC Specific Initialization + * @brief SPARC specific initialization. * - * This routine performs CPU dependent initialization. + * This routine performs CPU dependent initialization. */ void _CPU_Initialize(void); /** - * @brief SPARC Specific Raw ISR Installer + * @brief SPARC specific raw ISR installer. * - * This routine installs @a new_handler to be directly called from the trap - * table. + * This routine installs @a new_handler to be directly called from the trap + * table. * - * @param[in] vector is the vector number - * @param[in] new_handler is the new ISR handler - * @param[in] old_handler will contain the old ISR handler + * @param[in] vector is the vector number + * @param[in] new_handler is the new ISR handler + * @param[in] old_handler will contain the old ISR handler */ void _CPU_ISR_install_raw_handler( uint32_t vector, @@ -1125,13 +1128,13 @@ void _CPU_ISR_install_raw_handler( ); /** - * @brief SPARC Specific RTEMS ISR Installer + * @brief SPARC specific RTEMS ISR installer. * - * This routine installs an interrupt vector. + * This routine installs an interrupt vector. * - * @param[in] vector is the vector number - * @param[in] new_handler is the new ISR handler - * @param[in] old_handler will contain the old ISR handler + * @param[in] vector is the vector number + * @param[in] new_handler is the new ISR handler + * @param[in] old_handler will contain the old ISR handler */ void _CPU_ISR_install_vector( @@ -1141,12 +1144,12 @@ void _CPU_ISR_install_vector( ); /** - * @brief SPARC Specific Context Switch + * @brief SPARC specific context switch. * - * This routine switches from the run context to the heir context. + * This routine switches from the run context to the heir context. * - * @param[in] run is the currently executing thread - * @param[in] heir will become the currently executing thread + * @param[in] run is the currently executing thread + * @param[in] heir will become the currently executing thread */ void _CPU_Context_switch( Context_Control *run, @@ -1154,12 +1157,12 @@ void _CPU_Context_switch( ); /** - * @brief SPARC Specific Context Restore + * @brief SPARC specific context restore. * - * This routine is generally used only to restart self in an - * efficient manner. + * This routine is generally used only to restart self in an + * efficient manner. * - * @param[in] new_context is the context to restore + * @param[in] new_context is the context to restore */ void _CPU_Context_restore( Context_Control *new_context @@ -1167,14 +1170,14 @@ void _CPU_Context_restore( #if defined(RTEMS_SMP) /** - * @brief SPARC Specific Method to Switch to First Task + * @brief SPARC specific method to switch to first task. * - * This routine is only used to switch to the first task on a - * secondary core in an SMP configuration. We do not need to - * flush all the windows and, in fact, this can be dangerous - * as they may or may not be initialized properly. + * This routine is only used to switch to the first task on a + * secondary core in an SMP configuration. We do not need to + * flush all the windows and, in fact, this can be dangerous + * as they may or may not be initialized properly. * - * @param[in] new_context is the context to restore + * @param[in] new_context is the context to restore */ void _CPU_Context_switch_to_first_task_smp( Context_Control *new_context @@ -1183,7 +1186,7 @@ void _CPU_Context_restore( /** * Macro to access memory and bypass the cache. * - * @note address space 1 is uncacheable + * NOTE: address space 1 is uncacheable */ #define SMP_CPU_SWAP( _address, _value, _previous ) \ do { \ @@ -1200,22 +1203,22 @@ void _CPU_Context_restore( #endif /** - * @brief SPARC Specific Save FPU Method + * @brief SPARC specific save FPU method. * - * This routine saves the floating point context passed to it. + * This routine saves the floating point context passed to it. * - * @param[in] fp_context_ptr is the area to save into + * @param[in] fp_context_ptr is the area to save into */ void _CPU_Context_save_fp( Context_Control_fp **fp_context_ptr ); /** - * @brief SPARC Specific Rstore FPU Method + * @brief SPARC specific restore FPU method. * - * This routine restores the floating point context passed to it. + * This routine restores the floating point context passed to it. * - * @param[in] fp_context_ptr is the area to restore from + * @param[in] fp_context_ptr is the area to restore from */ void _CPU_Context_restore_fp( Context_Control_fp **fp_context_ptr @@ -1236,24 +1239,24 @@ static inline void _CPU_Exception_frame_print( } /** - * @brief SPARC Specific Method to Endian Swap an uint32_t + * @brief SPARC specific method to endian swap an uint32_t. * - * The following routine swaps the endian format of an unsigned int. - * It must be static because it is referenced indirectly. + * The following routine swaps the endian format of an unsigned int. + * It must be static because it is referenced indirectly. * - * @param[in] value is the value to endian swap + * @param[in] value is the value to endian swap * - * This version will work on any processor, but if you come across a better - * way for the SPARC PLEASE use it. The most common way to swap a 32-bit - * entity as shown below is not any more efficient on the SPARC. + * This version will work on any processor, but if you come across a better + * way for the SPARC PLEASE use it. The most common way to swap a 32-bit + * entity as shown below is not any more efficient on the SPARC. * - * - swap least significant two bytes with 16-bit rotate - * - swap upper and lower 16-bits - * - swap most significant two bytes with 16-bit rotate + * - swap least significant two bytes with 16-bit rotate + * - swap upper and lower 16-bits + * - swap most significant two bytes with 16-bit rotate * - * It is not obvious how the SPARC can do significantly better than the - * generic code. gcc 2.7.0 only generates about 12 instructions for the - * following code at optimization level four (i.e. -O4). + * It is not obvious how the SPARC can do significantly better than the + * generic code. gcc 2.7.0 only generates about 12 instructions for the + * following code at optimization level four (i.e. -O4). */ static inline uint32_t CPU_swap_u32( uint32_t value @@ -1271,11 +1274,11 @@ static inline uint32_t CPU_swap_u32( } /** - * @brief SPARC Specific Method to Endian Swap an uint16_t + * @brief SPARC specific method to endian swap an uint16_t. * - * The following routine swaps the endian format of a uint16_t. + * The following routine swaps the endian format of a uint16_t. * - * @param[in] value is the value to endian swap + * @param[in] value is the value to endian swap */ #define CPU_swap_u16( value ) \ (((value&0xff) << 8) | ((value >> 8)&0xff)) diff --git a/cpukit/score/cpu/sparc/rtems/score/sparc.h b/cpukit/score/cpu/sparc/rtems/score/sparc.h index 6b7936f2e5..7436cb8d2d 100644 --- a/cpukit/score/cpu/sparc/rtems/score/sparc.h +++ b/cpukit/score/cpu/sparc/rtems/score/sparc.h @@ -1,5 +1,8 @@ /** - * @file rtems/score/sparc.h + * @file + * + * @brief Information Required to Build RTEMS for a Particular Member + * of the SPARC Family * * This file contains the information required to build * RTEMS for a particular member of the SPARC family. It does @@ -42,25 +45,25 @@ extern "C" { */ /** - * Some higher end SPARCs have a bitscan instructions. It would - * be nice to take advantage of them. Right now, there is no - * port to a CPU model with this feature and no (untested) code - * that is based on this feature flag. + * Some higher end SPARCs have a bitscan instructions. It would + * be nice to take advantage of them. Right now, there is no + * port to a CPU model with this feature and no (untested) code + * that is based on this feature flag. */ #define SPARC_HAS_BITSCAN 0 /** - * This should be OK until a port to a higher end SPARC processor - * is made that has more than 8 register windows. If this cannot - * be determined based on multilib settings (v7/v8/v9), then the - * cpu_asm.S code that depends on this will have to move to libcpu. + * This should be OK until a port to a higher end SPARC processor + * is made that has more than 8 register windows. If this cannot + * be determined based on multilib settings (v7/v8/v9), then the + * cpu_asm.S code that depends on this will have to move to libcpu. */ #define SPARC_NUMBER_OF_REGISTER_WINDOWS 8 /** - * This macro indicates whether this multilib variation has hardware - * floating point or not. We use the gcc cpp predefine _SOFT_FLOAT - * to determine that. + * This macro indicates whether this multilib variation has hardware + * floating point or not. We use the gcc cpp predefine _SOFT_FLOAT + * to determine that. */ #if defined(_SOFT_FLOAT) #define SPARC_HAS_FPU 0 @@ -69,8 +72,8 @@ extern "C" { #endif /** - * This macro contains a string describing the multilib variant being - * build. + * This macro contains a string describing the multilib variant being + * build. */ #if SPARC_HAS_FPU #define CPU_MODEL_NAME "w/FPU" @@ -79,7 +82,7 @@ extern "C" { #endif /** - * Define the name of the CPU family. + * Define the name of the CPU family. */ #define CPU_NAME "SPARC" @@ -88,9 +91,9 @@ extern "C" { */ /** - * PSR masks and starting bit positions + * PSR masks and starting bit positions * - * @note Reserved bits are ignored. + * NOTE: Reserved bits are ignored. */ #if (SPARC_NUMBER_OF_REGISTER_WINDOWS == 8) #define SPARC_PSR_CWP_MASK 0x07 /* bits 0 - 4 */ @@ -145,7 +148,7 @@ extern "C" { #ifndef ASM /** - * This macro is a standard nop instruction. + * This macro is a standard nop instruction. */ #define nop() \ do { \ @@ -153,9 +156,9 @@ extern "C" { } while ( 0 ) /** - * @brief Macro to Obtain the PSR + * @brief Macro to obtain the PSR. * - * This macro returns the current contents of the PSR register in @a _psr. + * This macro returns the current contents of the PSR register in @a _psr. */ #define sparc_get_psr( _psr ) \ do { \ @@ -164,9 +167,9 @@ extern "C" { } while ( 0 ) /** - * @brief Macro to Set the PSR + * @brief Macro to set the PSR. * - * This macro sets the PSR register to the value in @a _psr. + * This macro sets the PSR register to the value in @a _psr. */ #define sparc_set_psr( _psr ) \ do { \ @@ -177,9 +180,9 @@ extern "C" { } while ( 0 ) /** - * @brief Macro to Obtain the TBR + * @brief Macro to obtain the TBR. * - * This macro returns the current contents of the TBR register in @a _tbr. + * This macro returns the current contents of the TBR register in @a _tbr. */ #define sparc_get_tbr( _tbr ) \ do { \ @@ -188,9 +191,9 @@ extern "C" { } while ( 0 ) /** - * @brief Macro to Set the TBR + * @brief Macro to set the TBR. * - * This macro sets the TBR register to the value in @a _tbr. + * This macro sets the TBR register to the value in @a _tbr. */ #define sparc_set_tbr( _tbr ) \ do { \ @@ -198,9 +201,9 @@ extern "C" { } while ( 0 ) /** - * @brief Macro to Obtain the WIM + * @brief Macro to obtain the WIM. * - * This macro returns the current contents of the WIM field in @a _wim. + * This macro returns the current contents of the WIM field in @a _wim. */ #define sparc_get_wim( _wim ) \ do { \ @@ -208,9 +211,9 @@ extern "C" { } while ( 0 ) /** - * @brief Macro to Set the WIM + * @brief Macro to set the WIM. * - * This macro sets the WIM field to the value in @a _wim. + * This macro sets the WIM field to the value in @a _wim. */ #define sparc_set_wim( _wim ) \ do { \ @@ -221,9 +224,9 @@ extern "C" { } while ( 0 ) /** - * @brief Macro to Obtain the Y Register + * @brief Macro to obtain the Y register. * - * This macro returns the current contents of the Y register in @a _y. + * This macro returns the current contents of the Y register in @a _y. */ #define sparc_get_y( _y ) \ do { \ @@ -231,9 +234,9 @@ extern "C" { } while ( 0 ) /** - * @brief Macro to Set the Y Register + * @brief Macro to set the Y register. * - * This macro sets the Y register to the value in @a _y. + * This macro sets the Y register to the value in @a _y. */ #define sparc_set_y( _y ) \ do { \ @@ -241,29 +244,29 @@ extern "C" { } while ( 0 ) /** - * @brief SPARC Disable Processor Interrupts + * @brief SPARC disable processor interrupts. * - * This method is invoked to disable all maskable interrupts. + * This method is invoked to disable all maskable interrupts. * - * @return This method returns the entire PSR contents. + * @return This method returns the entire PSR contents. */ uint32_t sparc_disable_interrupts(void); /** - * @brief SPARC Enable Processor Interrupts + * @brief SPARC enable processor interrupts. * - * This method is invoked to enable all maskable interrupts. + * This method is invoked to enable all maskable interrupts. * - * @param[in] psr is the PSR returned by @ref sparc_disable_interrupts. + * @param[in] psr is the PSR returned by @ref sparc_disable_interrupts. */ void sparc_enable_interrupts(uint32_t psr); /** - * @brief SPARC Flash Processor Interrupts + * @brief SPARC flash processor interrupts. * - * This method is invoked to temporarily enable all maskable interrupts. + * This method is invoked to temporarily enable all maskable interrupts. * - * @param[in] _psr is the PSR returned by @ref sparc_disable_interrupts. + * @param[in] _psr is the PSR returned by @ref sparc_disable_interrupts. */ #define sparc_flash_interrupts( _psr ) \ do { \ @@ -272,11 +275,11 @@ void sparc_enable_interrupts(uint32_t psr); } while ( 0 ) /** - * @brief SPARC Obtain Interrupt Level + * @brief SPARC obtain interrupt level. * - * This method is invoked to obtain the current interrupt disable level. + * This method is invoked to obtain the current interrupt disable level. * - * @param[in] _level is the PSR returned by @ref sparc_disable_interrupts. + * @param[in] _level is the PSR returned by @ref sparc_disable_interrupts. */ #define sparc_get_interrupt_level( _level ) \ do { \ diff --git a/cpukit/score/cpu/sparc/rtems/score/types.h b/cpukit/score/cpu/sparc/rtems/score/types.h index a8e56b73b2..c684763d1a 100644 --- a/cpukit/score/cpu/sparc/rtems/score/types.h +++ b/cpukit/score/cpu/sparc/rtems/score/types.h @@ -1,5 +1,7 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief SPARC CPU Type Definitions * * This include file contains type definitions pertaining to the * SPARC processor family. @@ -26,7 +28,7 @@ extern "C" { #endif /** - * @brief Priority Bit Map Type + * @brief Priority bit map type. * * On the SPARC, there is no bitscan instruction and no penalty associated * for using 16-bit variables. With no overriding architectural factors, @@ -35,16 +37,16 @@ extern "C" { typedef uint16_t Priority_bit_map_Control; /** - * @brief SPARC ISR Handler Return Type + * @brief SPARC ISR handler return type. * - * This is the type which SPARC ISR Handlers return. + * This is the type which SPARC ISR Handlers return. */ typedef void sparc_isr; /** - * @brief SPARC ISR Handler Prototype + * @brief SPARC ISR handler prototype. * - * This is the prototype for SPARC ISR Handlers. + * This is the prototype for SPARC ISR Handlers. */ typedef void ( *sparc_isr_entry )( void ); diff --git a/cpukit/score/cpu/sparc64/rtems/asm.h b/cpukit/score/cpu/sparc64/rtems/asm.h index d670fc6149..f4448b03a5 100644 --- a/cpukit/score/cpu/sparc64/rtems/asm.h +++ b/cpukit/score/cpu/sparc64/rtems/asm.h @@ -1,17 +1,20 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * NOTE: The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available diff --git a/cpukit/score/cpu/sparc64/rtems/score/cpu.h b/cpukit/score/cpu/sparc64/rtems/score/cpu.h index f78400f564..36c7144a19 100644 --- a/cpukit/score/cpu/sparc64/rtems/score/cpu.h +++ b/cpukit/score/cpu/sparc64/rtems/score/cpu.h @@ -1,15 +1,19 @@ /** - * @file rtems/score/cpu.h + * @file + * + * @brief SPARC64 CPU Department Source + * + * This include file contains information pertaining to the port of + * the executive to the SPARC64 processor. */ /* - * This include file contains information pertaining to the port of - * the executive to the SPARC64 processor. + * * * COPYRIGHT (c) 1989-2006. * On-Line Applications Research Corporation (OAR). * - * This file is based on the SPARC cpu.h file. Modifications are made + * This file is based on the SPARC cpu.h file. Modifications are made * to support the SPARC64 processor. * COPYRIGHT (c) 2010. Gedare Bloom. * @@ -103,7 +107,7 @@ extern "C" { /* * Does the RTEMS invoke the user's ISR with the vector number and - * a pointer to the saved interrupt frame (1) or just the vector + * a pointer to the saved interrupt frame (1) or just the vector * number (0)? */ @@ -191,10 +195,10 @@ extern "C" { * the minimum requirements of the compiler in order to have as * much of the critical data area as possible in a cache line. * - * The SPARC does not appear to have particularly strict alignment + * The SPARC does not appear to have particularly strict alignment * requirements. This value (16) was chosen to take advantages of caches. * - * SPARC 64 requirements on floating point alignment is at least 8, + * SPARC 64 requirements on floating point alignment is at least 8, * and is 16 if quad-word fp instructions are available (e.g. LDQF). */ @@ -221,7 +225,7 @@ extern "C" { #define CPU_MODES_INTERRUPT_MASK 0x0000000F /* - * This structure represents the organization of the minimum stack frame + * This structure represents the organization of the minimum stack frame * for the SPARC. More framing information is required in certain situaions * such as when there are a large number of out parameters or when the callee * must save floating point registers. @@ -490,7 +494,7 @@ typedef struct { * NOTE: The tstate, tpc, and tnpc are saved in this structure * to allow resetting the TL while still being able to return * from a trap later. The PIL is saved because - * if this is an external interrupt, we will mask lower + * if this is an external interrupt, we will mask lower * priority interrupts until finishing. Even though the y register * is deprecated, gcc still uses it. */ @@ -549,11 +553,11 @@ typedef struct { #define ISF_O7_OFFSET CPU_MINIMUM_STACK_FRAME_SIZE + 0x98 #define ISF_TVEC_OFFSET CPU_MINIMUM_STACK_FRAME_SIZE + 0xA0 -#define CONTEXT_CONTROL_INTERRUPT_FRAME_SIZE CPU_MINIMUM_STACK_FRAME_SIZE + 0xA8 +#define CONTEXT_CONTROL_INTERRUPT_FRAME_SIZE CPU_MINIMUM_STACK_FRAME_SIZE + 0xA8 #ifndef ASM /* * This variable is contains the initialize context for the FP unit. - * It is filled in by _CPU_Initialize and copied into the task's FP + * It is filled in by _CPU_Initialize and copied into the task's FP * context area during _CPU_Context_Initialize. */ @@ -592,9 +596,9 @@ SCORE_EXTERN volatile uint32_t _CPU_ISR_Dispatch_disable; * long jump. The other instructions load one register with the * trap type (a.k.a. vector) and another with the psr. */ -/* For SPARC V9, we must use 6 of these instructions to perform a long - * jump, because the _handler value is now 64-bits. We also need to store - * temporary values in the global register set at this trap level. Because +/* For SPARC V9, we must use 6 of these instructions to perform a long + * jump, because the _handler value is now 64-bits. We also need to store + * temporary values in the global register set at this trap level. Because * the handler runs at TL > 0 with GL > 0, it should be OK to use g2 and g3 * to pass parameters to ISR_Handler. * @@ -614,7 +618,7 @@ typedef struct { uint32_t jmp_to_low_of_handler_plus_g3; /* jmp %g3 + %lo(_handler) */ uint32_t mov_vector_g2; /* mov _vector, %g2 */ } CPU_Trap_table_entry; - + /* * This is the set of opcodes for the instructions loaded into a trap * table entry. The routine which installs a handler is responsible @@ -624,11 +628,11 @@ typedef struct { * The constants following this structure are masks for the fields which * must be filled in when the handler is installed. */ - + extern const CPU_Trap_table_entry _CPU_Trap_slot_template; /* - * The size of the floating point context area. + * The size of the floating point context area. */ #define CPU_CONTEXT_FP_SIZE sizeof( Context_Control_fp ) @@ -666,7 +670,7 @@ extern const CPU_Trap_table_entry _CPU_Trap_slot_template; * an asynchronous trap. This will avoid the executive changing the return * address. */ -/* On SPARC v9, there are 512 vectors. The same philosophy applies to +/* On SPARC v9, there are 512 vectors. The same philosophy applies to * vector installation and use, we just provide a larger table. */ #define CPU_INTERRUPT_NUMBER_OF_VECTORS 512 @@ -796,14 +800,14 @@ extern const CPU_Trap_table_entry _CPU_Trap_slot_template; /* * Map interrupt level in task mode onto the hardware that the CPU * actually provides. Currently, interrupt levels which do not - * map onto the CPU in a straight fashion are undefined. + * map onto the CPU in a straight fashion are undefined. */ #define _CPU_ISR_Set_level( _newlevel ) \ sparc_enable_interrupts( _newlevel) uint32_t _CPU_ISR_Get_level( void ); - + /* end of ISR handler macros */ /* Context handler macros */ @@ -839,7 +843,7 @@ void _CPU_Context_Initialize( * On the SPARC, this is setting the frame pointer so GDB is happy. * Make GDB stop unwinding at _Thread_Handler, previous register window * Frame pointer is 0 and calling address must be a function with starting - * with a SAVE instruction. If return address is leaf-function (no SAVE) + * with a SAVE instruction. If return address is leaf-function (no SAVE) * GDB will not look at prev reg window fp. * * _Thread_Handler is known to start with SAVE. @@ -852,7 +856,7 @@ void _CPU_Context_Initialize( /* * This routine is responsible for somehow restarting the currently - * executing task. + * executing task. * * On the SPARC, this is is relatively painless but requires a small * amount of wrapper code before using the regular restore code in @@ -874,7 +878,7 @@ void _CPU_Context_Initialize( * This routine initializes the FP context area passed to it to. * * The SPARC allows us to use the simple initialization model - * in which an "initial" FP context was saved into _CPU_Null_fp_context + * in which an "initial" FP context was saved into _CPU_Null_fp_context * at CPU initialization and it is simply copied into the destination * context. */ @@ -950,7 +954,7 @@ void _CPU_Initialize(void); * This routine installs new_handler to be directly called from the trap * table. */ - + void _CPU_ISR_install_raw_handler( uint32_t vector, proc_ptr new_handler, @@ -970,14 +974,14 @@ void _CPU_ISR_install_vector( ); #if (CPU_PROVIDES_IDLE_THREAD_BODY == TRUE) - + /* * _CPU_Thread_Idle_body * * Some SPARC implementations have low power, sleep, or idle modes. This * tries to take advantage of those models. */ - + void *_CPU_Thread_Idle_body( uintptr_t ignored ); #endif /* CPU_PROVIDES_IDLE_THREAD_BODY */ @@ -1036,7 +1040,7 @@ void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); * It must be static because it is referenced indirectly. * * This version will work on any processor, but if you come across a better - * way for the SPARC PLEASE use it. The most common way to swap a 32-bit + * way for the SPARC PLEASE use it. The most common way to swap a 32-bit * entity as shown below is not any more efficient on the SPARC. * * swap least significant two bytes with 16-bit rotate @@ -1047,18 +1051,18 @@ void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); * generic code. gcc 2.7.0 only generates about 12 instructions for the * following code at optimization level four (i.e. -O4). */ - + static inline uint32_t CPU_swap_u32( uint32_t value ) { uint32_t byte1, byte2, byte3, byte4, swapped; - + byte4 = (value >> 24) & 0xff; byte3 = (value >> 16) & 0xff; byte2 = (value >> 8) & 0xff; byte1 = value & 0xff; - + swapped = (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4; return( swapped ); } diff --git a/cpukit/score/cpu/sparc64/rtems/score/sparc64.h b/cpukit/score/cpu/sparc64/rtems/score/sparc64.h index b7ac2c5137..b2df9c17a5 100644 --- a/cpukit/score/cpu/sparc64/rtems/score/sparc64.h +++ b/cpukit/score/cpu/sparc64/rtems/score/sparc64.h @@ -1,15 +1,18 @@ /** - * @file rtems/score/sparc64.h + * @file + * + * @brief Information Required to Build RTEMS for a Particular Member + * of the SPARC Family + * + * This include file contains information pertaining to the SPARC + * processor family. */ /* - * This include file contains information pertaining to the SPARC - * processor family. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * - * This file is based on the SPARC sparc.h file. Modifications are made + * This file is based on the SPARC sparc.h file. Modifications are made * to support the SPARC64 processor. * COPYRIGHT (c) 2010. Gedare Bloom. * @@ -34,19 +37,19 @@ extern "C" { * * Currently recognized feature flags: * - * + SPARC_HAS_FPU + * + SPARC_HAS_FPU * 0 - no HW FPU * 1 - has HW FPU (assumed to be compatible w/90C602) * - * + SPARC_HAS_BITSCAN + * + SPARC_HAS_BITSCAN * 0 - does not have scan instructions * 1 - has scan instruction (not currently implemented) - * + * * + SPARC_NUMBER_OF_REGISTER_WINDOWS * 8 is the most common number supported by SPARC implementations. * SPARC_PSR_CWP_MASK is derived from this value. */ - + /* * Some higher end SPARCs have a bitscan instructions. It would * be nice to take advantage of them. Right now, there is no @@ -67,9 +70,9 @@ extern "C" { */ #define SPARC_NUMBER_OF_REGISTER_WINDOWS 8 - + /* - * This should be determined based on some soft float derived + * This should be determined based on some soft float derived * cpp predefine but gcc does not currently give us that information. */ @@ -96,7 +99,7 @@ extern "C" { * Miscellaneous constants */ -/* +/* * The PSR is deprecated and deleted. * * The following registers represent fields of the PSR: @@ -145,7 +148,7 @@ extern "C" { #ifdef ASM -/* +/* * To enable the FPU we need to set both PSTATE.pef and FPRS.fef */ @@ -237,9 +240,9 @@ extern "C" { /* * read the stick register * - * Note: + * Note: * stick asr=24, mnemonic=stick - * Note: stick does not appear to be a valid ASR for US3, although it is + * Note: stick does not appear to be a valid ASR for US3, although it is * implemented in US3i. */ #define sparc64_read_stick( _stick ) \ @@ -249,11 +252,11 @@ extern "C" { } while ( 0 ) /* - * write the stick_cmpr register + * write the stick_cmpr register * - * Note: + * Note: * stick_cmpr asr=25, mnemonic=stick_cmpr - * Note: stick_cmpr does not appear to be a valid ASR for US3, although it is + * Note: stick_cmpr does not appear to be a valid ASR for US3, although it is * implemented in US3i. */ #define sparc64_write_stick_cmpr( _stick_cmpr ) \ @@ -280,7 +283,7 @@ extern "C" { : "0" (_tick_cmpr) ); \ } while ( 0 ) -/* +/* * Clear the softint register. * * sun4u and sun4v: softint_clr asr = 21, with mnemonic clear_softint @@ -296,12 +299,12 @@ extern "C" { /* * Get and set the Y */ - + #define sparc_get_y( _y ) \ do { \ __asm__ volatile( "rd %%y, %0" : "=r" (_y) : "0" (_y) ); \ } while ( 0 ) - + #define sparc_set_y( _y ) \ do { \ __asm__ volatile( "wr %0, %%y" : "=r" (_y) : "0" (_y) ); \ @@ -310,12 +313,12 @@ extern "C" { /************* /DEPRECATED ****************/ /* - * Manipulate the interrupt level in the pstate + * Manipulate the interrupt level in the pstate */ uint32_t sparc_disable_interrupts(void); void sparc_enable_interrupts(uint32_t); - + #define sparc_flash_interrupts( _level ) \ do { \ register uint32_t _ignored = 0; \ diff --git a/cpukit/score/cpu/sparc64/rtems/score/types.h b/cpukit/score/cpu/sparc64/rtems/score/types.h index 3d289a586a..06b7844042 100644 --- a/cpukit/score/cpu/sparc64/rtems/score/types.h +++ b/cpukit/score/cpu/sparc64/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief SPARC64 CPU Type Definitions + * + * This include file contains type definitions pertaining to the + * SPARC-v9 processor family. */ /* - * This include file contains type definitions pertaining to the - * SPARC-v9 processor family. - * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/v850/rtems/asm.h b/cpukit/score/cpu/v850/rtems/asm.h index 09e64da442..265e4967ae 100644 --- a/cpukit/score/cpu/v850/rtems/asm.h +++ b/cpukit/score/cpu/v850/rtems/asm.h @@ -1,26 +1,27 @@ /** - * @file rtems/asm.h + * @file * - * This include file attempts to address the problems - * caused by incompatible flavors of assemblers and - * toolsets. It primarily addresses variations in the - * use of leading underscores on symbols and the requirement - * that register names be preceded by a %. + * @brief Address the Problems Caused by Incompatible Flavor of + * Assemblers and Toolsets + * + * This include file attempts to address the problems + * caused by incompatible flavors of assemblers and + * toolsets. It primarily addresses variations in the + * use of leading underscores on symbols and the requirement + * that register names be preceded by a %. + * + * @note The spacing in the use of these macros + * is critical to them working as advertised. */ /* - * NOTE: The spacing in the use of these macros - * is critical to them working as advertised. - * * COPYRIGHT: * * This file is based on similar code found in newlib available * from ftp.cygnus.com. The file which was used had no copyright * notice. This file is freely distributable as long as the source * of the file is noted. This file is: - */ - -/* + * * COPYRIGHT (c) 1994-2012. * On-Line Applications Research Corporation (OAR). */ @@ -40,24 +41,24 @@ #ifndef __USER_LABEL_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * Recent versions of GNU cpp define variables which indicate the + * need for underscores and percents. If not using GNU cpp or + * the version does not support this, then you will obviously + * have to define these as appropriate. * - * This symbol is prefixed to all C program symbols. + * This symbol is prefixed to all C program symbols. */ #define __USER_LABEL_PREFIX__ _ #endif #ifndef __REGISTER_PREFIX__ /** - * Recent versions of GNU cpp define variables which indicate the - * need for underscores and percents. If not using GNU cpp or - * the version does not support this, then you will obviously - * have to define these as appropriate. + * Recent versions of GNU cpp define variables which indicate the + * need for underscores and percents. If not using GNU cpp or + * the version does not support this, then you will obviously + * have to define these as appropriate. * - * This symbol is prefixed to all register names. + * This symbol is prefixed to all register names. */ #define __REGISTER_PREFIX__ #endif @@ -97,8 +98,9 @@ #define BEGIN_DATA /** This macro is used to denote the end of a data section. */ #define END_DATA -/** This macro is used to denote the beginning of the - * unitialized data section. +/** + * This macro is used to denote the beginning of the + * unitialized data section. */ #define BEGIN_BSS /** This macro is used to denote the end of the unitialized data section. */ @@ -107,18 +109,18 @@ #define END /** - * This macro is used to declare a public global symbol. + * This macro is used to declare a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * @note This must be tailored for a particular flavor of the C compiler. + * They may need to put underscores in front of the symbols. */ #define PUBLIC(sym) .globl SYM (sym) /** - * This macro is used to prototype a public global symbol. + * This macro is used to prototype a public global symbol. * - * @note This must be tailored for a particular flavor of the C compiler. - * They may need to put underscores in front of the symbols. + * @note This must be tailored for a particular flavor of the C compiler. + * They may need to put underscores in front of the symbols. */ #define EXTERN(sym) .globl SYM (sym) diff --git a/cpukit/score/cpu/v850/rtems/score/cpu.h b/cpukit/score/cpu/v850/rtems/score/cpu.h index b6fb59d7b6..c0b6f9e2ca 100644 --- a/cpukit/score/cpu/v850/rtems/score/cpu.h +++ b/cpukit/score/cpu/v850/rtems/score/cpu.h @@ -1,10 +1,10 @@ /** - * @file rtems/score/cpu.h - */ - -/* - * This include file contains information pertaining to the v850 - * processor. + * @file + * + * @brief V850 CPU Department Source + * + * This include file contains information pertaining to the v850 + * processor. */ /* @@ -29,418 +29,420 @@ extern "C" { /* conditional compilation parameters */ /** - * Should the calls to @ref _Thread_Enable_dispatch be inlined? + * Should the calls to @ref _Thread_Enable_dispatch be inlined? * - * If TRUE, then they are inlined. - * If FALSE, then a subroutine call is made. + * If TRUE, then they are inlined. + * If FALSE, then a subroutine call is made. * - * This conditional is an example of the classic trade-off of size - * versus speed. Inlining the call (TRUE) typically increases the - * size of RTEMS while speeding up the enabling of dispatching. + * This conditional is an example of the classic trade-off of size + * versus speed. Inlining the call (TRUE) typically increases the + * size of RTEMS while speeding up the enabling of dispatching. * - * @note In general, the @ref _Thread_Dispatch_disable_level will - * only be 0 or 1 unless you are in an interrupt handler and that - * interrupt handler invokes the executive.] When not inlined - * something calls @ref _Thread_Enable_dispatch which in turns calls - * @ref _Thread_Dispatch. If the enable dispatch is inlined, then - * one subroutine call is avoided entirely. + * @note In general, the @ref _Thread_Dispatch_disable_level will + * only be 0 or 1 unless you are in an interrupt handler and that + * interrupt handler invokes the executive.] When not inlined + * something calls @ref _Thread_Enable_dispatch which in turns calls + * @ref _Thread_Dispatch. If the enable dispatch is inlined, then + * one subroutine call is avoided entirely. * - * Port Specific Information: + * Port Specific Information: * - * The v850 is a RISC CPU which typically has enough memory to justify - * the inlining of this method. + * The v850 is a RISC CPU which typically has enough memory to justify + * the inlining of this method. */ #define CPU_INLINE_ENABLE_DISPATCH TRUE /** - * Should the body of the search loops in _Thread_queue_Enqueue_priority - * be unrolled one time? In unrolled each iteration of the loop examines - * two "nodes" on the chain being searched. Otherwise, only one node - * is examined per iteration. - * - * If TRUE, then the loops are unrolled. - * If FALSE, then the loops are not unrolled. - * - * The primary factor in making this decision is the cost of disabling - * and enabling interrupts (_ISR_Flash) versus the cost of rest of the - * body of the loop. On some CPUs, the flash is more expensive than - * one iteration of the loop body. In this case, it might be desirable - * to unroll the loop. It is important to note that on some CPUs, this - * code is the longest interrupt disable period in RTEMS. So it is - * necessary to strike a balance when setting this parameter. - * - * Port Specific Information: - * - * The v850 is a RISC CPU which typically has enough memory to justify - * the unrolling of this method. + * Should the body of the search loops in _Thread_queue_Enqueue_priority + * be unrolled one time? In unrolled each iteration of the loop examines + * two "nodes" on the chain being searched. Otherwise, only one node + * is examined per iteration. + * + * If TRUE, then the loops are unrolled. + * If FALSE, then the loops are not unrolled. + * + * The primary factor in making this decision is the cost of disabling + * and enabling interrupts (_ISR_Flash) versus the cost of rest of the + * body of the loop. On some CPUs, the flash is more expensive than + * one iteration of the loop body. In this case, it might be desirable + * to unroll the loop. It is important to note that on some CPUs, this + * code is the longest interrupt disable period in RTEMS. So it is + * necessary to strike a balance when setting this parameter. + * + * Port Specific Information: + * + * The v850 is a RISC CPU which typically has enough memory to justify + * the unrolling of this method. */ #define CPU_UNROLL_ENQUEUE_PRIORITY TRUE /** - * Does RTEMS manage a dedicated interrupt stack in software? + * Does RTEMS manage a dedicated interrupt stack in software? * - * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. - * If FALSE, nothing is done. + * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization. + * If FALSE, nothing is done. * - * If the CPU supports a dedicated interrupt stack in hardware, - * then it is generally the responsibility of the BSP to allocate it - * and set it up. + * If the CPU supports a dedicated interrupt stack in hardware, + * then it is generally the responsibility of the BSP to allocate it + * and set it up. * - * If the CPU does not support a dedicated interrupt stack, then - * the porter has two options: (1) execute interrupts on the - * stack of the interrupted task, and (2) have RTEMS manage a dedicated - * interrupt stack. + * If the CPU does not support a dedicated interrupt stack, then + * the porter has two options: (1) execute interrupts on the + * stack of the interrupted task, and (2) have RTEMS manage a dedicated + * interrupt stack. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * The v850 does not have support for a hardware interrupt stack. + * The v850 does not have support for a hardware interrupt stack. */ #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE /** - * Does the CPU follow the simple vectored interrupt model? + * Does the CPU follow the simple vectored interrupt model? * - * If TRUE, then RTEMS allocates the vector table it internally manages. - * If FALSE, then the BSP is assumed to allocate and manage the vector - * table + * If TRUE, then RTEMS allocates the vector table it internally manages. + * If FALSE, then the BSP is assumed to allocate and manage the vector + * table * - * Port Specific Information: + * Port Specific Information: * - * This port uses the Progammable Interrupt Controller interrupt model. + * This port uses the Progammable Interrupt Controller interrupt model. */ #define CPU_SIMPLE_VECTORED_INTERRUPTS FALSE /** - * Does this CPU have hardware support for a dedicated interrupt stack? + * Does this CPU have hardware support for a dedicated interrupt stack? * - * If TRUE, then it must be installed during initialization. - * If FALSE, then no installation is performed. + * If TRUE, then it must be installed during initialization. + * If FALSE, then no installation is performed. * - * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. + * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE. * - * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and - * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is - * possible that both are FALSE for a particular CPU. Although it - * is unclear what that would imply about the interrupt processing - * procedure on that CPU. + * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and + * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is + * possible that both are FALSE for a particular CPU. Although it + * is unclear what that would imply about the interrupt processing + * procedure on that CPU. * - * Port Specific Information: + * Port Specific Information: * - * The v850 does not have support for a hardware interrupt stack. + * The v850 does not have support for a hardware interrupt stack. */ #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE /** - * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? + * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager? * - * If TRUE, then the memory is allocated during initialization. - * If FALSE, then the memory is allocated during initialization. + * If TRUE, then the memory is allocated during initialization. + * If FALSE, then the memory is allocated during initialization. * - * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. + * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_ALLOCATE_INTERRUPT_STACK TRUE /** - * @def CPU_HARDWARE_FP + * @def CPU_HARDWARE_FP * - * Does the CPU have hardware floating point? + * Does the CPU have hardware floating point? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is supported. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is ignored. * - * If there is a FP coprocessor such as the i387 or mc68881, then - * the answer is TRUE. + * If there is a FP coprocessor such as the i387 or mc68881, then + * the answer is TRUE. * - * The macro name "V850_HAS_FPU" should be made CPU specific. - * It indicates whether or not this CPU model has FP support. For - * example, it would be possible to have an i386_nofp CPU model - * which set this to false to indicate that you have an i386 without - * an i387 and wish to leave floating point support out of RTEMS. + * The macro name "V850_HAS_FPU" should be made CPU specific. + * It indicates whether or not this CPU model has FP support. For + * example, it would be possible to have an i386_nofp CPU model + * which set this to false to indicate that you have an i386 without + * an i387 and wish to leave floating point support out of RTEMS. */ /** - * @def CPU_SOFTWARE_FP - * - * Does the CPU have no hardware floating point and GCC provides a - * software floating point implementation which must be context - * switched? - * - * This feature conditional is used to indicate whether or not there - * is software implemented floating point that must be context - * switched. The determination of whether or not this applies - * is very tool specific and the state saved/restored is also - * compiler specific. - * - * Port Specific Information: - * - * Some v850 models do have IEEE hardware floating point support but - * they do not have any special registers to save or bit(s) which - * determine if the FPU is enabled. In short, there appears to be nothing - * related to the floating point operations which impact the RTEMS - * thread context switch. Thus from an RTEMS perspective, there is really - * no FPU to manage. + * @def CPU_SOFTWARE_FP + * + * Does the CPU have no hardware floating point and GCC provides a + * software floating point implementation which must be context + * switched? + * + * This feature conditional is used to indicate whether or not there + * is software implemented floating point that must be context + * switched. The determination of whether or not this applies + * is very tool specific and the state saved/restored is also + * compiler specific. + * + * Port Specific Information: + * + * Some v850 models do have IEEE hardware floating point support but + * they do not have any special registers to save or bit(s) which + * determine if the FPU is enabled. In short, there appears to be nothing + * related to the floating point operations which impact the RTEMS + * thread context switch. Thus from an RTEMS perspective, there is really + * no FPU to manage. */ #define CPU_HARDWARE_FP FALSE #define CPU_SOFTWARE_FP FALSE /** - * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? + * Are all tasks RTEMS_FLOATING_POINT tasks implicitly? * - * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. - * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. + * If TRUE, then the RTEMS_FLOATING_POINT task attribute is assumed. + * If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed. * - * So far, the only CPUs in which this option has been used are the - * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and - * gcc both implicitly used the floating point registers to perform - * integer multiplies. Similarly, the PowerPC port of gcc has been - * seen to allocate floating point local variables and touch the FPU - * even when the flow through a subroutine (like vfprintf()) might - * not use floating point formats. + * So far, the only CPUs in which this option has been used are the + * HP PA-RISC and PowerPC. On the PA-RISC, The HP C compiler and + * gcc both implicitly used the floating point registers to perform + * integer multiplies. Similarly, the PowerPC port of gcc has been + * seen to allocate floating point local variables and touch the FPU + * even when the flow through a subroutine (like vfprintf()) might + * not use floating point formats. * - * If a function which you would not think utilize the FP unit DOES, - * then one can not easily predict which tasks will use the FP hardware. - * In this case, this option should be TRUE. + * If a function which you would not think utilize the FP unit DOES, + * then one can not easily predict which tasks will use the FP hardware. + * In this case, this option should be TRUE. * - * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. + * If @ref CPU_HARDWARE_FP is FALSE, then this should be FALSE as well. * - * Port Specific Information: + * Port Specific Information: * - * This should be false until it has been demonstrated that gcc for the - * v850 generates FPU code when it is unexpected. But even this would - * not matter since there are no FP specific registers or bits which - * would be corrupted if an FP operation occurred in an integer only - * thread. + * This should be false until it has been demonstrated that gcc for the + * v850 generates FPU code when it is unexpected. But even this would + * not matter since there are no FP specific registers or bits which + * would be corrupted if an FP operation occurred in an integer only + * thread. */ #define CPU_ALL_TASKS_ARE_FP FALSE /** - * Should the IDLE task have a floating point context? + * Should the IDLE task have a floating point context? * - * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task - * and it has a floating point context which is switched in and out. - * If FALSE, then the IDLE task does not have a floating point context. + * If TRUE, then the IDLE task is created as a RTEMS_FLOATING_POINT task + * and it has a floating point context which is switched in and out. + * If FALSE, then the IDLE task does not have a floating point context. * - * Setting this to TRUE negatively impacts the time required to preempt - * the IDLE task from an interrupt because the floating point context - * must be saved as part of the preemption. + * Setting this to TRUE negatively impacts the time required to preempt + * the IDLE task from an interrupt because the floating point context + * must be saved as part of the preemption. * - * Port Specific Information: + * Port Specific Information: * - * The IDLE thread should not be using the FPU. Leave this off. + * The IDLE thread should not be using the FPU. Leave this off. */ #define CPU_IDLE_TASK_IS_FP FALSE /** - * Should the saving of the floating point registers be deferred - * until a context switch is made to another different floating point - * task? + * Should the saving of the floating point registers be deferred + * until a context switch is made to another different floating point + * task? * - * If TRUE, then the floating point context will not be stored until - * necessary. It will remain in the floating point registers and not - * disturned until another floating point task is switched to. + * If TRUE, then the floating point context will not be stored until + * necessary. It will remain in the floating point registers and not + * disturned until another floating point task is switched to. * - * If FALSE, then the floating point context is saved when a floating - * point task is switched out and restored when the next floating point - * task is restored. The state of the floating point registers between - * those two operations is not specified. + * If FALSE, then the floating point context is saved when a floating + * point task is switched out and restored when the next floating point + * task is restored. The state of the floating point registers between + * those two operations is not specified. * - * If the floating point context does NOT have to be saved as part of - * interrupt dispatching, then it should be safe to set this to TRUE. + * If the floating point context does NOT have to be saved as part of + * interrupt dispatching, then it should be safe to set this to TRUE. * - * Setting this flag to TRUE results in using a different algorithm - * for deciding when to save and restore the floating point context. - * The deferred FP switch algorithm minimizes the number of times - * the FP context is saved and restored. The FP context is not saved - * until a context switch is made to another, different FP task. - * Thus in a system with only one FP task, the FP context will never - * be saved or restored. + * Setting this flag to TRUE results in using a different algorithm + * for deciding when to save and restore the floating point context. + * The deferred FP switch algorithm minimizes the number of times + * the FP context is saved and restored. The FP context is not saved + * until a context switch is made to another, different FP task. + * Thus in a system with only one FP task, the FP context will never + * be saved or restored. * - * Port Specific Information: + * Port Specific Information: * - * See earlier comments. There is no FPU state to manage. + * See earlier comments. There is no FPU state to manage. */ #define CPU_USE_DEFERRED_FP_SWITCH TRUE /** - * Does this port provide a CPU dependent IDLE task implementation? + * Does this port provide a CPU dependent IDLE task implementation? * - * If TRUE, then the routine @ref _CPU_Thread_Idle_body - * must be provided and is the default IDLE thread body instead of - * @ref _CPU_Thread_Idle_body. + * If TRUE, then the routine @ref _CPU_Thread_Idle_body + * must be provided and is the default IDLE thread body instead of + * @ref _CPU_Thread_Idle_body. * - * If FALSE, then use the generic IDLE thread body if the BSP does - * not provide one. + * If FALSE, then use the generic IDLE thread body if the BSP does + * not provide one. * - * This is intended to allow for supporting processors which have - * a low power or idle mode. When the IDLE thread is executed, then - * the CPU can be powered down. + * This is intended to allow for supporting processors which have + * a low power or idle mode. When the IDLE thread is executed, then + * the CPU can be powered down. * - * The order of precedence for selecting the IDLE thread body is: + * The order of precedence for selecting the IDLE thread body is: * - * -# BSP provided - * -# CPU dependent (if provided) - * -# generic (if no BSP and no CPU dependent) + * -# BSP provided + * -# CPU dependent (if provided) + * -# generic (if no BSP and no CPU dependent) * - * Port Specific Information: + * Port Specific Information: * - * There does not appear to be a reason for the v850 port itself to provide - * a special idle task. + * There does not appear to be a reason for the v850 port itself to provide + * a special idle task. */ #define CPU_PROVIDES_IDLE_THREAD_BODY FALSE /** - * Does the stack grow up (toward higher addresses) or down - * (toward lower addresses)? + * Does the stack grow up (toward higher addresses) or down + * (toward lower addresses)? * - * If TRUE, then the grows upward. - * If FALSE, then the grows toward smaller addresses. + * If TRUE, then the grows upward. + * If FALSE, then the grows toward smaller addresses. * - * Port Specific Information: + * Port Specific Information: * - * The v850 stack grows from high addresses to low addresses. + * The v850 stack grows from high addresses to low addresses. */ #define CPU_STACK_GROWS_UP FALSE /** - * The following is the variable attribute used to force alignment - * of critical RTEMS structures. On some processors it may make - * sense to have these aligned on tighter boundaries than - * the minimum requirements of the compiler in order to have as - * much of the critical data area as possible in a cache line. + * The following is the variable attribute used to force alignment + * of critical RTEMS structures. On some processors it may make + * sense to have these aligned on tighter boundaries than + * the minimum requirements of the compiler in order to have as + * much of the critical data area as possible in a cache line. * - * The placement of this macro in the declaration of the variables - * is based on the syntactically requirements of the GNU C - * "__attribute__" extension. For example with GNU C, use - * the following to force a structures to a 32 byte boundary. + * The placement of this macro in the declaration of the variables + * is based on the syntactically requirements of the GNU C + * "__attribute__" extension. For example with GNU C, use + * the following to force a structures to a 32 byte boundary. * - * __attribute__ ((aligned (32))) + * __attribute__ ((aligned (32))) * - * @note Currently only the Priority Bit Map table uses this feature. - * To benefit from using this, the data must be heavily - * used so it will stay in the cache and used frequently enough - * in the executive to justify turning this on. + * @note Currently only the Priority Bit Map table uses this feature. + * To benefit from using this, the data must be heavily + * used so it will stay in the cache and used frequently enough + * in the executive to justify turning this on. * - * Port Specific Information: + * Port Specific Information: * - * Until proven otherwise, use the compiler default. + * Until proven otherwise, use the compiler default. */ #define CPU_STRUCTURE_ALIGNMENT /** - * The v850 should use 64-bit timestamps and inline them. + * The v850 should use 64-bit timestamps and inline them. */ #define CPU_TIMESTAMP_USE_INT64_INLINE TRUE /** - * @defgroup CPUEndian Processor Dependent Endianness Support + * @defgroup CPUEndian Processor Dependent Endianness Support + * + * This group assists in issues related to processor endianness. * - * This group assists in issues related to processor endianness. */ +/**@{**/ /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the - * same values. + * @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_LITTLE_ENDIAN + * @see CPU_LITTLE_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * The v850 is little endian. + * The v850 is little endian. */ #define CPU_BIG_ENDIAN FALSE /** - * @ingroup CPUEndian - * Define what is required to specify how the network to host conversion - * routines are handled. + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @note @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the - * same values. + * @note @ref CPU_BIG_ENDIAN and @ref CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * @see CPU_BIG_ENDIAN + * @see CPU_BIG_ENDIAN * - * Port Specific Information: + * Port Specific Information: * - * The v850 is little endian. + * The v850 is little endian. */ #define CPU_LITTLE_ENDIAN TRUE +/** @} */ + /** - * @ingroup CPUInterrupt - * The following defines the number of bits actually used in the - * interrupt field of the task mode. How those bits map to the - * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. + * @ingroup CPUInterrupt + * The following defines the number of bits actually used in the + * interrupt field of the task mode. How those bits map to the + * CPU interrupt levels is defined by the routine @ref _CPU_ISR_Set_level. * - * Port Specific Information: + * Port Specific Information: * - * The v850 only has a single bit in the CPU for interrupt disable/enable. + * The v850 only has a single bit in the CPU for interrupt disable/enable. */ #define CPU_MODES_INTERRUPT_MASK 0x00000001 /** * @defgroup CPUContext Processor Dependent Context Management * - * From the highest level viewpoint, there are 2 types of context to save. + * From the highest level viewpoint, there are 2 types of context to save. * - * -# Interrupt registers to save - * -# Task level registers to save + * -# Interrupt registers to save + * -# Task level registers to save * - * Since RTEMS handles integer and floating point contexts separately, this - * means we have the following 3 context items: + * Since RTEMS handles integer and floating point contexts separately, this + * means we have the following 3 context items: * - * -# task level context stuff:: Context_Control - * -# floating point task stuff:: Context_Control_fp - * -# special interrupt level context :: CPU_Interrupt_frame + * -# task level context stuff:: Context_Control + * -# floating point task stuff:: Context_Control_fp + * -# special interrupt level context :: CPU_Interrupt_frame * - * On some processors, it is cost-effective to save only the callee - * preserved registers during a task context switch. This means - * that the ISR code needs to save those registers which do not - * persist across function calls. It is not mandatory to make this - * distinctions between the caller/callee saves registers for the - * purpose of minimizing context saved during task switch and on interrupts. - * If the cost of saving extra registers is minimal, simplicity is the - * choice. Save the same context on interrupt entry as for tasks in - * this case. + * On some processors, it is cost-effective to save only the callee + * preserved registers during a task context switch. This means + * that the ISR code needs to save those registers which do not + * persist across function calls. It is not mandatory to make this + * distinctions between the caller/callee saves registers for the + * purpose of minimizing context saved during task switch and on interrupts. + * If the cost of saving extra registers is minimal, simplicity is the + * choice. Save the same context on interrupt entry as for tasks in + * this case. * - * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then - * care should be used in designing the context area. + * Additionally, if gdb is to be made aware of RTEMS tasks for this CPU, then + * care should be used in designing the context area. * - * On some CPUs with hardware floating point support, the Context_Control_fp - * structure will not be used or it simply consist of an array of a - * fixed number of bytes. This is done when the floating point context - * is dumped by a "FP save context" type instruction and the format - * is not really defined by the CPU. In this case, there is no need - * to figure out the exact format -- only the size. Of course, although - * this is enough information for RTEMS, it is probably not enough for - * a debugger such as gdb. But that is another problem. + * On some CPUs with hardware floating point support, the Context_Control_fp + * structure will not be used or it simply consist of an array of a + * fixed number of bytes. This is done when the floating point context + * is dumped by a "FP save context" type instruction and the format + * is not really defined by the CPU. In this case, there is no need + * to figure out the exact format -- only the size. Of course, although + * this is enough information for RTEMS, it is probably not enough for + * a debugger such as gdb. But that is another problem. * - * Port Specific Information: + * Port Specific Information: * - * On the v850, this port saves special registers and those that are - * callee saved. + * On the v850, this port saves special registers and those that are + * callee saved. */ +/**@{**/ /** - * @ingroup CPUContext Management - * This defines the minimal set of integer and processor state registers - * that must be saved during a voluntary context switch from one thread - * to another. + * This defines the minimal set of integer and processor state registers + * that must be saved during a voluntary context switch from one thread + * to another. */ typedef struct { uint32_t r1; @@ -461,21 +463,18 @@ typedef struct { } Context_Control; /** - * @ingroup CPUContext Management - * - * This macro returns the stack pointer associated with @a _context. + * This macro returns the stack pointer associated with @a _context. * - * @param[in] _context is the thread context area to access + * @param[in] _context is the thread context area to access * - * @return This method returns the stack pointer. + * @return This method returns the stack pointer. */ #define _CPU_Context_Get_SP( _context ) \ (_context)->r3_stack_pointer /** - * @ingroup CPUContext Management - * This defines the complete set of floating point registers that must - * be saved during any context switch from one thread to another. + * This defines the complete set of floating point registers that must + * be saved during any context switch from one thread to another. */ typedef struct { /** FPU registers are listed here */ @@ -483,62 +482,64 @@ typedef struct { } Context_Control_fp; /** - * @ingroup CPUContext Management - * This defines the set of integer and processor state registers that must - * be saved during an interrupt. This set does not include any which are - * in @ref Context_Control. + * This defines the set of integer and processor state registers that must + * be saved during an interrupt. This set does not include any which are + * in @ref Context_Control. */ typedef struct { /** This field is a hint that a port will have a number of integer - * registers that need to be saved when an interrupt occurs or - * when a context switch occurs at the end of an ISR. + * registers that need to be saved when an interrupt occurs or + * when a context switch occurs at the end of an ISR. */ uint32_t special_interrupt_register; } CPU_Interrupt_frame; +/** @} */ + /** - * @defgroup CPUInterrupt Processor Dependent Interrupt Management + * @defgroup CPUInterrupt Processor Dependent Interrupt Management * - * On some CPUs, RTEMS supports a software managed interrupt stack. - * This stack is allocated by the Interrupt Manager and the switch - * is performed in @ref _ISR_Handler. These variables contain pointers - * to the lowest and highest addresses in the chunk of memory allocated - * for the interrupt stack. Since it is unknown whether the stack - * grows up or down (in general), this give the CPU dependent - * code the option of picking the version it wants to use. + * On some CPUs, RTEMS supports a software managed interrupt stack. + * This stack is allocated by the Interrupt Manager and the switch + * is performed in @ref _ISR_Handler. These variables contain pointers + * to the lowest and highest addresses in the chunk of memory allocated + * for the interrupt stack. Since it is unknown whether the stack + * grows up or down (in general), this give the CPU dependent + * code the option of picking the version it wants to use. * - * @note These two variables are required if the macro - * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. + * @note These two variables are required if the macro + * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ +/**@{**/ /** - * @ingroup CPUContext - * The size of the floating point context area. On some CPUs this - * will not be a "sizeof" because the format of the floating point - * area is not defined -- only the size is. This is usually on - * CPUs with a "floating point save context" instruction. + * @ingroup CPUContext + * The size of the floating point context area. On some CPUs this + * will not be a "sizeof" because the format of the floating point + * area is not defined -- only the size is. This is usually on + * CPUs with a "floating point save context" instruction. * - * Port Specific Information: + * Port Specific Information: * - * The v850 does not need a floating point context but this needs to be - * defined so confdefs.h. + * The v850 does not need a floating point context but this needs to be + * defined so confdefs.h. */ /* #define CPU_CONTEXT_FP_SIZE sizeof( Context_Control_fp ) */ #define CPU_CONTEXT_FP_SIZE 0 /** - * Amount of extra stack (above minimum stack size) required by - * MPCI receive server thread. Remember that in a multiprocessor - * system this thread must exist and be able to process all directives. + * Amount of extra stack (above minimum stack size) required by + * MPCI receive server thread. Remember that in a multiprocessor + * system this thread must exist and be able to process all directives. * - * Port Specific Information: + * Port Specific Information: * - * There is no reason to think the v850 needs extra MPCI receive - * server stack. + * There is no reason to think the v850 needs extra MPCI receive + * server stack. */ #define CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK 0 @@ -546,109 +547,108 @@ typedef struct { /* XXX evaluate removing it */ #if 0 /** - * @ingroup CPUInterrupt - * This defines the number of entries in the @ref _ISR_Vector_table managed - * by RTEMS. + * This defines the number of entries in the @ref _ISR_Vector_table managed + * by RTEMS. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define CPU_INTERRUPT_NUMBER_OF_VECTORS 32 #endif /** - * @ingroup CPUInterrupt - * This defines the highest interrupt vector number for this port. + * This defines the highest interrupt vector number for this port. */ #define CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER (CPU_INTERRUPT_NUMBER_OF_VECTORS - 1) /** - * @ingroup CPUInterrupt - * This is defined if the port has a special way to report the ISR nesting - * level. Most ports maintain the variable @a _ISR_Nest_level. + * This is defined if the port has a special way to report the ISR nesting + * level. Most ports maintain the variable @a _ISR_Nest_level. */ #define CPU_PROVIDES_ISR_IS_IN_PROGRESS FALSE +/** @} */ + /** - * @ingroup CPUContext - * Should be large enough to run all RTEMS tests. This ensures - * that a "reasonable" small application should not have any problems. + * @ingroup CPUContext + * Should be large enough to run all RTEMS tests. This ensures + * that a "reasonable" small application should not have any problems. * - * Port Specific Information: + * Port Specific Information: * - * This should be very conservative on the v850. + * This should be very conservative on the v850. */ #define CPU_STACK_MINIMUM_SIZE (1024*4) #define CPU_SIZEOF_POINTER 4 /** - * CPU's worst alignment requirement for data types on a byte boundary. This - * alignment does not take into account the requirements for the stack. + * CPU's worst alignment requirement for data types on a byte boundary. This + * alignment does not take into account the requirements for the stack. * - * Port Specific Information: + * Port Specific Information: * - * There is no apparent reason why this should be larger than 8. + * There is no apparent reason why this should be larger than 8. */ #define CPU_ALIGNMENT 8 /** - * This number corresponds to the byte alignment requirement for the - * heap handler. This alignment requirement may be stricter than that - * for the data types alignment specified by @ref CPU_ALIGNMENT. It is - * common for the heap to follow the same alignment requirement as - * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for - * the heap, then this should be set to @ref CPU_ALIGNMENT. - * - * @note This does not have to be a power of 2 although it should be - * a multiple of 2 greater than or equal to 2. The requirement - * to be a multiple of 2 is because the heap uses the least - * significant field of the front and back flags to indicate - * that a block is in use or free. So you do not want any odd - * length blocks really putting length data in that bit. - * - * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will - * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that - * elements allocated from the heap meet all restrictions. - * - * Port Specific Information: - * - * There is no apparent reason why this should be larger than CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for the + * heap handler. This alignment requirement may be stricter than that + * for the data types alignment specified by @ref CPU_ALIGNMENT. It is + * common for the heap to follow the same alignment requirement as + * @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is strict enough for + * the heap, then this should be set to @ref CPU_ALIGNMENT. + * + * @note This does not have to be a power of 2 although it should be + * a multiple of 2 greater than or equal to 2. The requirement + * to be a multiple of 2 is because the heap uses the least + * significant field of the front and back flags to indicate + * that a block is in use or free. So you do not want any odd + * length blocks really putting length data in that bit. + * + * On byte oriented architectures, @ref CPU_HEAP_ALIGNMENT normally will + * have to be greater or equal to than @ref CPU_ALIGNMENT to ensure that + * elements allocated from the heap meet all restrictions. + * + * Port Specific Information: + * + * There is no apparent reason why this should be larger than CPU_ALIGNMENT. */ #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for memory - * buffers allocated by the partition manager. This alignment requirement - * may be stricter than that for the data types alignment specified by - * @ref CPU_ALIGNMENT. It is common for the partition to follow the same - * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is - * strict enough for the partition, then this should be set to - * @ref CPU_ALIGNMENT. + * This number corresponds to the byte alignment requirement for memory + * buffers allocated by the partition manager. This alignment requirement + * may be stricter than that for the data types alignment specified by + * @ref CPU_ALIGNMENT. It is common for the partition to follow the same + * alignment requirement as @ref CPU_ALIGNMENT. If the @ref CPU_ALIGNMENT is + * strict enough for the partition, then this should be set to + * @ref CPU_ALIGNMENT. * - * @note This does not have to be a power of 2. It does have to - * be greater or equal to than @ref CPU_ALIGNMENT. + * @note This does not have to be a power of 2. It does have to + * be greater or equal to than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * There is no apparent reason why this should be larger than CPU_ALIGNMENT. + * There is no apparent reason why this should be larger than CPU_ALIGNMENT. */ #define CPU_PARTITION_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. If the - * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be - * set to 0. + * This number corresponds to the byte alignment requirement for the + * stack. This alignment requirement may be stricter than that for the + * data types alignment specified by @ref CPU_ALIGNMENT. If the + * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be + * set to 0. * - * @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. + * @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. * - * Port Specific Information: + * Port Specific Information: * - * The v850 has enough RAM where alignment to 16 may be desirable depending - * on the cache properties. But this remains to be demonstrated. + * The v850 has enough RAM where alignment to 16 may be desirable depending + * on the cache properties. But this remains to be demonstrated. */ #define CPU_STACK_ALIGNMENT 4 @@ -657,15 +657,19 @@ typedef struct { */ /** - * @ingroup CPUInterrupt - * Disable all interrupts for an RTEMS critical section. The previous - * level is returned in @a _isr_cookie. + * @addtogroup CPUInterrupt + */ +/**@{**/ + +/** + * Disable all interrupts for an RTEMS critical section. The previous + * level is returned in @a _isr_cookie. * - * @param[out] _isr_cookie will contain the previous level cookie + * @param[out] _isr_cookie will contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * On the v850, we need to save the PSW and use "di" to disable interrupts. + * On the v850, we need to save the PSW and use "di" to disable interrupts. */ #define _CPU_ISR_Disable( _isr_cookie ) \ do { \ @@ -677,16 +681,15 @@ typedef struct { } while (0) /** - * @ingroup CPUInterrupt - * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). - * This indicates the end of an RTEMS critical section. The parameter - * @a _isr_cookie is not modified. + * Enable interrupts to the previous level (returned by _CPU_ISR_Disable). + * This indicates the end of an RTEMS critical section. The parameter + * @a _isr_cookie is not modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * On the v850, we simply need to restore the PSW. + * On the v850, we simply need to restore the PSW. */ #define _CPU_ISR_Enable( _isr_cookie ) \ do { \ @@ -696,17 +699,16 @@ typedef struct { } while (0) /** - * @ingroup CPUInterrupt - * This temporarily restores the interrupt to @a _isr_cookie before immediately - * disabling them again. This is used to divide long RTEMS critical - * sections into two or more parts. The parameter @a _isr_cookie is not - * modified. + * This temporarily restores the interrupt to @a _isr_cookie before immediately + * disabling them again. This is used to divide long RTEMS critical + * sections into two or more parts. The parameter @a _isr_cookie is not + * modified. * - * @param[in] _isr_cookie contain the previous level cookie + * @param[in] _isr_cookie contain the previous level cookie * - * Port Specific Information: + * Port Specific Information: * - * This saves at least one instruction over using enable/disable back to back. + * This saves at least one instruction over using enable/disable back to back. */ #define _CPU_ISR_Flash( _isr_cookie ) \ do { \ @@ -716,21 +718,19 @@ typedef struct { } while (0) /** - * @ingroup CPUInterrupt - * - * This routine and @ref _CPU_ISR_Get_level - * Map the interrupt level in task mode onto the hardware that the CPU - * actually provides. Currently, interrupt levels which do not - * map onto the CPU in a generic fashion are undefined. Someday, - * it would be nice if these were "mapped" by the application - * via a callout. For example, m68k has 8 levels 0 - 7, levels - * 8 - 255 would be available for bsp/application specific meaning. - * This could be used to manage a programmable interrupt controller - * via the rtems_task_mode directive. - * - * Port Specific Information: - * - * On the v850, level 0 is enabled. Non-zero is disabled. + * This routine and @ref _CPU_ISR_Get_level + * Map the interrupt level in task mode onto the hardware that the CPU + * actually provides. Currently, interrupt levels which do not + * map onto the CPU in a generic fashion are undefined. Someday, + * it would be nice if these were "mapped" by the application + * via a callout. For example, m68k has 8 levels 0 - 7, levels + * 8 - 255 would be available for bsp/application specific meaning. + * This could be used to manage a programmable interrupt controller + * via the rtems_task_mode directive. + * + * Port Specific Information: + * + * On the v850, level 0 is enabled. Non-zero is disabled. */ #define _CPU_ISR_Set_level( new_level ) \ do { \ @@ -741,52 +741,53 @@ typedef struct { } while (0) /** - * @ingroup CPUInterrupt - * Return the current interrupt disable level for this task in - * the format used by the interrupt level portion of the task mode. + * Return the current interrupt disable level for this task in + * the format used by the interrupt level portion of the task mode. * - * @note This routine usually must be implemented as a subroutine. + * @note This routine usually must be implemented as a subroutine. * - * Port Specific Information: + * Port Specific Information: * - * This method is implemented in C on the v850. + * This method is implemented in C on the v850. */ uint32_t _CPU_ISR_Get_level( void ); /* end of ISR handler macros */ +/** @} */ + /* Context handler macros */ /** - * @ingroup CPUContext - * Initialize the context to a state suitable for starting a - * task after a context restore operation. Generally, this - * involves: - * - * - setting a starting address - * - preparing the stack - * - preparing the stack and frame pointers - * - setting the proper interrupt level in the context - * - initializing the floating point context - * - * This routine generally does not set any unnecessary register - * in the context. The state of the "general data" registers is - * undefined at task start time. - * - * @param[in] _the_context is the context structure to be initialized - * @param[in] _stack_base is the lowest physical address of this task's stack - * @param[in] _size is the size of this task's stack - * @param[in] _isr is the interrupt disable level - * @param[in] _entry_point is the thread's entry point. This is - * always @a _Thread_Handler - * @param[in] _is_fp is TRUE if the thread is to be a floating - * point thread. This is typically only used on CPUs where the - * FPU may be easily disabled by software such as on the SPARC - * where the PSR contains an enable FPU bit. - * - * Port Specific Information: - * - * This method is implemented in C on the v850. + * @ingroup CPUContext + * Initialize the context to a state suitable for starting a + * task after a context restore operation. Generally, this + * involves: + * + * - setting a starting address + * - preparing the stack + * - preparing the stack and frame pointers + * - setting the proper interrupt level in the context + * - initializing the floating point context + * + * This routine generally does not set any unnecessary register + * in the context. The state of the "general data" registers is + * undefined at task start time. + * + * @param[in] _the_context is the context structure to be initialized + * @param[in] _stack_base is the lowest physical address of this task's stack + * @param[in] _size is the size of this task's stack + * @param[in] _isr is the interrupt disable level + * @param[in] _entry_point is the thread's entry point. This is + * always @a _Thread_Handler + * @param[in] _is_fp is TRUE if the thread is to be a floating + * point thread. This is typically only used on CPUs where the + * FPU may be easily disabled by software such as on the SPARC + * where the PSR contains an enable FPU bit. + * + * Port Specific Information: + * + * This method is implemented in C on the v850. */ void _CPU_Context_Initialize( Context_Control *the_context, @@ -798,19 +799,19 @@ void _CPU_Context_Initialize( ); /** - * This routine is responsible for somehow restarting the currently - * executing task. If you are lucky, then all that is necessary - * is restoring the context. Otherwise, there will need to be - * a special assembly routine which does something special in this - * case. For many ports, simply adding a label to the restore path - * of @ref _CPU_Context_switch will work. On other ports, it may be - * possibly to load a few arguments and jump to the restore path. It will - * not work if restarting self conflicts with the stack frame - * assumptions of restoring a context. - * - * Port Specific Information: - * - * On the v850, we require a special entry point to restart a task. + * This routine is responsible for somehow restarting the currently + * executing task. If you are lucky, then all that is necessary + * is restoring the context. Otherwise, there will need to be + * a special assembly routine which does something special in this + * case. For many ports, simply adding a label to the restore path + * of @ref _CPU_Context_switch will work. On other ports, it may be + * possibly to load a few arguments and jump to the restore path. It will + * not work if restarting self conflicts with the stack frame + * assumptions of restoring a context. + * + * Port Specific Information: + * + * On the v850, we require a special entry point to restart a task. */ #define _CPU_Context_Restart_self( _the_context ) \ _CPU_Context_restore( (_the_context) ); @@ -818,26 +819,26 @@ void _CPU_Context_Initialize( /* XXX this should be possible to remove */ #if 0 /** - * @ingroup CPUContext - * The purpose of this macro is to allow the initial pointer into - * a floating point context area (used to save the floating point - * context) to be at an arbitrary place in the floating point - * context area. - * - * This is necessary because some FP units are designed to have - * their context saved as a stack which grows into lower addresses. - * Other FP units can be saved by simply moving registers into offsets - * from the base of the context area. Finally some FP units provide - * a "dump context" instruction which could fill in from high to low - * or low to high based on the whim of the CPU designers. - * - * @param[in] _base is the lowest physical address of the floating point - * context area - * @param[in] _offset is the offset into the floating point area - * - * Port Specific Information: - * - * XXX document implementation including references if appropriate + * @ingroup CPUContext + * The purpose of this macro is to allow the initial pointer into + * a floating point context area (used to save the floating point + * context) to be at an arbitrary place in the floating point + * context area. + * + * This is necessary because some FP units are designed to have + * their context saved as a stack which grows into lower addresses. + * Other FP units can be saved by simply moving registers into offsets + * from the base of the context area. Finally some FP units provide + * a "dump context" instruction which could fill in from high to low + * or low to high based on the whim of the CPU designers. + * + * @param[in] _base is the lowest physical address of the floating point + * context area + * @param[in] _offset is the offset into the floating point area + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate */ #define _CPU_Context_Fp_start( _base, _offset ) \ ( (void *) _Addresses_Add_offset( (_base), (_offset) ) ) @@ -846,22 +847,22 @@ void _CPU_Context_Initialize( /* XXX this should be possible to remove */ #if 0 /** - * This routine initializes the FP context area passed to it to. - * There are a few standard ways in which to initialize the - * floating point context. The code included for this macro assumes - * that this is a CPU in which a "initial" FP context was saved into - * @a _CPU_Null_fp_context and it simply copies it to the destination - * context passed to it. + * This routine initializes the FP context area passed to it to. + * There are a few standard ways in which to initialize the + * floating point context. The code included for this macro assumes + * that this is a CPU in which a "initial" FP context was saved into + * @a _CPU_Null_fp_context and it simply copies it to the destination + * context passed to it. * - * Other floating point context save/restore models include: - * -# not doing anything, and - * -# putting a "null FP status word" in the correct place in the FP context. + * Other floating point context save/restore models include: + * -# not doing anything, and + * -# putting a "null FP status word" in the correct place in the FP context. * - * @param[in] _destination is the floating point context area + * @param[in] _destination is the floating point context area * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ #define _CPU_Context_Initialize_fp( _destination ) \ { \ @@ -873,13 +874,13 @@ void _CPU_Context_Initialize( /* Fatal Error manager macros */ /** - * This routine copies _error into a known place -- typically a stack - * location or a register, optionally disables interrupts, and - * halts/stops the CPU. + * This routine copies _error into a known place -- typically a stack + * location or a register, optionally disables interrupts, and + * halts/stops the CPU. * - * Port Specific Information: + * Port Specific Information: * - * Move the error code into r10, disable interrupts and halt. + * Move the error code into r10, disable interrupts and halt. */ #define _CPU_Fatal_halt( _error ) \ do { \ @@ -893,75 +894,73 @@ void _CPU_Context_Initialize( /* Bitfield handler macros */ /** - * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation + * @defgroup CPUBitfield Processor Dependent Bitfield Manipulation * - * This set of routines are used to implement fast searches for - * the most important ready task. + * This set of routines are used to implement fast searches for + * the most important ready task. */ +/**@{**/ /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the generic bitfield - * manipulation implementation. + * This definition is set to TRUE if the port uses the generic bitfield + * manipulation implementation. */ #define CPU_USE_GENERIC_BITFIELD_CODE TRUE /** - * @ingroup CPUBitfield - * This definition is set to TRUE if the port uses the data tables provided - * by the generic bitfield manipulation implementation. - * This can occur when actually using the generic bitfield manipulation - * implementation or when implementing the same algorithm in assembly - * language for improved performance. It is unlikely that a port will use - * the data if it has a bitfield scan instruction. - * - * Port Specific Information: - * - * There is no single v850 instruction to do a bit scan so there is - * no CPU specific implementation of bit field scanning. The empty - * stub routines are left as a place holder in case someone figures - * out how to do a v850 implementation better than the generic algorithm. + * This definition is set to TRUE if the port uses the data tables provided + * by the generic bitfield manipulation implementation. + * This can occur when actually using the generic bitfield manipulation + * implementation or when implementing the same algorithm in assembly + * language for improved performance. It is unlikely that a port will use + * the data if it has a bitfield scan instruction. + * + * Port Specific Information: + * + * There is no single v850 instruction to do a bit scan so there is + * no CPU specific implementation of bit field scanning. The empty + * stub routines are left as a place holder in case someone figures + * out how to do a v850 implementation better than the generic algorithm. */ #define CPU_USE_GENERIC_BITFIELD_DATA TRUE /** - * @ingroup CPUBitfield - * This routine sets @a _output to the bit number of the first bit - * set in @a _value. @a _value is of CPU dependent type - * @a Priority_bit_map_Control. This type may be either 16 or 32 bits - * wide although only the 16 least significant bits will be used. - * - * There are a number of variables in using a "find first bit" type - * instruction. - * - * -# What happens when run on a value of zero? - * -# Bits may be numbered from MSB to LSB or vice-versa. - * -# The numbering may be zero or one based. - * -# The "find first bit" instruction may search from MSB or LSB. - * - * RTEMS guarantees that (1) will never happen so it is not a concern. - * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and - * @ref _CPU_Priority_bits_index. These three form a set of routines - * which must logically operate together. Bits in the _value are - * set and cleared based on masks built by @ref _CPU_Priority_Mask. - * The basic major and minor values calculated by @ref _Priority_Major - * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index - * to properly range between the values returned by the "find first bit" - * instruction. This makes it possible for @ref _Priority_Get_highest to - * calculate the major and directly index into the minor table. - * This mapping is necessary to ensure that 0 (a high priority major/minor) - * is the first bit found. - * - * This entire "find first bit" and mapping process depends heavily - * on the manner in which a priority is broken into a major and minor - * components with the major being the 4 MSB of a priority and minor - * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest - * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next - * to the lowest priority. - * - * If your CPU does not have a "find first bit" instruction, then - * there are ways to make do without it. Here are a handful of ways - * to implement this in software: + * This routine sets @a _output to the bit number of the first bit + * set in @a _value. @a _value is of CPU dependent type + * @a Priority_bit_map_Control. This type may be either 16 or 32 bits + * wide although only the 16 least significant bits will be used. + * + * There are a number of variables in using a "find first bit" type + * instruction. + * + * -# What happens when run on a value of zero? + * -# Bits may be numbered from MSB to LSB or vice-versa. + * -# The numbering may be zero or one based. + * -# The "find first bit" instruction may search from MSB or LSB. + * + * RTEMS guarantees that (1) will never happen so it is not a concern. + * (2),(3), (4) are handled by the macros @ref _CPU_Priority_Mask and + * @ref _CPU_Priority_bits_index. These three form a set of routines + * which must logically operate together. Bits in the _value are + * set and cleared based on masks built by @ref _CPU_Priority_Mask. + * The basic major and minor values calculated by @ref _Priority_Major + * and @ref _Priority_Minor are "massaged" by @ref _CPU_Priority_bits_index + * to properly range between the values returned by the "find first bit" + * instruction. This makes it possible for @ref _Priority_Get_highest to + * calculate the major and directly index into the minor table. + * This mapping is necessary to ensure that 0 (a high priority major/minor) + * is the first bit found. + * + * This entire "find first bit" and mapping process depends heavily + * on the manner in which a priority is broken into a major and minor + * components with the major being the 4 MSB of a priority and minor + * the 4 LSB. Thus (0 << 4) + 0 corresponds to priority 0 -- the highest + * priority. And (15 << 4) + 14 corresponds to priority 254 -- the next + * to the lowest priority. + * + * If your CPU does not have a "find first bit" instruction, then + * there are ways to make do without it. Here are a handful of ways + * to implement this in software: * @verbatim - a series of 16 bit test instructions @@ -978,16 +977,16 @@ void _CPU_Context_Initialize( _number += bit_set_table[ _value ] @endverbatim - * where bit_set_table[ 16 ] has values which indicate the first - * bit set + * where bit_set_table[ 16 ] has values which indicate the first + * bit set * - * @param[in] _value is the value to be scanned - * @param[in] _output is the first bit set + * @param[in] _value is the value to be scanned + * @param[in] _output is the first bit set * - * Port Specific Information: + * Port Specific Information: * - * There is no single v850 instruction to do a bit scan so there is - * no CPU specific implementation of bit field scanning. + * There is no single v850 instruction to do a bit scan so there is + * no CPU specific implementation of bit field scanning. */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) #define _CPU_Bitfield_Find_first_bit( _value, _output ) \ @@ -999,14 +998,14 @@ void _CPU_Context_Initialize( /* end of Bitfield handler macros */ /** - * This routine builds the mask which corresponds to the bit fields - * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion - * for that routine. + * This routine builds the mask which corresponds to the bit fields + * as searched by @ref _CPU_Bitfield_Find_first_bit. See the discussion + * for that routine. * - * Port Specific Information: + * Port Specific Information: * - * There is no single v850 instruction to do a bit scan so there is - * no CPU specific implementation of bit field scanning. + * There is no single v850 instruction to do a bit scan so there is + * no CPU specific implementation of bit field scanning. */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1016,18 +1015,17 @@ void _CPU_Context_Initialize( #endif /** - * @ingroup CPUBitfield - * This routine translates the bit numbers returned by - * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as - * a major or minor component of a priority. See the discussion - * for that routine. + * This routine translates the bit numbers returned by + * @ref _CPU_Bitfield_Find_first_bit into something suitable for use as + * a major or minor component of a priority. See the discussion + * for that routine. * - * @param[in] _priority is the major or minor number to translate + * @param[in] _priority is the major or minor number to translate * - * Port Specific Information: + * Port Specific Information: * - * There is no single v850 instruction to do a bit scan so there is - * no CPU specific implementation of bit field scanning. + * There is no single v850 instruction to do a bit scan so there is + * no CPU specific implementation of bit field scanning. */ #if (CPU_USE_GENERIC_BITFIELD_CODE == FALSE) @@ -1038,30 +1036,36 @@ void _CPU_Context_Initialize( /* end of Priority handler macros */ +/** @} */ + /* functions */ /** - * @brief CPU Initialize - * This routine performs CPU dependent initialization. + * @brief CPU initialize. + * This routine performs CPU dependent initialization. * - * Port Specific Information: + * Port Specific Information: * - * This is implemented in C. + * This is implemented in C. * - * v850 CPU Dependent Source + * v850 CPU Dependent Source */ void _CPU_Initialize(void); /** - * @ingroup CPUContext - * This routine switches from the run context to the heir context. + * @addtogroup CPUContext + */ +/**@{**/ + +/** + * This routine switches from the run context to the heir context. * - * @param[in] run points to the context of the currently executing task - * @param[in] heir points to the context of the heir task + * @param[in] run points to the context of the currently executing task + * @param[in] heir points to the context of the heir task * - * Port Specific Information: + * Port Specific Information: * - * This is implemented in assembly on the v850. + * This is implemented in assembly on the v850. */ void _CPU_Context_switch( Context_Control *run, @@ -1069,17 +1073,16 @@ void _CPU_Context_switch( ); /** - * @ingroup CPUContext - * This routine is generally used only to restart self in an - * efficient manner. It may simply be a label in @ref _CPU_Context_switch. + * This routine is generally used only to restart self in an + * efficient manner. It may simply be a label in @ref _CPU_Context_switch. * - * @param[in] new_context points to the context to be restored. + * @param[in] new_context points to the context to be restored. * - * @note May be unnecessary to reload some registers. + * @note May be unnecessary to reload some registers. * - * Port Specific Information: + * Port Specific Information: * - * This is implemented in assembly on the v850. + * This is implemented in assembly on the v850. */ void _CPU_Context_restore( Context_Control *new_context @@ -1088,18 +1091,17 @@ void _CPU_Context_restore( /* XXX this should be possible to remove */ #if 0 /** - * @ingroup CPUContext - * This routine saves the floating point context passed to it. + * This routine saves the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_restore_fp to restore this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_restore_fp to restore this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_save_fp( Context_Control_fp **fp_context_ptr @@ -1109,56 +1111,57 @@ void _CPU_Context_save_fp( /* XXX this should be possible to remove */ #if 0 /** - * @ingroup CPUContext - * This routine restores the floating point context passed to it. + * This routine restores the floating point context passed to it. * - * @param[in] fp_context_ptr is a pointer to a pointer to a floating - * point context area to restore + * @param[in] fp_context_ptr is a pointer to a pointer to a floating + * point context area to restore * - * @return on output @a *fp_context_ptr will contain the address that - * should be used with @ref _CPU_Context_save_fp to save this context. + * @return on output @a *fp_context_ptr will contain the address that + * should be used with @ref _CPU_Context_save_fp to save this context. * - * Port Specific Information: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * XXX document implementation including references if appropriate */ void _CPU_Context_restore_fp( Context_Control_fp **fp_context_ptr ); #endif +/** @} */ + /* FIXME */ typedef CPU_Interrupt_frame CPU_Exception_frame; void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); /** - * @ingroup CPUEndian - * The following routine swaps the endian format of an unsigned int. - * It must be static because it is referenced indirectly. + * @ingroup CPUEndian + * The following routine swaps the endian format of an unsigned int. + * It must be static because it is referenced indirectly. * - * This version will work on any processor, but if there is a better - * way for your CPU PLEASE use it. The most common way to do this is to: + * This version will work on any processor, but if there is a better + * way for your CPU PLEASE use it. The most common way to do this is to: * - * swap least significant two bytes with 16-bit rotate - * swap upper and lower 16-bits - * swap most significant two bytes with 16-bit rotate + * swap least significant two bytes with 16-bit rotate + * swap upper and lower 16-bits + * swap most significant two bytes with 16-bit rotate * - * Some CPUs have special instructions which swap a 32-bit quantity in - * a single instruction (e.g. i486). It is probably best to avoid - * an "endian swapping control bit" in the CPU. One good reason is - * that interrupts would probably have to be disabled to ensure that - * an interrupt does not try to access the same "chunk" with the wrong - * endian. Another good reason is that on some CPUs, the endian bit - * endianness for ALL fetches -- both code and data -- so the code - * will be fetched incorrectly. + * Some CPUs have special instructions which swap a 32-bit quantity in + * a single instruction (e.g. i486). It is probably best to avoid + * an "endian swapping control bit" in the CPU. One good reason is + * that interrupts would probably have to be disabled to ensure that + * an interrupt does not try to access the same "chunk" with the wrong + * endian. Another good reason is that on some CPUs, the endian bit + * endianness for ALL fetches -- both code and data -- so the code + * will be fetched incorrectly. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped * - * Port Specific Information: + * Port Specific Information: * - * The v850 has a single instruction to swap endianness on a 32 bit quantity. + * The v850 has a single instruction to swap endianness on a 32 bit quantity. */ static inline uint32_t CPU_swap_u32( uint32_t value @@ -1185,15 +1188,15 @@ static inline uint32_t CPU_swap_u32( } /** - * @ingroup CPUEndian - * This routine swaps a 16 bir quantity. + * @ingroup CPUEndian + * This routine swaps a 16 bir quantity. * - * @param[in] value is the value to be swapped - * @return the value after being endian swapped + * @param[in] value is the value to be swapped + * @return the value after being endian swapped * - * Port Specific Information: + * Port Specific Information: * - * The v850 has a single instruction to swap endianness on a 16 bit quantity. + * The v850 has a single instruction to swap endianness on a 16 bit quantity. */ static inline uint16_t CPU_swap_u16( uint16_t value ) { diff --git a/cpukit/score/cpu/v850/rtems/score/cpu_asm.h b/cpukit/score/cpu/v850/rtems/score/cpu_asm.h index 49a44a93a1..bc22bc199b 100644 --- a/cpukit/score/cpu/v850/rtems/score/cpu_asm.h +++ b/cpukit/score/cpu/v850/rtems/score/cpu_asm.h @@ -1,11 +1,10 @@ /** - * @file rtems/score/cpu_asm.h - */ - -/* - * Very loose template for an include file for the cpu_asm.? file - * if it is implemented as a ".S" file (preprocessed by cpp) instead - * of a ".s" file (preprocessed by gm4 or gasp). + * @file + * + * @brief V850 Assembly File + * Very loose template for an include file for the cpu_asm.? file + * if it is implemented as a ".S" file (preprocessed by cpp) instead + * of a ".s" file (preprocessed by gm4 or gasp). */ /* diff --git a/cpukit/score/cpu/v850/rtems/score/types.h b/cpukit/score/cpu/v850/rtems/score/types.h index 32ff881898..e831b2dc13 100644 --- a/cpukit/score/cpu/v850/rtems/score/types.h +++ b/cpukit/score/cpu/v850/rtems/score/types.h @@ -1,11 +1,13 @@ /** - * @file rtems/score/types.h + * @file + * + * @brief V850 CPU Type Definitions + * + * This include file contains type definitions pertaining to the + * v850 processor family. */ /* - * This include file contains type definitions pertaining to the - * v850 processor family. - * * COPYRIGHT (c) 1989-2011. * On-Line Applications Research Corporation (OAR). * diff --git a/cpukit/score/cpu/v850/rtems/score/v850.h b/cpukit/score/cpu/v850/rtems/score/v850.h index 3e9bec56f3..df35925c7b 100644 --- a/cpukit/score/cpu/v850/rtems/score/v850.h +++ b/cpukit/score/cpu/v850/rtems/score/v850.h @@ -1,8 +1,12 @@ -/* - * This file sets up basic CPU dependency settings based on - * compiler settings. For example, it can determine if - * floating point is available. This particular implementation - * is specified to the Renesas v850 port. +/** + * @file + * + * @brief V850 Set up Basic CPU Dependency Settings Based on Compiler Settings + * + * This file sets up basic CPU dependency settings based on + * compiler settings. For example, it can determine if + * floating point is available. This particular implementation + * is specified to the Renesas v850 port. */ /* diff --git a/cpukit/score/include/rtems/bspsmp.h b/cpukit/score/include/rtems/bspsmp.h index 9c040efeda..d0681ca8f2 100644 --- a/cpukit/score/include/rtems/bspsmp.h +++ b/cpukit/score/include/rtems/bspsmp.h @@ -1,9 +1,11 @@ /** * @file rtems/bspsmp.h * + * @brief Interface Between RTEMS and an SMP Aware BSP + * * This include file defines the interface between RTEMS and an * SMP aware BSP. These methods will only be used when RTEMS - * is configured with SMP support enabled. + * is configured with SMP support enabled. */ /* @@ -24,8 +26,10 @@ /** * @defgroup RTEMS BSP SMP Interface * + * @ingroup Score + * * This defines the interface between RTEMS and the BSP for - * SMP support. The interface uses the term primary + * SMP support. The interface uses the term primary * to refer to the "boot" processor and secondary to refer * to the "application" processors. Different architectures * use different terminology. @@ -45,15 +49,15 @@ extern "C" { #ifndef ASM /** - * @brief Maximum Number of CPUs in SMP System + * @brief Maximum number of CPUs in SMP system. * * This variable is set during the SMP initialization sequence to * indicate the Maximum number of CPUs in this system. */ extern uint32_t rtems_configuration_smp_maximum_processors; - + /** - * @brief Initialize Secondary CPUs + * @brief Initialize secondary CPUs. * * This method is invoked by RTEMS during initialization to bring the * secondary CPUs out of reset. @@ -61,7 +65,7 @@ extern uint32_t rtems_configuration_smp_maximum_processors; * @param [in] maximum is the maximum number of CPU cores that RTEMS * can handle * - * @return This method returns the number of cores available in the + * @retval This method returns the number of cores available in the * system. */ int bsp_smp_initialize( @@ -69,17 +73,17 @@ int bsp_smp_initialize( ); /** - * @brief Obtain Current CPU Index + * @brief Obtain current CPU index. * * This method is invoked by RTEMS when it needs to know the index * of the CPU it is executing on. * - * @return This method returns the current CPU index. + * @retval This method returns the current CPU index. */ int bsp_smp_processor_id(void) RTEMS_COMPILER_PURE_ATTRIBUTE; /** - * @brief Make Request of Another CPU + * @brief Make request of another CPU. * * This method is invoked by RTEMS when it needs to make a request * of another CPU. It should be implemented using some type of @@ -94,21 +98,21 @@ void rtems_smp_send_message( ); /** - * @brief Generate a Interprocessor Broadcast Interrupt + * @brief Generate an interprocessor broadcast interrupt. * * This method is invoked when RTEMS wants to let all of the other - * CPUs know that it has sent them message. CPUs not including + * CPUs know that it has sent them message. CPUs not including * the originating CPU should receive the interrupt. * - * @note On CPUs without the capability to generate a broadcast + * @note On CPUs without the capability to generate a broadcast * to all other CPUs interrupt, this can be implemented by * a loop of sending interrupts to specific CPUs. */ void bsp_smp_broadcast_interrupt(void); /** - * @brief Generate a Interprocessor Interrupt + * @brief Generate a interprocessor interrupt. * * This method is invoked by RTEMS to let @a cpu know that it * has sent it a message. @@ -120,7 +124,7 @@ void bsp_smp_interrupt_cpu( ); /** - * @brief Obtain CPU Core Number + * @brief Obtain CPU core number. * * This method is invoked by RTEMS when it needs to know which core * number it is executing on. This is used when it needs to perform @@ -128,7 +132,7 @@ void bsp_smp_interrupt_cpu( * the other cores. For example, it may need to realize it needs to * preempt a thread on another node. * - * @return This method returns the Id of the current CPU core. + * @retval This method returns the Id of the current CPU core. */ int bsp_smp_processor_id( void ); @@ -143,7 +147,7 @@ int bsp_smp_processor_id( void ); void bsp_smp_secondary_cpu_initialize(int cpu); /** - * @brief RTEMS SMP Secondary CPU Initialize + * @brief Initialize secondary CPU and coordinates. * * This method is the C entry point which secondary CPUs should * arrange to call. It performs OS initialization for the secondary @@ -152,7 +156,7 @@ void bsp_smp_secondary_cpu_initialize(int cpu); * @note This is provided by RTEMS. */ void rtems_smp_secondary_cpu_initialize(void); - + /** * This method is invoked by the BSP to initialize the per CPU structure * for the specified @a cpu while it is bringing the secondary CPUs @@ -164,10 +168,10 @@ void rtems_smp_secondary_cpu_initialize(void); void rtems_smp_initialize_per_cpu(int cpu); /** - * @brief RTEMS SMP Proccess Interrupt + * @brief Process the incoming interprocessor request. * * This is the method called by the BSP's interrupt handler - * to process the incoming interprocessor request. + * to process the incoming interprocessor request. */ void rtems_smp_process_interrupt(void); @@ -184,9 +188,10 @@ void bsp_smp_wait_for( #endif #else - #define bsp_smp_processor_id() 0 + #define bsp_smp_processor_id() 0 #endif +/**@}*/ #endif /* end of include file */ diff --git a/cpukit/score/include/rtems/debug.h b/cpukit/score/include/rtems/debug.h index 101aea1478..3abec5f22a 100644 --- a/cpukit/score/include/rtems/debug.h +++ b/cpukit/score/include/rtems/debug.h @@ -22,6 +22,13 @@ #include <rtems/score/basedefs.h> +/** + * @defgroup ScoreDebug Debug Information + * + * @ingroup Score + */ +/**@{*/ + #ifdef __cplusplus extern "C" { #endif @@ -47,26 +54,26 @@ typedef uint32_t rtems_debug_control; SCORE_EXTERN rtems_debug_control _Debug_Level; /** - * @brief Initialize Debug Manager + * @brief Initialize debug manager. */ void _Debug_Manager_initialization( void ); /** - * @brief Enable Debugging + * @brief Enable debugging. */ void rtems_debug_enable( rtems_debug_control to_be_enabled ); /** - * @brief Disable Debugging + * @brief Disable debugging. */ void rtems_debug_disable( rtems_debug_control to_be_disabled ); /** - * @brief Check if Debug is Enabled + * @brief Check if debug is enabled. * * This routine returns TRUE if the requested debug level is * enabled, and FALSE otherwise. @@ -79,5 +86,6 @@ bool rtems_debug_is_enabled( } #endif +/**@}*/ #endif /* end of include file */ diff --git a/cpukit/score/include/rtems/score/address.h b/cpukit/score/include/rtems/score/address.h index a09d63821c..85658b55b0 100644 --- a/cpukit/score/include/rtems/score/address.h +++ b/cpukit/score/include/rtems/score/address.h @@ -1,6 +1,8 @@ /** * @file rtems/score/address.h * + * @brief Information Required to Manipulate Physical Addresses + * * This include file contains the information required to manipulate * physical addresses. */ diff --git a/cpukit/score/include/rtems/score/apiext.h b/cpukit/score/include/rtems/score/apiext.h index db77a8b9c8..54b8049241 100644 --- a/cpukit/score/include/rtems/score/apiext.h +++ b/cpukit/score/include/rtems/score/apiext.h @@ -1,6 +1,8 @@ /** * @file rtems/score/apiext.h * + * @brief API Extensions Handler + * * This is the API Extensions Handler. */ @@ -106,14 +108,14 @@ SCORE_EXTERN Chain_Control _API_extensions_List; SCORE_EXTERN Chain_Control _API_extensions_Post_switch_list; /** - * @brief Initialize the API Extensions Handler + * @brief Initialize the API extensions handler. * * This routine initializes the API extension handler. */ void _API_extensions_Initialization( void ); /** - * @brief Add Extension Set to the Active Set + * @brief Add extension set to the active set. * * This routine adds @a the_extension to the active set of API extensions. * @@ -142,7 +144,7 @@ void _API_extensions_Add_post_switch( #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) /** - * @brief Execute all Pre-Driver Extensions + * @brief Execute all pre-driver extensions. * * This routine executes all of the predriver callouts. */ @@ -150,7 +152,7 @@ void _API_extensions_Add_post_switch( #endif /** - * @brief Execute all Post-Driver Extensions + * @brief Execute all post-driver extensions. * * This routine executes all of the postdriver callouts. */ diff --git a/cpukit/score/include/rtems/score/apimutex.h b/cpukit/score/include/rtems/score/apimutex.h index 13b0dddd65..60c21ad29c 100644 --- a/cpukit/score/include/rtems/score/apimutex.h +++ b/cpukit/score/include/rtems/score/apimutex.h @@ -3,7 +3,7 @@ * * @ingroup ScoreAPIMutex * - * @brief API Mutex Handler API. + * @brief API Mutex Handler API */ /* @@ -28,9 +28,8 @@ extern "C" { * @ingroup Score * * @brief Provides routines to ensure mutual exclusion on API level. - * - * @{ */ +/**@{**/ #include <rtems/score/coremutex.h> #include <rtems/score/isr.h> @@ -62,7 +61,7 @@ SCORE_EXTERN Objects_Information _API_Mutex_Information; * The value @a maximum_mutexes is the maximum number of API mutexes that may * exist at any time. * - * @param[in] Maximum_mutexex is the maximum number of API mutexes. + * @param[in] maximum_mutexes is the maximum number of API mutexes. */ void _API_Mutex_Initialization( uint32_t maximum_mutexes ); @@ -76,11 +75,11 @@ void _API_Mutex_Allocate( API_Mutex_Control **mutex ); * @brief Acquires the specified API mutex. */ void _API_Mutex_Lock( - API_Mutex_Control *mutex + API_Mutex_Control *mutex ); /** - * @brief Releases the Specified API Mutex + * @brief Releases the specified API mutex. * * Releases the specified @a mutex. * @@ -100,12 +99,11 @@ void _API_Mutex_Unlock( API_Mutex_Control *mutex ); * When the APIs all use this for allocation and deallocation protection, then * this possibly should be renamed and moved to a higher level in the * hierarchy. - * - * @{ */ +/**@{**/ /** - * @brief Memory Allocation Mutex + * @brief Memory allocation mutex. * * This points to the API Mutex instance used to ensure that only * one thread at a time is allocating or freeing memory. @@ -113,7 +111,7 @@ void _API_Mutex_Unlock( API_Mutex_Control *mutex ); SCORE_EXTERN API_Mutex_Control *_RTEMS_Allocator_Mutex; /** - * @brief Macro to Ease Locking the Allocator Mutex + * @brief Macro to ease locking the allocator mutex. * * This macro makes it explicit that one is locking the allocator mutex. */ @@ -121,7 +119,7 @@ SCORE_EXTERN API_Mutex_Control *_RTEMS_Allocator_Mutex; _API_Mutex_Lock( _RTEMS_Allocator_Mutex ) /** - * @brief Macro to Ease Unlocking the Allocator Mutex + * @brief Macro to ease unlocking the allocator mutex. * * This macro makes it explicit that one is unlocking the allocator mutex. */ diff --git a/cpukit/score/include/rtems/score/basedefs.h b/cpukit/score/include/rtems/score/basedefs.h index e91467d84d..d6b5e24e64 100644 --- a/cpukit/score/include/rtems/score/basedefs.h +++ b/cpukit/score/include/rtems/score/basedefs.h @@ -3,7 +3,7 @@ * * @ingroup Score * - * @brief Basic definitions. + * @brief Basic Definitions */ /* @@ -20,6 +20,13 @@ #ifndef _RTEMS_BASEDEFS_H #define _RTEMS_BASEDEFS_H +/** + * @defgroup ScoreBaseDefs Basic Definitions + * + * @ingroup Score + */ +/**@{*/ + #include <rtems/score/cpuopts.h> #ifndef ASM @@ -189,4 +196,6 @@ typedef void * proc_ptr; #endif +/**@}*/ + #endif /* _RTEMS_BASEDEFS_H */ diff --git a/cpukit/score/include/rtems/score/bitfield.h b/cpukit/score/include/rtems/score/bitfield.h index cfb9bf8753..caa289adf0 100644 --- a/cpukit/score/include/rtems/score/bitfield.h +++ b/cpukit/score/include/rtems/score/bitfield.h @@ -1,7 +1,9 @@ /** - * @file rtems/score/bitfield.h + * @file rtems/score/bitfield.h * - * This include file contains all bit field manipulation routines. + * @brief Bit Field Manipulation Routines + * + * This include file contains all bit field manipulation routines. */ /* @@ -64,6 +66,8 @@ const unsigned char __log2table[256] = { #endif /** + * @brief Gets the @a _bit_number of the first bit set in the specified value. + * * This routine returns the @a _bit_number of the first bit set * in the specified value. The correspondence between @a _bit_number * and actual bit position is processor dependent. The search for diff --git a/cpukit/score/include/rtems/score/chain.h b/cpukit/score/include/rtems/score/chain.h index f0a837f379..4b2a449823 100644 --- a/cpukit/score/include/rtems/score/chain.h +++ b/cpukit/score/include/rtems/score/chain.h @@ -3,7 +3,7 @@ * * @ingroup ScoreChain * - * @brief Chain Handler API. + * @brief Chain Handler API */ /* @@ -107,7 +107,7 @@ typedef union { Chain_Control name = CHAIN_INITIALIZER_EMPTY(name) /** - * @brief Initialize a Chain Header + * @brief Initialize a chain header. * * This routine initializes @a the_chain structure to manage the * contiguous array of @a number_nodes nodes which starts at @@ -127,7 +127,7 @@ void _Chain_Initialize( ); /** - * @brief Extract the specified node from a chain + * @brief Extract the specified node from a chain. * * This routine extracts @a the_node from the chain on which it resides. * It disables interrupts to ensure the atomicity of the extract operation. @@ -142,12 +142,12 @@ void _Chain_Extract( ); /** - * @brief Obtain the first node on a chain + * @brief Obtain the first node on a chain. * * This function removes the first node from @a the_chain and returns * a pointer to that node. If @a the_chain is empty, then NULL is returned. * - * @return This method returns a pointer a node. If a node was removed, + * @retval This method returns a pointer a node. If a node was removed, * then a pointer to that node is returned. If @a the_chain was * empty, then NULL is returned. * @@ -158,14 +158,14 @@ Chain_Node *_Chain_Get( ); /** - * @brief Insert a node on a chain + * @brief Insert a node on a chain. * * This routine inserts @a the_node on a chain immediately following * @a after_node. * * @param[in] after_node is the pointer to the node in chain to be * inserted after - * @param[in] node is the pointer to the node to be inserted + * @param[in] the_node is the pointer to the node to be inserted * * @note It disables interrupts to ensure the atomicity * of the insert operation. @@ -179,7 +179,7 @@ void _Chain_Insert( ); /** - * @brief Append a node on the end of a chain + * @brief Append a node on the end of a chain. * * This routine appends @a the_node onto the end of @a the_chain. * @@ -262,7 +262,7 @@ bool _Chain_Get_with_empty_check( * @note It does NOT disable interrupts to ensure the atomicity of the * operation. * - * @return The node count of the chain. + * @retval The node count of the chain. */ size_t _Chain_Node_count_unprotected( const Chain_Control *chain ); diff --git a/cpukit/score/include/rtems/score/context.h b/cpukit/score/include/rtems/score/context.h index 96e3f15191..02bcf156dd 100644 --- a/cpukit/score/include/rtems/score/context.h +++ b/cpukit/score/include/rtems/score/context.h @@ -1,6 +1,8 @@ /** * @file rtems/score/context.h * + * @brief Information About Each Thread's Context + * * This include file contains all information about each thread's context. */ @@ -36,7 +38,7 @@ extern "C" { #include <rtems/score/cpu.h> /** - * @brief Size of Floating Point Context Area + * @brief Size of floating point context area. * * This constant defines the number of bytes required * to store a full floating point context. @@ -44,7 +46,7 @@ extern "C" { #define CONTEXT_FP_SIZE CPU_CONTEXT_FP_SIZE /** - * @brief Initialize Context Area + * @brief Initialize context area. * * This routine initializes @a _the_context such that the stack * pointer, interrupt level, and entry point are correct for the @@ -79,7 +81,7 @@ extern "C" { #endif /** - * @brief Perform Context Switch + * @brief Perform context switch. * * This routine saves the current context into the @a _executing * context record and restores the context specified by @a _heir. @@ -91,7 +93,7 @@ extern "C" { _CPU_Context_switch( _executing, _heir ) /** - * @brief Restart Currently Executing Thread + * @brief Restart currently executing thread. * * This routine restarts the calling thread by restoring its initial * stack pointer and returning to the thread's entry point. @@ -103,7 +105,7 @@ extern "C" { #if defined(RTEMS_SMP) /* - * @brief Switch to First Task on Secondary Core + * @brief Switch to first task on secondary core. * * This routine is only used to switch to the first task on a * secondary core in an SMP configuration. Since the switch @@ -119,7 +121,7 @@ extern "C" { #endif /** - * @brief Return Starting Address of Floating Point Context + * @brief Return starting address of floating point context. * * This function returns the starting address of the floating * point context save area. It is assumed that the are reserved @@ -129,13 +131,13 @@ extern "C" { * context save area. * @param[in] _offset is the offset into the floating point area * - * @return the initial FP context pointer + * @retval the initial FP context pointer */ #define _Context_Fp_start( _base, _offset ) \ _CPU_Context_Fp_start( (_base), (_offset) ) /** - * @brief Initialize Floating Point Context Area + * @brief Initialize floating point context area. * * This routine initializes the floating point context save * area to contain an initial known state. @@ -147,7 +149,7 @@ extern "C" { _CPU_Context_Initialize_fp( _fp_area ) /** - * @brief Restore Floating Point Context Area + * @brief Restore floating point context area. * * This routine restores the floating point context contained * in the @a _fp area. It is assumed that the current @@ -160,7 +162,7 @@ extern "C" { _CPU_Context_restore_fp( _fp ) /** - * @brief Save Floating Point Context Area + * @brief Save floating point context area. * * This routine saves the current floating point context * in the @a _fp area. diff --git a/cpukit/score/include/rtems/score/copyrt.h b/cpukit/score/include/rtems/score/copyrt.h index 87e652026b..cc66f5cf52 100644 --- a/cpukit/score/include/rtems/score/copyrt.h +++ b/cpukit/score/include/rtems/score/copyrt.h @@ -1,6 +1,8 @@ /** * @file rtems/score/copyrt.h * + * @brief Copyright Notice for RTEMS + * * This include file contains the copyright notice for RTEMS * which is included in every binary copy of the executive. */ @@ -17,6 +19,13 @@ #ifndef _RTEMS_SCORE_COPYRT_H #define _RTEMS_SCORE_COPYRT_H +/** + * @defgroup SuperCoreCopyright RTEMS Copyright Notice + * + * @ingroup Score + */ +/**@{*/ + #ifdef __cplusplus extern "C" { #endif @@ -36,5 +45,6 @@ extern const char _Copyright_Notice[]; } #endif +/**@}*/ #endif /* end of include file */ diff --git a/cpukit/score/include/rtems/score/corebarrier.h b/cpukit/score/include/rtems/score/corebarrier.h index 8072ec1e39..1f7c826b79 100644 --- a/cpukit/score/include/rtems/score/corebarrier.h +++ b/cpukit/score/include/rtems/score/corebarrier.h @@ -1,5 +1,7 @@ /** - * @file rtems/score/corebarrier.h + * @file rtems/score/corebarrier.h + * + * @brief Constants and Structures Associated with the Barrier Handler * * This include file contains all the constants and structures associated * with the Barrier Handler. @@ -82,7 +84,7 @@ typedef enum { } CORE_barrier_Status; /** - * @brief Core Barrier Last Status + * @brief Core barrier last status value. * * This is the last status value. */ @@ -121,7 +123,7 @@ typedef struct { } CORE_barrier_Control; /** - * @brief Initialize CORE Barrier + * @brief Initialize core barrier. * * This routine initializes the barrier based on the parameters passed. * @@ -134,7 +136,8 @@ void _CORE_barrier_Initialize( ); /** - * @brief Wait For The Barrier + * @brief Wait for the barrier. + * * This routine wait for the barrier to be released. If the barrier * is set to automatic and this is the appropriate thread, then it returns * immediately. Otherwise, the calling thread is blocked until the barrier @@ -159,7 +162,7 @@ void _CORE_barrier_Wait( ); /** - * @brief Manually releases the barrier + * @brief Manually release the barrier. * * This routine manually releases the barrier. All of the threads waiting * for the barrier will be readied. @@ -169,7 +172,7 @@ void _CORE_barrier_Wait( * @param[in] api_barrier_mp_support is the routine to invoke if the * thread unblocked is remote * - * @return the number of unblocked threads + * @retval the number of unblocked threads */ uint32_t _CORE_barrier_Release( CORE_barrier_Control *the_barrier, diff --git a/cpukit/score/include/rtems/score/coremsg.h b/cpukit/score/include/rtems/score/coremsg.h index 0f468c83bf..d022391182 100644 --- a/cpukit/score/include/rtems/score/coremsg.h +++ b/cpukit/score/include/rtems/score/coremsg.h @@ -1,6 +1,8 @@ /** * @file rtems/score/coremsg.h * + * @brief Constants and Structures Associated with the Message Queue Handler. + * * This include file contains all the constants and structures associated * with the Message queue Handler. */ @@ -64,7 +66,7 @@ extern "C" { #endif /** - * @brief Message Queue MP Callback Prototype + * @brief Callout provides to support global/multiprocessor operations. * * The following type defines the callout which the API provides * to support global/multiprocessor operations on message_queues. @@ -75,7 +77,7 @@ typedef void ( *CORE_message_queue_API_mp_support_callout )( ); /** - * @brief Message Buffer Contents Management Structure + * @brief Data types needed to manipulate the contents of message buffers. * * The following defines the data types needed to manipulate * the contents of message buffers. @@ -91,7 +93,7 @@ typedef struct { } CORE_message_queue_Buffer; /** - * @brief Message Structure + * @brief The organization of a message buffer. * * The following records define the organization of a message * buffer. @@ -108,7 +110,7 @@ typedef struct { } CORE_message_queue_Buffer_control; /** - * @brief Message Queue Blocking Disciplines + * @brief The possible blocking disciplines for a message queue. * * This enumerated types defines the possible blocking disciplines * for a message queue. @@ -121,7 +123,7 @@ typedef enum { } CORE_message_queue_Disciplines; /** - * @brief Message Priority for Appending + * @brief Used when appending messages onto a message queue. * * This is the priority constant used when appending messages onto * a message queue. @@ -129,7 +131,7 @@ typedef enum { #define CORE_MESSAGE_QUEUE_SEND_REQUEST INT_MAX /** - * @brief Message Priority for Prepending + * @brief Used when prepending messages onto a message queue. * * This is the priority constant used when prepending messages onto * a message queue. @@ -137,7 +139,7 @@ typedef enum { #define CORE_MESSAGE_QUEUE_URGENT_REQUEST INT_MIN /** - * @brief Message Insertion Operation Types + * @brief The modes in which a message may be submitted to a message queue. * * The following type details the modes in which a message * may be submitted to a message queue. The message may be posted @@ -149,7 +151,7 @@ typedef enum { typedef int CORE_message_queue_Submit_types; /** - * @brief Core Message Queue Return Statuses + * @brief The possible set of Core Message Queue handler return statuses. * * This enumerated type defines the possible set of Core Message * Queue handler return statuses. @@ -178,14 +180,14 @@ typedef enum { } CORE_message_queue_Status; /** - * @brief Core Message Queue Last Status + * @brief Core message queue last status value. * * This is the last status value. */ #define CORE_MESSAGE_QUEUE_STATUS_LAST CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT /** - * @brief Message Queue Attributes Type + * @brief Control block used to manage the attributes of each message queue. * * The following defines the control block used to manage the * attributes of each message queue. @@ -197,7 +199,7 @@ typedef struct { #if defined(RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION) /** - * @brief Message Queue Notification Callback Prototype + * @brief Type for a notification handler. * * The following defines the type for a Notification handler. A * notification handler is invoked when the message queue makes a @@ -207,10 +209,10 @@ typedef struct { #endif /** - * @brief Core Message Queue Control Structure + * @brief Control block used to manage each message queue. * * The following defines the control block used to manage each - * Message Queue + * Message Queue. */ typedef struct { /** This field is the Waiting Queue used to manage the set of tasks @@ -256,15 +258,15 @@ typedef struct { } CORE_message_queue_Control; /** - * @brief Initialize a Message Queue - * + * @brief Initialize a message queue. + * * DESCRIPTION: * * This package is the implementation of the CORE Message Queue Handler. * This core object provides task synchronization and communication functions * via messages passed to queue objects. * - * This routine initializes @a the_message_queue + * This routine initializes @a the_message_queue * based on the parameters passed. * * @param[in] the_message_queue points to the message queue to initialize @@ -275,7 +277,7 @@ typedef struct { * @param[in] maximum_message_size is the size of largest message that * may be sent to this message queue instance * - * @return true if the message queue can be initialized. In general, + * @retval true if the message queue can be initialized. In general, * false will only be returned if memory for the pending * messages cannot be allocated. */ @@ -287,8 +289,8 @@ bool _CORE_message_queue_Initialize( ); /** - * @brief Close a Message Queue - * + * @brief Close a message queue. + * * DESCRIPTION: * This package is the implementation of the CORE Message Queue Handler. * This core object provides task synchronization and communication functions @@ -310,8 +312,8 @@ void _CORE_message_queue_Close( ); /** - * @brief Flush Pending Messages - * + * @brief Flush pending messages. + * * DESCRIPTION: * This package is the implementation of the CORE Message Queue Handler. * This core object provides task synchronization and communication functions @@ -322,21 +324,21 @@ void _CORE_message_queue_Close( * * @param[in] the_message_queue points to the message queue to flush * - * @return This method returns the number of message pending messages flushed. + * @retval This method returns the number of message pending messages flushed. */ uint32_t _CORE_message_queue_Flush( CORE_message_queue_Control *the_message_queue ); /** - * @brief Flush Messages Support Routine + * @brief Flush all outstanding messages. * * This routine flushes all outstanding messages and returns * them to the inactive message chain. * * @param[in] the_message_queue points to the message queue to flush * - * @return This method returns the number of pending messages flushed. + * @retval This method returns the number of pending messages flushed. * * - INTERRUPT LATENCY: * + single case @@ -347,15 +349,15 @@ uint32_t _CORE_message_queue_Flush_support( #if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API) /** - * @brief Flush Waiting Threads. + * @brief Flush waiting threads. * * This function flushes the threads which are blocked on * @a the_message_queue's pending message queue. They are - * unblocked whether blocked sending or receiving. It returns + * unblocked whether blocked sending or receiving. It returns * the number of messages flushed from the queue. * * @param[in] the_message_queue points to the message queue to flush - * @return number of messages flushed from the queue + * @retval number of messages flushed from the queue */ void _CORE_message_queue_Flush_waiting_threads( CORE_message_queue_Control *the_message_queue @@ -363,8 +365,8 @@ uint32_t _CORE_message_queue_Flush_support( #endif /** - * @brief Broadcast a Message to the Message Queue - * + * @brief Broadcast a message to the message queue. + * * DESCRIPTION: * This package is the implementation of the CORE Message Queue Handler. * This core object provides task synchronization and communication functions @@ -382,8 +384,8 @@ uint32_t _CORE_message_queue_Flush_support( * a thread that is unblocked is actually a remote thread. * @param[out] count points to the variable that will contain the * number of tasks that are sent this message - * @return @a *count will contain the number of messages sent - * @return indication of the successful completion or reason for failure + * @retval @a *count will contain the number of messages sent + * @retval indication of the successful completion or reason for failure */ CORE_message_queue_Status _CORE_message_queue_Broadcast( CORE_message_queue_Control *the_message_queue, @@ -395,7 +397,7 @@ CORE_message_queue_Status _CORE_message_queue_Broadcast( ); /** - * @brief Submit a Message to the Message Queue + * @brief Submit a message to the message queue. * * This routine implements the send and urgent message functions. It * processes a message that is to be submitted to the designated @@ -417,7 +419,7 @@ CORE_message_queue_Status _CORE_message_queue_Broadcast( * if the message queue is full. * @param[in] timeout is the maximum number of clock ticks that the calling * thread is willing to block if the message queue is full. - * @return indication of the successful completion or reason for failure + * @retval indication of the successful completion or reason for failure */ CORE_message_queue_Status _CORE_message_queue_Submit( CORE_message_queue_Control *the_message_queue, @@ -431,8 +433,8 @@ CORE_message_queue_Status _CORE_message_queue_Submit( ); /** - * @brief Size a Message from the Message Queue - * + * @brief Size a message from the message queue. + * * DESCRIPTION: * This package is the implementation of the CORE Message Queue Handler. * This core object provides task synchronization and communication functions @@ -448,16 +450,19 @@ CORE_message_queue_Status _CORE_message_queue_Submit( * It is used when unblocking a remote thread. * @param[in] buffer is the starting address of the message buffer to * to be filled in with a message - * @param[in] size is the size of the @a buffer and indicates the maximum - * size message that the caller can receive. + * @param[in] size_p is a pointer to the size of the @a buffer and + * indicates the maximum size message that the caller can receive. * @param[in] wait indicates whether the calling thread is willing to block * if the message queue is empty. * @param[in] timeout is the maximum number of clock ticks that the calling * thread is willing to block if the message queue is empty. * - * @return indication of the successful completion or reason for failure - * @note Returns message priority via return are in TCB. - * + * @retval indication of the successful completion or reason for failure. + * On success, the location pointed to @a size_p will contain the + * size of the received message. + * + * @note Returns message priority via return area in TCB. + * * - INTERRUPT LATENCY: * + available * + wait @@ -472,8 +477,8 @@ void _CORE_message_queue_Seize( ); /** - * @brief Insert a Message into the Message Queue - * + * @brief Insert a message into the message queue. + * * This kernel routine inserts the specified message into the * message queue. It is assumed that the message has been filled * in before this routine is called. @@ -482,7 +487,7 @@ void _CORE_message_queue_Seize( * @param[in] the_message is the message to enqueue * @param[in] submit_type determines whether the message is prepended, * appended, or enqueued in priority order. - * + * * - INTERRUPT LATENCY: * + insert */ diff --git a/cpukit/score/include/rtems/score/coremutex.h b/cpukit/score/include/rtems/score/coremutex.h index 9c0fce34cc..69babb9b09 100644 --- a/cpukit/score/include/rtems/score/coremutex.h +++ b/cpukit/score/include/rtems/score/coremutex.h @@ -1,6 +1,8 @@ /** * @file rtems/score/coremutex.h * + * @brief Constants and Structures Associated with the Mutex Handler + * * This include file contains all the constants and structures associated * with the Mutex Handler. A mutex is an enhanced version of the standard * Dijkstra binary semaphore used to provide synchronization and mutual @@ -40,7 +42,7 @@ extern "C" { #include <rtems/score/sysstate.h> /** - * @brief MP Support Callback Prototype + * @brief Callout which provides to support global/multiprocessor operations. * * The following type defines the callout which the API provides * to support global/multiprocessor operations on mutexes. @@ -51,7 +53,7 @@ typedef void ( *CORE_mutex_API_mp_support_callout )( ); /** - * @brief Blocking Disciplines Enumerated Type + * @brief The blocking disciplines for a mutex. * * This enumerated type defines the blocking disciplines for a mutex. */ @@ -71,7 +73,7 @@ typedef enum { } CORE_mutex_Disciplines; /** - * @brief Mutex method return statuses + * @brief The possible Mutex handler return statuses. * * This enumerated type defines the possible Mutex handler return statuses. */ @@ -118,14 +120,14 @@ typedef enum { } CORE_mutex_Status; /** - * @brief Core Mutex Last Status + * @brief The last status value. * * This is the last status value. */ #define CORE_MUTEX_STATUS_LAST CORE_MUTEX_STATUS_CEILING_VIOLATED /** - * @brief Mutex Lock Nesting Behavior Enumeration + * @brief The possible behaviors for lock nesting. * * This enumerated type defines the possible behaviors for * lock nesting. @@ -170,7 +172,7 @@ typedef enum { #define CORE_MUTEX_LOCKED 0 /** - * @brief Core Mutex Attributes + * @brief The control block used to manage attributes of each mutex. * * The following defines the control block used to manage the * attributes of each mutex. @@ -195,7 +197,8 @@ typedef struct { } CORE_mutex_Attributes; #ifdef __RTEMS_STRICT_ORDER_MUTEX__ -/*@brief Core Mutex Lock_Chain Struct +/** + * @brief The control block to manage lock chain of priority inheritance mutex. * * The following defines the control block used to manage lock chain of * priority inheritance mutex. @@ -214,7 +217,7 @@ typedef struct { #endif /** - * @brief Core Mutex Control Structure + * @brief Control block used to manage each mutex. * * The following defines the control block used to manage each mutex. */ @@ -251,7 +254,7 @@ typedef struct { } CORE_mutex_Control; /** - * @brief Initialize a Core Mutex + * @brief Initializes the mutex based on the parameters passed. * * This routine initializes the mutex based on the parameters passed. * @@ -260,7 +263,7 @@ typedef struct { * mutex instance * @param[in] initial_lock is the initial value of the mutex * - * @return This method returns CORE_MUTEX_STATUS_SUCCESSFUL if successful. + * @retval This method returns CORE_MUTEX_STATUS_SUCCESSFUL if successful. */ CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, @@ -270,7 +273,7 @@ CORE_mutex_Status _CORE_mutex_Initialize( #ifndef __RTEMS_APPLICATION__ /** - * @brief Seize Mutex with Quick Success Path + * @brief Attempt to receive a unit from the_mutex. * * This routine attempts to receive a unit from the_mutex. * If a unit is available or if the wait flag is false, then the routine @@ -280,7 +283,7 @@ CORE_mutex_Status _CORE_mutex_Initialize( * @param[in] the_mutex is the mutex to attempt to lock * @param[in] level_p is the interrupt level holder * - * @return This routine returns 0 if "trylock" can resolve whether or not + * @retval This routine returns 0 if "trylock" can resolve whether or not * the mutex is immediately obtained or there was an error attempting to * get it. It returns 1 to indicate that the caller cannot obtain * the mutex and will have to block to do so. @@ -296,7 +299,8 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body( #if defined(__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__) /** - * @brief Trylock CORE Mutex Seize Interrupt + * @brief Interrupt trylock CORE mutex seize. + * * When doing test coverage analysis or trying to minimize the code * space for RTEMS, it is often helpful to not inline this method * multiple times. It is fairly large and has a high branch complexity @@ -322,7 +326,7 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body( #endif /** - * @brief Seize Mutex with Blocking + * @brief Performs the blocking portion of a mutex obtain. * * This routine performs the blocking portion of a mutex obtain. * It is an actual subroutine and is not implemented as something @@ -336,13 +340,13 @@ void _CORE_mutex_Seize_interrupt_blocking( Watchdog_Interval timeout ); /** - * @brief Sieze Interrupt Wrapper + * @brief Verifies that a mutex blocking seize is performed safely. * * This macro is to verify that a mutex blocking seize is * performed from a safe system state. For example, one * cannot block inside an isr. * - * @return this method returns true if dispatch is in an unsafe state. + * @retval this method returns true if dispatch is in an unsafe state. */ #ifdef RTEMS_SMP #define _CORE_mutex_Check_dispatch_for_seize(_wait) 0 @@ -354,7 +358,7 @@ void _CORE_mutex_Seize_interrupt_blocking( #endif /** - * @brief Sieze Interrupt Wrapper + * @brief Attempt to obtain the mutex. * * This routine attempts to obtain the mutex. If the mutex is available, * then it will return immediately. Otherwise, it will invoke the @@ -430,7 +434,7 @@ void _CORE_mutex_Seize_interrupt_blocking( #endif /** - * @brief Surrender the Mutex + * @brief Frees a unit to the mutex. * * This routine frees a unit to the mutex. If a task was blocked waiting for * a unit from this mutex, then that task will be readied and the unit @@ -441,7 +445,7 @@ void _CORE_mutex_Seize_interrupt_blocking( * @param[in] api_mutex_mp_support is the routine that will be called when * unblocking a remote mutex * - * @return an indication of whether the routine succeeded or failed + * @retval an indication of whether the routine succeeded or failed */ CORE_mutex_Status _CORE_mutex_Surrender( CORE_mutex_Control *the_mutex, @@ -450,7 +454,7 @@ CORE_mutex_Status _CORE_mutex_Surrender( ); /** - * @brief Flush all waiting threads + * @brief Flush all waiting threads. * * This routine assists in the deletion of a mutex by flushing the associated * wait queue. diff --git a/cpukit/score/include/rtems/score/corerwlock.h b/cpukit/score/include/rtems/score/corerwlock.h index 3b70d80701..8281abb9eb 100644 --- a/cpukit/score/include/rtems/score/corerwlock.h +++ b/cpukit/score/include/rtems/score/corerwlock.h @@ -1,6 +1,8 @@ /** * @file rtems/score/corerwlock.h * + * @brief Constants and Structures Associated with the RWLock Handler + * * This include file contains all the constants and structures associated * with the RWLock Handler. */ @@ -125,7 +127,7 @@ typedef struct { } CORE_RWLock_Control; /** - * @brief Initialize a RWlock + * @brief Initialize a RWlock. * * This routine initializes the RWLock based on the parameters passed. * @@ -138,7 +140,8 @@ void _CORE_RWLock_Initialize( ); /** - * @brief Obtain RWLock for reading + * @brief Obtain RWLock for reading. + * * This routine attempts to obtain the RWLock for read access. * * @param[in] the_rwlock is the RWLock to wait for @@ -161,8 +164,8 @@ void _CORE_RWLock_Obtain_for_reading( ); /** - * @brief RWLock Obtain for Writing - * + * @brief Obtain RWLock for writing. + * * This routine attempts to obtain the RWLock for write exclusive access. * * @param[in] the_rwlock is the RWLock to wait for @@ -184,14 +187,14 @@ void _CORE_RWLock_Obtain_for_writing( ); /** - * @brief Releases the RWLock + * @brief Release the RWLock. * * This routine manually releases @a the_rwlock. All of the threads waiting * for the RWLock will be readied. * * @param[in] the_rwlock is the RWLock to surrender * - * @return Status is returned to indicate successful or failure. + * @retval Status is returned to indicate successful or failure. */ CORE_RWLock_Status _CORE_RWLock_Release( CORE_RWLock_Control *the_rwlock @@ -214,7 +217,7 @@ CORE_RWLock_Status _CORE_RWLock_Release( ) /** - * @brief RWLock Specific Thread Queue Timeout + * @brief RWLock specific thread queue timeout. * * This routine processes a thread which timeouts while waiting on * an RWLock's thread queue. It is called by the watchdog handler. diff --git a/cpukit/score/include/rtems/score/coresem.h b/cpukit/score/include/rtems/score/coresem.h index d7a8494c55..3bb8773430 100644 --- a/cpukit/score/include/rtems/score/coresem.h +++ b/cpukit/score/include/rtems/score/coresem.h @@ -1,6 +1,8 @@ /** * @file rtems/score/coresem.h * + * @brief Data Associated with the Counting Semaphore Handler + * * This include file contains all the constants and structures associated * with the Counting Semaphore Handler. A counting semaphore is the * standard Dijkstra binary semaphore used to provide synchronization @@ -90,7 +92,7 @@ typedef enum { } CORE_semaphore_Status; /** - * @brief Core Semaphore Last Status + * @brief Core semaphore last status value. * * This is the last status value. */ @@ -127,14 +129,14 @@ typedef struct { } CORE_semaphore_Control; /** - * @brief Core Semaphore Initialize - * + * @brief Initialize the semaphore based on the parameters passed. + * * DESCRIPTION: * * This package is the implementation of the CORE Semaphore Handler. * This core object utilizes standard Dijkstra counting semaphores to provide * synchronization and mutual exclusion capabilities. - * + * * This routine initializes the semaphore based on the parameters passed. * * @param[in] the_semaphore is the semaphore to initialize @@ -170,7 +172,7 @@ void _CORE_semaphore_Initialize( #endif /** - * @brief Surrenders a Unit to a Semaphore + * @brief Surrender a unit to a semaphore. * * This routine frees a unit to the semaphore. If a task was blocked waiting * for a unit from this semaphore, then that task will be readied and the unit @@ -182,7 +184,7 @@ void _CORE_semaphore_Initialize( * @param[in] api_semaphore_mp_support is the routine to invoke if the * thread unblocked is remote * - * @return an indication of whether the routine succeeded or failed + * @retval an indication of whether the routine succeeded or failed */ CORE_semaphore_Status _CORE_semaphore_Surrender( CORE_semaphore_Control *the_semaphore, @@ -191,8 +193,8 @@ CORE_semaphore_Status _CORE_semaphore_Surrender( ); /** - * @brief Core Semaphore Flush - * + * @brief Core semaphore flush. + * * DESCRIPTION: * This package is the implementation of the CORE Semaphore Handler. * This core object utilizes standard Dijkstra counting semaphores to provide diff --git a/cpukit/score/include/rtems/score/corespinlock.h b/cpukit/score/include/rtems/score/corespinlock.h index dfa62ccb8f..5a5b68168a 100644 --- a/cpukit/score/include/rtems/score/corespinlock.h +++ b/cpukit/score/include/rtems/score/corespinlock.h @@ -1,6 +1,8 @@ /** * @file rtems/score/corespinlock.h * + * @brief Constants and Structures Associated with the Spinlock Handler + * * This include file contains all the constants and structures associated * with the Spinlock Handler. */ @@ -110,7 +112,7 @@ typedef struct { } CORE_spinlock_Control; /** - * @brief Initialized a spinlock + * @brief Initialize the spinlock. * * This routine initializes the spinlock based on the parameters passed. * @@ -123,7 +125,8 @@ void _CORE_spinlock_Initialize( ); /** - * @brief Wait for Spinlock + * @brief Wait for spinlock. + * * This routine wait for the spinlock to be released. If the spinlock * is set to automatic and this is the appropriate thread, then it returns * immediately. Otherwise, the calling thread is blocked until the spinlock @@ -133,7 +136,7 @@ void _CORE_spinlock_Initialize( * @param[in] wait is true if willing to wait * @param[in] timeout is the maximum number of ticks to spin (0 is forever) * - * @return A status is returned which indicates the success or failure of + * @retval A status is returned which indicates the success or failure of * this operation. */ CORE_spinlock_Status _CORE_spinlock_Wait( @@ -143,8 +146,8 @@ CORE_spinlock_Status _CORE_spinlock_Wait( ); /** - * @brief Manually release Spinlock - * + * @brief Manually release the spinlock. + * * This routine manually releases the spinlock. All of the threads waiting * for the spinlock will be readied. * diff --git a/cpukit/score/include/rtems/score/heap.h b/cpukit/score/include/rtems/score/heap.h index f3d259d6cf..80b3fd2404 100644 --- a/cpukit/score/include/rtems/score/heap.h +++ b/cpukit/score/include/rtems/score/heap.h @@ -3,7 +3,7 @@ * * @ingroup ScoreHeap * - * @brief Heap Handler API. + * @brief Heap Handler API */ /* @@ -126,9 +126,8 @@ extern "C" { * block indicates that the previous block is used, this ensures that the * last block appears as used for the _Heap_Is_used() and _Heap_Is_free() * functions. - * - * @{ */ +/**@{**/ typedef struct Heap_Control Heap_Control; diff --git a/cpukit/score/include/rtems/score/interr.h b/cpukit/score/include/rtems/score/interr.h index 522e1576e2..2580c72253 100644 --- a/cpukit/score/include/rtems/score/interr.h +++ b/cpukit/score/include/rtems/score/interr.h @@ -1,6 +1,8 @@ /** * @file rtems/score/interr.h * + * @brief Constants and Prototypes Related to the Internal Error Handler + * * This include file contains constants and prototypes related * to the Internal Error Handler. */ diff --git a/cpukit/score/include/rtems/score/isr.h b/cpukit/score/include/rtems/score/isr.h index 0d93d29de9..58d4fbc952 100644 --- a/cpukit/score/include/rtems/score/isr.h +++ b/cpukit/score/include/rtems/score/isr.h @@ -1,6 +1,8 @@ /** * @file rtems/score/isr.h * + * @brief Data Related to the Management of Processor Interrupt Levels + * * This include file contains all the constants and structures associated * with the management of processor interrupt levels. This handler * supports interrupt critical sections, vectoring of user interrupt @@ -87,19 +89,19 @@ SCORE_EXTERN ISR_Handler_entry *_ISR_Vector_table; #endif /** - * @brief Initialize the ISR Handler + * @brief Initialize the ISR handler. * * This routine performs the initialization necessary for the ISR handler. */ void _ISR_Handler_initialization ( void ); /** - * @brief Disable Interrupts on This Core + * @brief Disable interrupts on this core. * * This routine disables all interrupts so that a critical section * of code can be executing without being interrupted. * - * @return The argument @a _level will contain the previous interrupt + * @retval The argument @a _level will contain the previous interrupt * mask level. */ #define _ISR_Disable_on_this_core( _level ) \ @@ -109,13 +111,13 @@ void _ISR_Handler_initialization ( void ); } while (0) /** - * @brief Enable Interrupts on This Core + * @brief Enable interrupts on this core. * * This routine enables interrupts to the previous interrupt mask * LEVEL. It is used at the end of a critical section of code to * enable interrupts so they can be processed again. * - * @param[in] level contains the interrupt level mask level + * @param[in] _level contains the interrupt level mask level * previously returned by @ref _ISR_Disable_on_this_core. */ #define _ISR_Enable_on_this_core( _level ) \ @@ -125,7 +127,7 @@ void _ISR_Handler_initialization ( void ); } while (0) /** - * @brief Temporarily Enable Interrupts on This Core + * @brief Temporarily enable interrupts on this core. * * This routine temporarily enables interrupts to the previous * interrupt mask level and then disables all interrupts so that @@ -140,7 +142,7 @@ void _ISR_Handler_initialization ( void ); * must be selected with care to ensure that the critical section * properly protects itself. * - * @param[in] level contains the interrupt level mask level + * @param[in] _level contains the interrupt level mask level * previously returned by @ref _ISR_Disable_on_this_core. */ #define _ISR_Flash_on_this_core( _level ) \ @@ -153,7 +155,7 @@ void _ISR_Handler_initialization ( void ); #if defined(RTEMS_SMP) /** - * @brief Initialize SMP Interrupt Critical Section Support + * @brief Initialize SMP interrupt critical section support. * * This method initializes the variables required by the SMP implementation * of interrupt critical section management. @@ -161,17 +163,17 @@ void _ISR_Handler_initialization ( void ); void _ISR_SMP_Initialize(void); /** - * @brief Enter Interrupt Critical Section on SMP System + * @brief Enter interrupt critical section on SMP system. * * This method is used to enter an interrupt critical section that * is honored across all cores in an SMP system. * - * @return This method returns the previous interrupt mask level. + * @retval This method returns the previous interrupt mask level. */ ISR_Level _ISR_SMP_Disable(void); /** - * @brief Exit Interrupt Critical Section on SMP System + * @brief Exit interrupt critical section on SMP system. * * This method is used to exit an interrupt critical section that * is honored across all cores in an SMP system. @@ -182,7 +184,7 @@ ISR_Level _ISR_SMP_Disable(void); void _ISR_SMP_Enable(ISR_Level level); /** - * @brief Temporarily Exit Interrupt Critical Section on SMP System + * @brief Temporarily exit interrupt critical section on SMP system. * * This method is used to temporarily exit an interrupt critical section * that is honored across all cores in an SMP system. @@ -193,20 +195,20 @@ void _ISR_SMP_Enable(ISR_Level level); void _ISR_SMP_Flash(ISR_Level level); /** - * @brief Enter SMP interrupt code + * @brief Enter SMP interrupt code. * * This method is used to enter the SMP interrupt section. * - * @return This method returns the isr level. + * @retval This method returns the isr level. */ int _ISR_SMP_Enter(void); /** - * @brief Exit SMP interrupt code + * @brief Exit SMP interrupt code. * * This method is used to exit the SMP interrupt. * - * @return This method returns 0 on a simple return and returns 1 on a + * @retval This method returns 0 on a simple return and returns 1 on a * dispatching return. */ int _ISR_SMP_Exit(void); @@ -214,7 +216,7 @@ int _ISR_SMP_Exit(void); #endif /** - * @brief Enter Interrupt Disable Critical Section + * @brief Enter interrupt disable critical section. * * This routine enters an interrupt disable critical section. When * in an SMP configuration, this involves obtaining a spinlock to ensure @@ -222,7 +224,7 @@ int _ISR_SMP_Exit(void); * When on a single core system, this only involves disabling local * CPU interrupts. * - * @return The argument @a _level will contain the previous interrupt + * @retval The argument @a _level will contain the previous interrupt * mask level. */ #if defined(RTEMS_SMP) @@ -234,14 +236,14 @@ int _ISR_SMP_Exit(void); #endif /** - * @brief Exits Interrupt Disable Critical Section + * @brief Exits interrupt disable critical section. * * This routine exits an interrupt disable critical section. When * in an SMP configuration, this involves releasing a spinlock. * When on a single core system, this only involves disabling local * CPU interrupts. * - * @return The argument @a _level will contain the previous interrupt + * @retval The argument @a _level will contain the previous interrupt * mask level. */ #if defined(RTEMS_SMP) @@ -253,7 +255,7 @@ int _ISR_SMP_Exit(void); #endif /** - * @brief Temporarily Exit Interrupt Disable Critical Section + * @brief Temporarily exit interrupt disable critical section. * * This routine is used to temporarily enable interrupts * during a long critical section. It is used in long sections of @@ -263,7 +265,7 @@ int _ISR_SMP_Exit(void); * must be selected with care to ensure that the critical section * properly protects itself. * - * @return The argument @a _level will contain the previous interrupt + * @retval The argument @a _level will contain the previous interrupt * mask level. */ #if defined(RTEMS_SMP) @@ -275,7 +277,7 @@ int _ISR_SMP_Exit(void); #endif /** - * @brief Install Interrupt Handler Vector + * @brief Install interrupt handler vector. * * This routine installs new_handler as the interrupt service routine * for the specified vector. The previous interrupt service routine is @@ -289,26 +291,26 @@ int _ISR_SMP_Exit(void); * @param[in] _old_handler is a pointer to a variable which will be set * to the old handler * - * @return *_old_handler will be set to the old ISR handler + * @retval *_old_handler will be set to the old ISR handler */ #define _ISR_Install_vector( _vector, _new_handler, _old_handler ) \ _CPU_ISR_install_vector( _vector, _new_handler, _old_handler ) /** - * @brief Return Current Interrupt Level + * @brief Return current interrupt level. * * This routine returns the current interrupt level. * * LM32 Specific Information: * XXX document implementation including references if appropriate * - * @return This method returns the current level. + * @retval This method returns the current level. */ #define _ISR_Get_level() \ _CPU_ISR_Get_level() /** - * @brief Set Current Interrupt Level + * @brief Set current interrupt level. * * This routine sets the current interrupt level to that specified * by @a _new_level. The new interrupt level is effective when the @@ -324,7 +326,7 @@ int _ISR_SMP_Exit(void); } while (0) /** - * @brief ISR Handler or Dispatcher + * @brief ISR interrupt dispatcher. * * This routine is the interrupt dispatcher. ALL interrupts * are vectored to this routine so that minimal context can be saved @@ -340,7 +342,7 @@ int _ISR_SMP_Exit(void); void _ISR_Handler( void ); /** - * @brief ISR Wrapper for Thread Dispatcher + * @brief ISR wrapper for thread dispatcher. * * This routine provides a wrapper so that the routine * @ref _Thread_Dispatch can be invoked when a reschedule is necessary @@ -355,13 +357,13 @@ void _ISR_Handler( void ); void _ISR_Dispatch( void ); /** - * @brief Is an ISR in Progress + * @brief Checks if an ISR in progress. * * This function returns true if the processor is currently servicing * and interrupt and false otherwise. A return value of true indicates * that the caller is an interrupt service routine, NOT a thread. * - * @return This methods returns true when called from an ISR. + * @retval This methods returns true when called from an ISR. */ #if (CPU_PROVIDES_ISR_IS_IN_PROGRESS == TRUE) bool _ISR_Is_in_progress( void ); diff --git a/cpukit/score/include/rtems/score/isrlevel.h b/cpukit/score/include/rtems/score/isrlevel.h index 13f1c53c3f..e3146e4ef3 100644 --- a/cpukit/score/include/rtems/score/isrlevel.h +++ b/cpukit/score/include/rtems/score/isrlevel.h @@ -1,6 +1,8 @@ /** * @file rtems/score/isrlevel.h * + * @brief ISR Level Type + * * This include file defines the ISR Level type. It exists to * simplify include dependencies. It is part of the ISR Handler. */ @@ -22,6 +24,10 @@ extern "C" { #endif /** + * @defgroup ScoreISR ISR Handler + * + * @ingroup Score + * * @addtogroup ScoreISR ISR Handler */ /**@{*/ @@ -38,4 +44,3 @@ typedef uint32_t ISR_Level; } #endif #endif - diff --git a/cpukit/score/include/rtems/score/mpci.h b/cpukit/score/include/rtems/score/mpci.h index 5fce6a274f..16f6d36b20 100644 --- a/cpukit/score/include/rtems/score/mpci.h +++ b/cpukit/score/include/rtems/score/mpci.h @@ -1,6 +1,8 @@ /** * @file rtems/score/mpci.h * + * @brief Constants and Structures Associated with the MPCI Layer + * * This include file contains all the constants and structures associated * with the MPCI layer. It provides mechanisms to utilize packets. */ @@ -180,7 +182,7 @@ SCORE_EXTERN Thread_queue_Control _MPCI_Remote_blocked_threads; SCORE_EXTERN MPCI_Control *_MPCI_table; /** - * @brief Pointer to MP Thread Control Block + * @brief Pointer to MP thread control block. * * The following is used to determine when the multiprocessing receive * thread is executing so that a proxy can be allocated instead of @@ -196,7 +198,7 @@ SCORE_EXTERN MPCI_Packet_processor _MPCI_Packet_processors[MP_PACKET_CLASSES_LAST+1]; /** - * @brief Initialization of the MPCI Handler + * @brief Initialize the MPCI handler. * * This routine performs the initialization necessary for this handler. * @@ -208,14 +210,14 @@ void _MPCI_Handler_initialization( ); /** - * @brief Create the MPCI Server Thread - * + * @brief Create the MPCI server thread. + * * This routine creates the packet receive server used in MP systems. */ void _MPCI_Create_server( void ); /** - * @brief Initialize the MPCI driver + * @brief Initialize the MPCI driver. * * This routine initializes the MPCI driver by * invoking the user provided MPCI initialization callout. @@ -241,14 +243,14 @@ void _MPCI_Register_packet_processor( * This function obtains a packet by invoking the user provided * MPCI get packet callout. * - * @return This method returns a pointer to a MPCI packet which can be + * @retval This method returns a pointer to a MPCI packet which can be * filled in by the caller and used to perform a subsequent * remote operation. */ MP_packet_Prefix *_MPCI_Get_packet ( void ); /** - * @brief Deallocate a packet + * @brief Deallocate a packet. * * This routine deallocates a packet by invoking the user provided * MPCI return packet callout. @@ -260,7 +262,7 @@ void _MPCI_Return_packet ( ); /** - * @brief Send a process packet + * @brief Send a process packet. * * This routine sends a process packet by invoking the user provided * MPCI send callout. @@ -274,7 +276,7 @@ void _MPCI_Send_process_packet ( ); /** - * @brief Send a request packet + * @brief Send a request packet. * * This routine sends a request packet by invoking the user provided * MPCI send callout. @@ -286,7 +288,7 @@ void _MPCI_Send_process_packet ( * may indicate the caller is blocking on a message queue * operation. * - * @return This method returns the operation status from the remote node. + * @retval This method returns the operation status from the remote node. */ uint32_t _MPCI_Send_request_packet ( uint32_t destination, @@ -295,7 +297,7 @@ uint32_t _MPCI_Send_request_packet ( ); /** - * @brief Send a response packet + * @brief Send a response packet. * * This routine sends a response packet by invoking the user provided * MPCI send callout. @@ -309,17 +311,17 @@ void _MPCI_Send_response_packet ( ); /** - * @brief Receive a packet + * @brief Receive a packet. * * This routine receives a packet by invoking the user provided * MPCI receive callout. * - * @return This method returns the packet received. + * @retval This method returns the packet received. */ MP_packet_Prefix *_MPCI_Receive_packet ( void ); /** - * @brief Pass a packet to the thread + * @brief Pass a packet to the thread. * * This routine is responsible for passing @a the_packet to the thread * waiting on the remote operation to complete. The unblocked thread is @@ -327,7 +329,7 @@ MP_packet_Prefix *_MPCI_Receive_packet ( void ); * * @param[in] the_packet is the response packet to be processed. * - * @return This method returns a pointer to the thread which was if unblocked + * @retval This method returns a pointer to the thread which was if unblocked * or NULL if the waiting thread no longer exists. */ Thread_Control *_MPCI_Process_response ( @@ -335,7 +337,7 @@ Thread_Control *_MPCI_Process_response ( ); /** - * @brief Receive and process all packets + * @brief Receive and process all packets. * * This is the server thread which receives and processes all MCPI packets. * @@ -346,14 +348,14 @@ Thread _MPCI_Receive_server( ); /** - * @brief Announce the availability of a packet + * @brief Announce the availability of a packet. * * This routine informs RTEMS of the availability of an MPCI packet. */ void _MPCI_Announce ( void ); /** - * @brief Perform a process on another node + * @brief Perform a process on another node. * * This routine performs a remote procedure call so that a * process operation can be performed on another node. @@ -385,7 +387,7 @@ void _MPCI_Internal_packets_Send_process_packet ( */ /** - * @brief Perform requested action from another node + * @brief Perform requested action from another node. * * This routine performs the actions specific to this package for * the request from another node. @@ -417,7 +419,7 @@ void _MPCI_Internal_packets_Process_packet ( */ /** - * @brief Obtain an internal thread + * @brief Obtain an internal thread. * * This routine is used to obtain an internal threads MP packet. */ diff --git a/cpukit/score/include/rtems/score/mppkt.h b/cpukit/score/include/rtems/score/mppkt.h index 85d80b85b3..7dca30612d 100644 --- a/cpukit/score/include/rtems/score/mppkt.h +++ b/cpukit/score/include/rtems/score/mppkt.h @@ -1,6 +1,8 @@ /** * @file rtems/score/mppkt.h * + * @brief Specification for the Packet Handler + * * This package is the specification for the Packet Handler. * This handler defines the basic packet and provides * mechanisms to utilize packets based on this prefix. diff --git a/cpukit/score/include/rtems/score/object.h b/cpukit/score/include/rtems/score/object.h index 91173c335a..d6b8f48d35 100644 --- a/cpukit/score/include/rtems/score/object.h +++ b/cpukit/score/include/rtems/score/object.h @@ -1,6 +1,8 @@ /** * @file rtems/score/object.h * + * @brief Constants and Structures Associated with the Object Handler + * * This include file contains all the constants and structures associated * with the Object Handler. This Handler provides mechanisms which * can be used to initialize and manipulate all objects which have ids. @@ -40,6 +42,7 @@ extern "C" { * * @brief Provides services for all APIs. */ +/**@{*/ /** * @defgroup ScoreCPU CPU Architecture Support @@ -48,12 +51,14 @@ extern "C" { * * @brief Provides CPU architecture dependent services. */ +/**@{*/ /** * @defgroup ScoreObject Object Handler * * @ingroup Score */ +/**@{*/ /** * The following type defines the control block used to manage @@ -502,20 +507,18 @@ void _Objects_Initialize_information ( * * @param[in] api is the API of interest * - * @return A positive integer on success and 0 otherwise. + * @retval A positive integer on success and 0 otherwise. */ unsigned int _Objects_API_maximum_class( uint32_t api ); /** - * @brief Allocate Object + * @brief Allocate an object. * - * This function allocates a object control block from + * This function allocates an object control block from * the inactive chain of free object control blocks. * - * @brief Allocate Object - * * @param[in] information points to an object class information block. */ Objects_Control *_Objects_Allocate( @@ -523,9 +526,9 @@ Objects_Control *_Objects_Allocate( ); /** - * @brief Free Object + * @brief Free an object. * - * This function frees a object control block to the + * This function frees an object control block to the * inactive chain of free object control blocks. * * @param[in] information points to an object class information block. @@ -583,7 +586,8 @@ typedef enum { #define OBJECTS_NAME_ERRORS_LAST OBJECTS_INVALID_NODE /** - * @brief Object Name To Id + * @brief Converts an object name to an Id. + * * This method converts an object name to an Id. It performs a look up * using the object information block for this object class. * @@ -592,7 +596,7 @@ typedef enum { * @param[in] node is the set of nodes to search. * @param[in] id will contain the Id if the search is successful. * - * @return This method returns one of the values from the + * @retval This method returns one of the values from the * @ref Objects_Name_or_id_lookup_errors enumeration to indicate * successful or failure. On success @a id will contain the Id of * the requested object. @@ -606,7 +610,7 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32( #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) /** - * @brief Object ID to Name + * @brief Converts an object name to an Id. * * This method converts an object name to an Id. It performs a look up * using the object information block for this object class. @@ -615,7 +619,7 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32( * @param[in] name is the name of the object to find. * @param[in] id will contain the Id if the search is successful. * - * @return This method returns one of the values from the + * @retval This method returns one of the values from the * @ref Objects_Name_or_id_lookup_errors enumeration to indicate * successful or failure. On success @a id will contain the Id of * the requested object. @@ -628,7 +632,8 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_string( #endif /** - * @brief Object Id To Name + * @brief Implements the common portion of the object Id to name directives. + * * This function implements the common portion of the object Id * to name directives. This function returns the name * associated with object id. @@ -636,7 +641,7 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_string( * @param[in] id is the Id of the object whose name we are locating. * @param[in] name will contain the name of the object, if found. * - * @return This method returns one of the values from the + * @retval This method returns one of the values from the * @ref Objects_Name_or_id_lookup_errors enumeration to indicate * successful or failure. On success @a name will contain the name of * the requested object. @@ -649,7 +654,8 @@ Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( ); /** - * @brief Get Object + * @brief Maps object ids to object control blocks. + * * This function maps object ids to object control blocks. * If id corresponds to a local object, then it returns * the_object control pointer which maps to id and location @@ -663,7 +669,7 @@ Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( * @param[in] id is the Id of the object whose name we are locating. * @param[in] location will contain an indication of success or failure. * - * @return This method returns one of the values from the + * @retval This method returns one of the values from the * @ref Objects_Name_or_id_lookup_errors enumeration to indicate * successful or failure. On success @a id will contain the Id of * the requested object. @@ -680,7 +686,7 @@ Objects_Control *_Objects_Get ( ); /** - * @brief Object Get Isr Disable + * @brief Maps object ids to object control blocks. * * This function maps object ids to object control blocks. * If id corresponds to a local object, then it returns @@ -696,7 +702,7 @@ Objects_Control *_Objects_Get ( * @param[in] location will contain an indication of success or failure. * @param[in] level is the interrupt level being turned. * - * @return This method returns one of the values from the + * @retval This method returns one of the values from the * @ref Objects_Name_or_id_lookup_errors enumeration to indicate * successful or failure. On success @a name will contain the name of * the requested object. @@ -714,7 +720,7 @@ Objects_Control *_Objects_Get_isr_disable( ); /** - * @brief Get No protection Object + * @brief Maps object ids to object control blocks. * * This function maps object ids to object control blocks. * If id corresponds to a local object, then it returns @@ -729,7 +735,7 @@ Objects_Control *_Objects_Get_isr_disable( * @param[in] id is the Id of the object whose name we are locating. * @param[in] location will contain an indication of success or failure. * - * @return This method returns one of the values from the + * @retval This method returns one of the values from the * @ref Objects_Name_or_id_lookup_errors enumeration to indicate * successful or failure. On success @a id will contain the Id of * the requested object. @@ -753,7 +759,7 @@ Objects_Control *_Objects_Get_no_protection( * @param[in] location_p will contain an indication of success or failure. * @param[in] next_id_p is the Id of the next object we will look at. * - * @return This method returns the pointer to the object located or + * @retval This method returns the pointer to the object located or * NULL on error. */ Objects_Control *_Objects_Get_next( @@ -764,7 +770,7 @@ Objects_Control *_Objects_Get_next( ); /** - * @brief Get Object Information + * @brief Get object information. * * This function return the information structure given * an the API and Class. This can be done independent of @@ -773,7 +779,7 @@ Objects_Control *_Objects_Get_next( * @param[in] the_api indicates the API for the information we want * @param[in] the_class indicates the Class for the information we want * - * @return This method returns a pointer to the Object Information Table + * @retval This method returns a pointer to the Object Information Table * for the class of objects which corresponds to this object ID. */ Objects_Information *_Objects_Get_information( @@ -782,14 +788,14 @@ Objects_Information *_Objects_Get_information( ); /** - * @brief Get Information of an Object from an ID + * @brief Get information of an object from an ID. * * This function return the information structure given * an @a id of an object. * * @param[in] id is the object ID to get the information from * - * @return This method returns a pointer to the Object Information Table + * @retval This method returns a pointer to the Object Information Table * for the class of objects which corresponds to this object ID. */ Objects_Information *_Objects_Get_information_id( @@ -797,7 +803,7 @@ Objects_Information *_Objects_Get_information_id( ); /** - * @brief _Objects_Get_name_as_string + * @brief Gets object name in the form of a C string. * * This method objects the name of an object and returns its name * in the form of a C string. It attempts to be careful about @@ -807,7 +813,7 @@ Objects_Information *_Objects_Get_information_id( * @param[in] length indicates the length of the caller's buffer * @param[in] name points a string which will be filled in. * - * @return This method returns @a name or NULL on error. @a *name will + * @retval This method returns @a name or NULL on error. @a *name will * contain the name if successful. */ char *_Objects_Get_name_as_string( @@ -817,7 +823,7 @@ char *_Objects_Get_name_as_string( ); /** - * @brief Set Objects Name + * @brief Set objects name. * * This method sets the object name to either a copy of a string * or up to the first four characters of the string based upon @@ -827,7 +833,7 @@ char *_Objects_Get_name_as_string( * @param[in] the_object is the object to operate upon * @param[in] name is a pointer to the name to use * - * @return If successful, true is returned. Otherwise false is returned. + * @retval If successful, true is returned. Otherwise false is returned. */ bool _Objects_Set_name( Objects_Information *information, @@ -836,7 +842,7 @@ bool _Objects_Set_name( ); /** - * @brief Removes Object from Namespace + * @brief Removes object from namespace. * * This function removes @a the_object from the namespace. * @@ -849,7 +855,7 @@ void _Objects_Namespace_remove( ); /** - * @brief Close Object + * @brief Close object. * * This function removes the_object control pointer and object name * in the Local Pointer and Local Name Tables. @@ -867,7 +873,7 @@ void _Objects_Close( * * @param[in] information The object information table. * - * @return The count of active objects. + * @retval The count of active objects. */ Objects_Maximum _Objects_Active_count( const Objects_Information *information @@ -886,5 +892,8 @@ Objects_Maximum _Objects_Active_count( } #endif +/**@}*/ +/**@}*/ +/**@}*/ #endif /* end of include file */ diff --git a/cpukit/score/include/rtems/score/objectmp.h b/cpukit/score/include/rtems/score/objectmp.h index 4748c61e2b..1ef15b3c72 100644 --- a/cpukit/score/include/rtems/score/objectmp.h +++ b/cpukit/score/include/rtems/score/objectmp.h @@ -1,6 +1,8 @@ /** * @file rtems/score/objectmp.h * + * @brief Data Associated with the Manipulation of Global RTEMS Objects + * * This include file contains all the constants and structures associated * with the manipulation of Global RTEMS Objects. */ @@ -47,7 +49,8 @@ typedef struct { } Objects_MP_Control; /** - * @brief Objects MP Handler initialization + * @brief Intializes the inactive global object chain + * based on the maximum number of global objects configured. * * This routine intializes the inactive global object chain * based on the maximum number of global objects configured. @@ -55,7 +58,8 @@ typedef struct { void _Objects_MP_Handler_initialization(void); /** - * @brief Objects MP Handler Early Initialization + * @brief Intializes the global object node number + * used in the ID field of all objects. * * This routine intializes the global object node number * used in the ID field of all objects. @@ -63,7 +67,8 @@ void _Objects_MP_Handler_initialization(void); void _Objects_MP_Handler_early_initialization(void); /** - * @brief Objects MP Open + * @brief Place the specified global object in the + * specified information table. * * This routine place the specified global object in the * specified information table. @@ -85,7 +90,8 @@ void _Objects_MP_Open ( ); /** - * @brief Objects MP Allocate and open + * @brief Allocates a global object control block + * and places it in the specified information table. * * This routine allocates a global object control block * and places it in the specified information table. If the @@ -110,7 +116,7 @@ bool _Objects_MP_Allocate_and_open ( ); /** - * @brief Objects MP Close + * @brief Removes a global object from the specified information table. * * This routine removes a global object from the specified * information table and deallocates the global object control block. @@ -121,7 +127,8 @@ void _Objects_MP_Close ( ); /** - * @brief Objects MP Global name search + * @brief Look for the object with the_name in the global + * object tables indicated by information. * * This routine looks for the object with the_name in the global * object tables indicated by information. It returns the ID of the @@ -133,7 +140,7 @@ void _Objects_MP_Close ( * @param[in] nodes_to_search indicates the set of nodes to search. * @param[in] the_id will contain the Id of the object if found. * - * @return This method returns one of the + * @retval This method returns one of the * @ref Objects_Name_or_id_lookup_errors. If successful, @a the_id * will contain the Id of the object. */ @@ -145,7 +152,8 @@ Objects_Name_or_id_lookup_errors _Objects_MP_Global_name_search ( ); /** - * @brief Objects MP Is remote + * @brief Searches the Global Object Table managed + * by information for the object indicated by ID. * * This function searches the Global Object Table managed * by information for the object indicated by ID. If the object @@ -159,7 +167,7 @@ Objects_Name_or_id_lookup_errors _Objects_MP_Global_name_search ( * @param[in] location will contain the location of the object. * @param[in] the_object will contain a pointer to the object. * - * @return This method fills in @a location to indicate successful location + * @retval This method fills in @a location to indicate successful location * of the object or error. On success, @a the_object will be * filled in. */ diff --git a/cpukit/score/include/rtems/score/priority.h b/cpukit/score/include/rtems/score/priority.h index 3c6f7771f6..091351720c 100644 --- a/cpukit/score/include/rtems/score/priority.h +++ b/cpukit/score/include/rtems/score/priority.h @@ -1,6 +1,8 @@ /** * @file rtems/score/priority.h * + * @brief Thread Priority Manipulation Routines + * * This include file contains all thread priority manipulation routines. * This Handler provides mechanisms which can be used to * initialize and manipulate thread priorities. diff --git a/cpukit/score/include/rtems/score/prioritybitmap.h b/cpukit/score/include/rtems/score/prioritybitmap.h index 4a9966cef7..8e8f21ce34 100644 --- a/cpukit/score/include/rtems/score/prioritybitmap.h +++ b/cpukit/score/include/rtems/score/prioritybitmap.h @@ -1,6 +1,8 @@ /** * @file rtems/score/prioritybitmap.h * + * @brief Manipulation Routines for the Bitmap Priority Queue Implementation + * * This include file contains all thread priority manipulation routines for * the bit map priority queue implementation. */ @@ -18,8 +20,9 @@ #define _RTEMS_SCORE_PRIORITYBITMAP_H /** - * @addtogroup ScorePriority + * @defgroup ScorePriorityBitmap Bitmap Priority Thread Routines * + * @ingroup Score */ /**@{*/ @@ -86,7 +89,7 @@ typedef struct { * * @param[in] _bit_number is the bit number for which we need a mask * - * @return the priority bit mask + * @retval the priority bit mask * * @note This may simply be a pass through to a CPU dependent implementation. */ @@ -100,7 +103,7 @@ typedef struct { * * @param[in] _priority is the priority for which we need the index. * - * @return This method returns the array index into the priority bit map. + * @retval This method returns the array index into the priority bit map. * * @note This may simply be a pass through to a CPU dependent implementation. */ diff --git a/cpukit/score/include/rtems/score/protectedheap.h b/cpukit/score/include/rtems/score/protectedheap.h index 8c2f2cd66c..29ee62dbfb 100644 --- a/cpukit/score/include/rtems/score/protectedheap.h +++ b/cpukit/score/include/rtems/score/protectedheap.h @@ -3,7 +3,7 @@ * * @ingroup ScoreProtHeap * - * @brief Protected Heap Handler API. + * @brief Protected Heap Handler API */ /* @@ -34,8 +34,8 @@ extern "C" { * * The @ref ScoreAllocatorMutex is used to protect the heap accesses. * - * @{ */ +/**@{**/ /** * @brief See _Heap_Initialize(). diff --git a/cpukit/score/include/rtems/score/rbtree.h b/cpukit/score/include/rtems/score/rbtree.h index 5a03d7ca8d..55b5c55720 100644 --- a/cpukit/score/include/rtems/score/rbtree.h +++ b/cpukit/score/include/rtems/score/rbtree.h @@ -1,6 +1,8 @@ /** * @file rtems/score/rbtree.h * + * @brief Constants and Structures Associated with the Red-Black Tree Handler + * * This include file contains all the constants and structures associated * with the Red-Black Tree Handler. */ @@ -80,7 +82,7 @@ struct RBTree_Node_struct { }; /** - * @brief macro to return the structure containing the @a node. + * @brief Macro to return the structure containing the @a node. * * This macro returns a pointer of type @a container_type that points * to the structure containing @a node, where @a node_field_name is the @@ -184,12 +186,12 @@ RBTree_Control name = RBTREE_INITIALIZER_EMPTY(name) RBTree_Node name = RBTREE_NODE_INITIALIZER_EMPTY(name) /** - * @brief Initialize a RBTree Header + * @brief Initialize a RBTree Header. * * This routine initializes @a the_rbtree structure to manage the * contiguous array of @a number_nodes nodes which starts at * @a starting_address. Each node is of @a node_size bytes. - * + * * @param[in] the_rbtree is the pointer to rbtree header * @param[in] starting_address is the starting address of first node * @param[in] number_nodes is the number of nodes in rbtree @@ -205,13 +207,13 @@ void _RBTree_Initialize( ); /** - * @brief Obtain the min or max node of a rbtree + * @brief Obtain the min or max node of a rbtree. * * This function removes the min or max node from @a the_rbtree and returns * a pointer to that node. If @a the_rbtree is empty, then NULL is returned. * @a dir specifies whether to return the min (0) or max (1). * - * @return This method returns a pointer to a node. If a node was removed, + * @retval This method returns a pointer to a node. If a node was removed, * then a pointer to that node is returned. If @a the_rbtree was * empty, then NULL is returned. * @@ -222,37 +224,50 @@ RBTree_Node *_RBTree_Get( RBTree_Direction dir ); +/** @brief Find the node with given key in the tree + * + * This function returns a pointer to the node in @a the_rbtree + * having key equal to key of @a the_node if it exists, + * and NULL if not. @a the_node has to be made up before a search. + * + * @note If the tree is not unique and contains duplicate keys, the set + * of duplicate keys acts as FIFO. + */ +RBTree_Node *_RBTree_Find_unprotected( + const RBTree_Control *the_rbtree, + const RBTree_Node *the_node +); + /** - * @brief Find the node with given key in the tree + * @brief Find the node with given key in the tree. * * This function returns a pointer to the node with key equal to a key * of @a the_node if it exists in the Red-Black Tree @a the_rbtree, * and NULL if not. - * + * * @param[in] the_rbtree pointer to rbtree control * @param[in] the_node node with the key to search for - * @return This method returns pointer to control header of rbtree. * + * @retval This method returns pointer to control header of rbtree. * * If there is no control header available (the node is not part * of a tree), then NULL is returned. * * * - INTERRUPT LATENCY: - * + single case + * + single case */ RBTree_Node *_RBTree_Find( - RBTree_Control *the_rbtree, - RBTree_Node *the_node + const RBTree_Control *the_rbtree, + const RBTree_Node *the_node ); /** - * @brief Find the control structure of the tree containing the given node + * @brief Find the control structure of the tree containing the given node. * - * This function returns a pointer called @a return_header to the control structure of the tree - * containing @a the_node, if it exists, and @a NULL if not. + * This function returns a pointer called @a return_header to the + * control structure of the tree containing @a the_node, if it exists, + * and @a NULL if not. * * @param[in] the_node is the pointer to the rbtree node. - * @param[out] return_header is the pointer to control header of rbtree. - * @param[out] NULL is returned if there is no control header available. - * + * * -INTERRUPT LATENCY: * + single case */ @@ -261,7 +276,7 @@ RBTree_Control *_RBTree_Find_header( ); /** - * @brief Insert a Node (unprotected) + * @brief Insert @a the_node on the Red-Black Tree @a the_rbtree (unprotected). * * This routine inserts @a the_node on the Red-Black Tree @a the_rbtree. * @@ -279,7 +294,7 @@ RBTree_Node *_RBTree_Insert_unprotected( ); /** - * @brief Insert a node on a rbtree + * @brief Insert a node on a rbtree. * * This routine inserts @a the_node on the tree @a the_rbtree. * @@ -298,7 +313,7 @@ RBTree_Node *_RBTree_Insert( /** - * @brief Extract a Node (unprotected) + * @brief Extracts (removes) @a the_node from @a the_rbtree (unprotected). * * This routine extracts (removes) @a the_node from @a the_rbtree. * @@ -311,7 +326,7 @@ void _RBTree_Extract_unprotected( ); /** - * @brief Delete a node from the rbtree + * @brief Delete a node from the rbtree. * * This routine deletes @a the_node from @a the_rbtree. * diff --git a/cpukit/score/include/rtems/score/scheduler.h b/cpukit/score/include/rtems/score/scheduler.h index 117f86a37a..5c35a36de1 100644 --- a/cpukit/score/include/rtems/score/scheduler.h +++ b/cpukit/score/include/rtems/score/scheduler.h @@ -1,6 +1,8 @@ /** * @file rtems/score/scheduler.h * + * @brief Constants and Structures Associated with the Scheduler + * * This include file contains all the constants and structures associated * with the scheduler. */ @@ -129,7 +131,7 @@ extern Scheduler_Control _Scheduler; (_Scheduler_Priority_compare(_p1,_p2) > 0) /** - * @brief Scheduler is priority higher than + * @brief Initializes the scheduler to the policy chosen by the user. * * This routine initializes the scheduler to the policy chosen by the user * through confdefs, or to the priority scheduler with ready chains by diff --git a/cpukit/score/include/rtems/score/schedulercbs.h b/cpukit/score/include/rtems/score/schedulercbs.h index d0bc5ee109..53452e044a 100644 --- a/cpukit/score/include/rtems/score/schedulercbs.h +++ b/cpukit/score/include/rtems/score/schedulercbs.h @@ -1,6 +1,8 @@ /** * @file rtems/score/schedulercbs.h * + * @brief Thread manipulation for the CBS scheduler + * * This include file contains all the constants and structures associated * with the manipulation of threads for the CBS scheduler. */ @@ -31,8 +33,9 @@ extern "C" { #endif /** - * @addtogroup ScoreScheduler + * @defgroup ScoreSchedulerCBS CBS Scheduler * + * @ingroup ScoreScheduler */ /**@{*/ @@ -131,12 +134,12 @@ typedef struct { extern Scheduler_CBS_Server **_Scheduler_CBS_Server_list; /** - * @brief Unblocks a Thread from the Queue + * @brief Unblocks a thread from the queue. * * This routine adds @a the_thread to the scheduling decision, that is, * adds it to the ready queue and updates any appropriate scheduling - * variables, for example the heir thread. It is checked whether the - * remaining budget is sufficient. If not, the thread continues as a + * variables, for example the heir thread. It is checked whether the + * remaining budget is sufficient. If not, the thread continues as a * new job in order to protect concurrent threads. * * @param[in] the_thread will be unblocked. @@ -148,7 +151,7 @@ void _Scheduler_CBS_Unblock( ); /** - * @brief Scheduler CBS Release job + * @brief Called when a new job of task is released. * * This routine is called when a new job of task is released. * It is called only from Rate Monotonic manager in the beginning @@ -169,16 +172,16 @@ void _Scheduler_CBS_Release_job ( * * Initializes the CBS library. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Initialize(void); /** - * @brief Attach Scheduler CBS Thread + * @brief Attach a task to an already existing server. * * Attach a task to an already existing server. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Attach_thread ( Scheduler_CBS_Server_id server_id, @@ -186,11 +189,11 @@ int _Scheduler_CBS_Attach_thread ( ); /** - * @brief _Scheduler_CBS_Detach_thread + * @brief Detach from the CBS Server. * * Detach from the CBS Server. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Detach_thread ( Scheduler_CBS_Server_id server_id, @@ -198,20 +201,20 @@ int _Scheduler_CBS_Detach_thread ( ); /** - * @brief _Scheduler_CBS_Cleanup + * @brief Cleanup resources associated to the CBS Library. * * Cleanup resources associated to the CBS Library. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Cleanup (void); /** - * @brief _Scheduler_CBS_Create_server + * @brief Create a new server with specified parameters. * * Create a new server with specified parameters. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Create_server ( Scheduler_CBS_Parameters *params, @@ -220,25 +223,25 @@ int _Scheduler_CBS_Create_server ( ); /** - * @brief _Scheduler_CBS_Destroy_server + * @brief Detach all tasks from a server and destroy it. * * Detach all tasks from a server and destroy it. * * @param[in] server_id is the ID of the server * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Destroy_server ( Scheduler_CBS_Server_id server_id ); /** - * @brief _Scheduler_CBS_Get_approved_budget + * @brief Retrieve the approved budget. * * Retrieve the budget that has been approved for the subsequent * server instances. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Get_approved_budget ( Scheduler_CBS_Server_id server_id, @@ -246,11 +249,11 @@ int _Scheduler_CBS_Get_approved_budget ( ); /** - * @brief _Scheduler_CBS_Get_remaining_budget + * @brief Retrieve remaining budget for the current server instance. * * Retrieve remaining budget for the current server instance. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Get_remaining_budget ( Scheduler_CBS_Server_id server_id, @@ -258,15 +261,15 @@ int _Scheduler_CBS_Get_remaining_budget ( ); /** - * @brief Get relative time info + * @brief Get relative time info. * * Retrieve time info relative to @a server_id. The server status code is returned. * * @param[in] server_id is the server to get the status code from. * @param[in] exec_time is the execution time. - * @param[in] abs_time is not apparently used. + * @param[in] abs_time is not apparently used. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Get_execution_time ( Scheduler_CBS_Server_id server_id, @@ -275,11 +278,11 @@ int _Scheduler_CBS_Get_execution_time ( ); /** - * @brief _Scheduler_CBS_Get_parameters + * @brief Retrieve CBS scheduling parameters. * * Retrieve CBS scheduling parameters. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Get_parameters ( Scheduler_CBS_Server_id server_id, @@ -287,12 +290,12 @@ int _Scheduler_CBS_Get_parameters ( ); /** - * @brief Scheduler CBS Get Server id + * @brief Get a thread server id. * * Get a thread server id, or SCHEDULER_CBS_ERROR_NOT_FOUND if it is not * attached to any server. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Get_server_id ( rtems_id task_id, @@ -300,14 +303,14 @@ int _Scheduler_CBS_Get_server_id ( ); /** - * @brief Set Parameters for CBS Scheduling + * @brief Set parameters for CBS scheduling. * * Change CBS scheduling parameters. * * @param[in] server_id is the ID of the server. * @param[in] parameters are the parameters to set. * - * @return status code. + * @retval status code. */ int _Scheduler_CBS_Set_parameters ( Scheduler_CBS_Server_id server_id, @@ -315,7 +318,7 @@ int _Scheduler_CBS_Set_parameters ( ); /** - * @brief Scheduler CBS Budget overrun + * @brief Invoked when a limited time quantum is exceeded. * * This routine is invoked when a limited time quantum is exceeded. */ @@ -324,7 +327,7 @@ void _Scheduler_CBS_Budget_callout( ); /** - * @brief Scheduler CBS Allocate + * @brief Allocates CBS specific information of @a the_thread. * * This routine allocates CBS specific information of @a the_thread. * diff --git a/cpukit/score/include/rtems/score/scheduleredf.h b/cpukit/score/include/rtems/score/scheduleredf.h index 8381184858..24f9a1ac32 100644 --- a/cpukit/score/include/rtems/score/scheduleredf.h +++ b/cpukit/score/include/rtems/score/scheduleredf.h @@ -1,6 +1,8 @@ /** * @file rtems/score/scheduleredf.h * + * @brief Data Related to the Manipulation of Threads for the EDF Scheduler + * * This include file contains all the constants and structures associated * with the manipulation of threads for the EDF scheduler. */ @@ -27,8 +29,9 @@ extern "C" { #endif /** - * @addtogroup ScoreScheduler + * @defgroup ScoreSchedulerEDF EDF Scheduler * + * @ingroup ScoreScheduler */ /**@{*/ @@ -98,14 +101,14 @@ typedef struct { extern RBTree_Control _Scheduler_EDF_Ready_queue; /** - * @brief Scheduler EDF Initialize + * @brief Initialize EDF scheduler. * * This routine initializes the EDF scheduler. */ void _Scheduler_EDF_Initialize( void ); /** - * @brief Removes Thread from Ready Queue + * @brief Removes thread from ready queue. * * This routine removes @a the_thread from the scheduling decision, * that is, removes it from the ready queue. It performs @@ -119,7 +122,8 @@ void _Scheduler_EDF_Block( ); /** - * @brief Scheduler EDF Schedule + * @brief Sets the heir thread to be the next ready thread + * in the rbtree ready queue. * * This kernel routine sets the heir thread to be the next ready thread * in the rbtree ready queue. @@ -127,7 +131,7 @@ void _Scheduler_EDF_Block( void _Scheduler_EDF_Schedule( void ); /** - * @brief Scheduler EDF Allocate + * @brief Allocates EDF specific information of @a the_thread. * * This routine allocates EDF specific information of @a the_thread. * @@ -139,7 +143,7 @@ void *_Scheduler_EDF_Allocate( ); /** - * @brief Frees EDF information of a thread + * @brief Frees EDF information of a thread. * * This routine frees the EDF specific information of @a the_thread. * @@ -151,7 +155,7 @@ void _Scheduler_EDF_Free( ); /** - * @brief Scheduler EDF Update + * @brief Updates position in the ready queue of @a the_thread. * * This routine updates position in the ready queue of @a the_thread. * @@ -163,7 +167,7 @@ void _Scheduler_EDF_Update( ); /** - * @brief Scheduler EDF Unblock + * @brief Adds @a the_thread to the scheduling decision. * * This routine adds @a the_thread to the scheduling decision, that is, * adds it to the ready queue and updates any appropriate scheduling @@ -176,7 +180,9 @@ void _Scheduler_EDF_Unblock( ); /** - * @brief Scheduler EDF Yield + * @brief invoked when a thread wishes to voluntarily + * transfer control of the processor to another thread + * with equal deadline. * * This routine is invoked when a thread wishes to voluntarily * transfer control of the processor to another thread in the queue with @@ -189,7 +195,7 @@ void _Scheduler_EDF_Unblock( void _Scheduler_EDF_Yield( void ); /** - * @brief Scheduler EDF Enqueue + * @brief Put @a the_thread to the rbtree ready queue. * * This routine puts @a the_thread to the rbtree ready queue. * @@ -200,7 +206,7 @@ void _Scheduler_EDF_Enqueue( ); /** - * @brief Enqueues a thread to the ready queue + * @brief Enqueue a thread to the ready queue. * * This routine puts @a the_thread to the rbtree ready queue. * For the EDF scheduler this is the same as @a _Scheduler_EDF_Enqueue. @@ -212,7 +218,8 @@ void _Scheduler_EDF_Enqueue_first( ); /** - * @brief Scheduler EDF Extract + * @brief Remove a specific thread from the scheduler's set + * of ready threads. * * This routine removes a specific thread from the scheduler's set * of ready threads. @@ -224,12 +231,12 @@ void _Scheduler_EDF_Extract( ); /** - * @brief Scheduler EDF Priority compare + * @brief Explicitly compare absolute dedlines (priorities) of threads. * * This routine explicitly compares absolute dedlines (priorities) of threads. * In case of EDF scheduling time overflow is taken into account. * - * @return >0 for p1 > p2; 0 for p1 == p2; <0 for p1 < p2. + * @retval >0 for p1 > p2; 0 for p1 == p2; <0 for p1 < p2. */ int _Scheduler_EDF_Priority_compare ( Priority_Control p1, @@ -237,7 +244,7 @@ int _Scheduler_EDF_Priority_compare ( ); /** - * @brief Scheduler EDF Release job + * @brief Called when a new job of task is released. * * This routine is called when a new job of task is released. * It is called only from Rate Monotonic manager in the beginning diff --git a/cpukit/score/include/rtems/score/schedulerpriority.h b/cpukit/score/include/rtems/score/schedulerpriority.h index 3432937062..f97bb7f075 100644 --- a/cpukit/score/include/rtems/score/schedulerpriority.h +++ b/cpukit/score/include/rtems/score/schedulerpriority.h @@ -1,6 +1,8 @@ /** * @file rtems/score/schedulerpriority.h * + * @brief Thread Manipulation with the Priority-Based Scheduler + * * This include file contains all the constants and structures associated * with the manipulation of threads for the priority-based scheduler. */ @@ -26,8 +28,9 @@ extern "C" { #endif /** - * @addtogroup ScoreScheduler + * @defgroup ScoreSchedulerDPS Deterministic Priority-based Scheduler * + * @ingroup ScoreScheduler */ /**@{*/ @@ -64,13 +67,13 @@ typedef struct { } Scheduler_priority_Per_thread; /** - * @brief Initialize Scheduler Priority + * @brief Initializes the priority scheduler. * This routine initializes the priority scheduler. */ void _Scheduler_priority_Initialize(void); /** - * @brief Scheduler priority Block + * @brief Removes @a the_thread from the scheduling decision. * * This routine removes @a the_thread from the scheduling decision, * that is, removes it from the ready queue. It performs @@ -84,7 +87,7 @@ void _Scheduler_priority_Block( ); /** - * @brief schedule entry point + * @brief Sets the heir thread to be the next ready thread. * * This kernel routine sets the heir thread to be the next ready thread * by invoking the_scheduler->ready_queue->operations->first(). @@ -92,7 +95,7 @@ void _Scheduler_priority_Block( void _Scheduler_priority_Schedule(void); /** - * @brief Allocate Scheduler Priority + * @brief Allocates @a the_thread->scheduler. * * This routine allocates @a the_thread->scheduler. * @@ -104,7 +107,7 @@ void * _Scheduler_priority_Allocate( ); /** - * @brief Free Scheduler Priority + * @brief Frees @a the_thread->scheduler. * * This routine frees @a the_thread->scheduler. * @@ -116,7 +119,7 @@ void _Scheduler_priority_Free( ); /** - * @brief Update Scheduler priority + * @brief Update the scheduler priority. * This routine updates @a the_thread->scheduler based on @a the_scheduler * structures and thread state. * @@ -128,7 +131,7 @@ void _Scheduler_priority_Update( ); /** - * @brief Scheduler Priority Unblock + * @brief Add @a the_thread to the scheduling decision. * * This routine adds @a the_thread to the scheduling decision, * that is, adds it to the ready queue and @@ -141,7 +144,7 @@ void _Scheduler_priority_Unblock( ); /** - * @brief Scheduler Priority Yield + * @brief Remove the running THREAD to the rear of this chain. * * This routine is invoked when a thread wishes to voluntarily * transfer control of the processor to another thread in the queue. @@ -160,7 +163,7 @@ void _Scheduler_priority_Unblock( void _Scheduler_priority_Yield( void ); /** - * @brief Scheduler Priority Enqueue + * @brief Puts @a the_thread on to the priority-based ready queue. * * This routine puts @a the_thread on to the priority-based ready queue. * @@ -171,7 +174,7 @@ void _Scheduler_priority_Enqueue( ); /** - * @brief Scheduler Priority Enqueue First + * @brief Puts @a the_thread to the head of the ready queue. * * This routine puts @a the_thread to the head of the ready queue. * For priority-based ready queues, the thread will be the first thread @@ -184,7 +187,7 @@ void _Scheduler_priority_Enqueue_first( ); /** - * @brief Removes a specific thread from scheduler + * @brief Remove a specific thread from scheduler. * * This routine removes a specific thread from the scheduler's set * of ready threads. @@ -196,7 +199,7 @@ void _Scheduler_priority_Extract( ); /** - * @brief Scheduler priority Priority compare + * @brief Compare two priorities. * * This routine compares two priorities. */ @@ -206,7 +209,7 @@ int _Scheduler_priority_Priority_compare( ); /** - * @brief Scheduler priority Release job + * @brief Called when a new job of task is released. * * This routine is called when a new job of task is released. * @@ -220,7 +223,7 @@ void _Scheduler_priority_Release_job ( ); /** - * @brief Deterministic Priority Scheduler Tick Method + * @brief Determines if the current thread allows timeslicing. * * This routine is invoked as part of processing each clock tick. * It is responsible for determining if the current thread allows diff --git a/cpukit/score/include/rtems/score/schedulersimple.h b/cpukit/score/include/rtems/score/schedulersimple.h index 66b4018b50..df52a586be 100644 --- a/cpukit/score/include/rtems/score/schedulersimple.h +++ b/cpukit/score/include/rtems/score/schedulersimple.h @@ -1,10 +1,13 @@ /** * @file rtems/score/schedulersimple.h * + * @brief Manipulation of Threads Simple-Priority-Based Ready Queue + * * This include file contains all the constants and structures associated * with the manipulation of threads on a simple-priority-based ready queue. - * - * + */ + +/* * Copyright (C) 2011 On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -16,8 +19,9 @@ #define _RTEMS_SCORE_SCHEDULERSIMPLE_H /** - * @addtogroup ScoreScheduler + * @defgroup ScoreSchedulerSimple Simple Priority Scheduler * + * @ingroup ScoreScheduler */ /**@{*/ @@ -50,7 +54,7 @@ extern "C" { } /** - * @brief Initializes simple scheduler + * @brief Initialize simple scheduler. * * This routine initializes the simple scheduler. */ @@ -64,7 +68,8 @@ void _Scheduler_simple_Initialize( void ); void _Scheduler_simple_Schedule( void ); /** - * @brief Simple Schedule + * @brief Invoked when a thread wishes to voluntarily + * transfer control of the processor to another thread in the queue. * * This routine is invoked when a thread wishes to voluntarily * transfer control of the processor to another thread in the queue. @@ -79,7 +84,7 @@ void _Scheduler_simple_Schedule( void ); void _Scheduler_simple_Yield( void ); /** - * @brief Removes a thread from the queue + * @brief Remove a simple-priority-based thread from the queue. * * This routine removes @a the_thread from the scheduling decision, * that is, removes it from the ready queue. It performs @@ -93,7 +98,8 @@ void _Scheduler_simple_Block( ); /** - * @brief Scheduler Simple Handler / Unblock + * @brief Unblock a simple-priority-based thread. + * * This routine adds @a the_thread to the scheduling decision, * that is, adds it to the ready queue and * updates any appropriate scheduling variables, for example the heir thread. @@ -105,7 +111,7 @@ void _Scheduler_simple_Unblock( ); /** - * @brief Removes a thread from a simple queue + * @brief Removes a simple-priority-based thread from a simple queue. * * This routine removes a specific thread from the specified * simple-based ready queue. @@ -117,7 +123,7 @@ void _Scheduler_simple_Extract( ); /** - * @brief Puts thread onto the ready queue + * @brief Puts simple-priority-based thread onto the ready queue. * * This routine puts @a the_thread on to the ready queue. * @@ -128,7 +134,8 @@ void _Scheduler_simple_Enqueue( ); /** - * @brief Scheduler simple Enqueue first + * @brief Put simple-priority-based @a the_thread to + * the head of the ready queue. * * This routine puts @a the_thread to the head of the ready queue. * The thread will be the first thread at its priority level. @@ -140,7 +147,7 @@ void _Scheduler_simple_Enqueue_first( ); /** - * @brief Returns empty placeholder for scheduler + * @brief Return empty placeholder for the simple scheduler. * * This routine is a place holder for any memeory allocation needed * by the scheduler. For the simple scheduler the routine is an empty @@ -149,7 +156,7 @@ void _Scheduler_simple_Enqueue_first( * @param[in] the_thread is the thread the scheduler is allocating * management memory for * - * @return this routine returns -1 since this is just an empty placeholder + * @retval this routine returns -1 since this is just an empty placeholder * and the return value may be defined differently by each scheduler. */ void *_Scheduler_simple_Allocate( @@ -157,7 +164,7 @@ void *_Scheduler_simple_Allocate( ); /** - * @breif Stub for schedule update + * @brief Stub for simple schedule update. * * This routine does nothing, and is used as a stub for Schedule update * The overhead of a function call will still be imposed. @@ -169,7 +176,7 @@ void _Scheduler_simple_Update( ); /** - * @brief Stub for schedule free + * @brief Stub for simple schedule free. * * This routine does nothing, and is used as a stub for Schedule free * The overhead of a function call will still be imposed. @@ -193,7 +200,8 @@ void _Scheduler_simple_Ready_queue_enqueue( ); /** - * @brief Scheduler Simple Ready Queue Enqueue First + * @brief Puts simple-priority-based @a the_thread on to the ready queue + * at the beginning of its priority group. * * This routine puts @a the_thread on to the ready queue * at the beginning of its priority group. diff --git a/cpukit/score/include/rtems/score/schedulersimplesmp.h b/cpukit/score/include/rtems/score/schedulersimplesmp.h index e915993a52..63213c6b2a 100644 --- a/cpukit/score/include/rtems/score/schedulersimplesmp.h +++ b/cpukit/score/include/rtems/score/schedulersimplesmp.h @@ -1,6 +1,8 @@ /** * @file rtems/score/schedulersimplesmp.h * + * @brief Manipulation of Threads on a Simple-Priority-Based Ready Queue + * * This include file contains all the constants and structures associated * with the manipulation of threads on a simple-priority-based ready queue. * This implementation is SMP-aware and schedules across multiple cores. @@ -21,7 +23,9 @@ #define _RTEMS_SCORE_SCHEDULERSIMPLE_SMP_H /** - * @addtogroup ScoreScheduler + * @defgroup ScoreSchedulerSMP Simple SMP Scheduler + * + * @ingroup ScoreScheduler * * The Simple SMP Scheduler attempts to faithfully implement the * behaviour of the Deterministic Priority Scheduler while spreading @@ -62,7 +66,7 @@ extern "C" { } /** - * @brief Scheduler Simple SMP Schedule Method + * @brief Allocates ready SMP threads to individual cores in an SMP system. * * This routine allocates ready threads to individual cores in an SMP * system. If the allocation results in a new heir which requires @@ -71,7 +75,7 @@ extern "C" { void _Scheduler_simple_smp_Schedule( void ); /** - * @brief Scheduler Simple SMP Block Method + * @brief Remove SMP @a the_thread from the ready queue. * * This routine removes @a the_thread from the scheduling decision, * that is, removes it from the ready queue. It performs @@ -85,7 +89,8 @@ void _Scheduler_simple_smp_Block( ); /** - * @brief Scheduler Simple SMP Unblock Method + * @brief Adds SMP @a the_thread to the ready queue and updates any + * appropriate scheduling variables, for example the heir thread. * * This routine adds @a the_thread to the scheduling decision, * that is, adds it to the ready queue and updates any appropriate @@ -98,7 +103,7 @@ void _Scheduler_simple_smp_Unblock( ); /** - * @brief Scheduler Simple SMP Tick Method + * @brief Invoked as part of processing each SMP clock tick. * * This routine is invoked as part of processing each clock tick. * It is responsible for determining if the current thread allows diff --git a/cpukit/score/include/rtems/score/smp.h b/cpukit/score/include/rtems/score/smp.h index 38ac681bcd..f4bf72edd9 100644 --- a/cpukit/score/include/rtems/score/smp.h +++ b/cpukit/score/include/rtems/score/smp.h @@ -1,6 +1,8 @@ /** * @file rtems/score/smp.h * + * @brief Interface to the SuperCore SMP Support used Internally to RTEMS + * * This include file defines the interface to the SuperCore * SMP support that is used internally to RTEMS. */ @@ -21,7 +23,7 @@ #include <rtems/score/percpu.h> /** - * @defgroup SuperCore SMP Support + * @defgroup SuperCoreSMP SMP Support * * @ingroup Score * @@ -65,7 +67,7 @@ extern "C" { #ifndef ASM /** - * @brief Number of CPUs in SMP System + * @brief Number of CPUs in a SMP system. * * This variable is set during the SMP initialization sequence to * indicate the number of CPUs in this system. @@ -73,7 +75,7 @@ extern "C" { SCORE_EXTERN uint32_t _SMP_Processor_count; /** - * @brief Make Request of Others CPUs + * @brief Request of others CPUs. * * This method is invoked by RTEMS when it needs to make a request * of the other CPUs. It should be implemented using some type of @@ -87,7 +89,7 @@ void _SMP_Broadcast_message( ); /** - * @brief Request Other Cores to Perform First Context Switch + * @brief Request other cores to perform first context switch. * * Send message to other cores requesting them to perform * their first context switch operation. @@ -95,7 +97,7 @@ void _SMP_Broadcast_message( void _SMP_Request_other_cores_to_perform_first_context_switch(void); /** - * @brief Request Dispatch on Other Cores + * @brief Request dispatch on other cores. * * Send message to other cores requesting them to perform * a thread dispatch operation. @@ -103,7 +105,7 @@ void _SMP_Request_other_cores_to_perform_first_context_switch(void); void _SMP_Request_other_cores_to_dispatch(void); /** - * @Brief Request Other Cores to Shutdown + * @brief Request other cores to shutdown. * * Send message to other cores requesting them to shutdown. */ @@ -116,5 +118,7 @@ void _SMP_Request_other_cores_to_shutdown(void); #endif #endif + +/**@}*/ #endif /* end of include file */ diff --git a/cpukit/score/include/rtems/score/smplock.h b/cpukit/score/include/rtems/score/smplock.h index 611b49811f..6db8a43418 100644 --- a/cpukit/score/include/rtems/score/smplock.h +++ b/cpukit/score/include/rtems/score/smplock.h @@ -1,6 +1,8 @@ /** * @file rtems/score/smplock.h * + * @brief Interface for Atomic Locks + * * This include file defines the interface for atomic locks * which can be used in multiprocessor configurations. */ @@ -54,7 +56,7 @@ typedef struct { } SMP_lock_spinlock_nested_Control; /** - * @brief Initialize a Lock + * @brief Initialize a lock. * * This method is used to initialize the lock at @a lock. * @@ -65,13 +67,13 @@ void _SMP_lock_spinlock_simple_Initialize( ); /** - * @brief Obtain a Lock + * @brief Obtain a lock. * * This method is used to obtain the lock at @a lock. * * @param [in] lock is the address of the lock to obtain. * - * @return This method returns with processor interrupts disabled. + * @retval This method returns with processor interrupts disabled. * The previous level is returned. */ ISR_Level _SMP_lock_spinlock_simple_Obtain( @@ -79,7 +81,7 @@ ISR_Level _SMP_lock_spinlock_simple_Obtain( ); /** - * @brief Release a Lock + * @brief Release a lock. * * This method is used to release the lock at @a lock. * @@ -91,7 +93,7 @@ void _SMP_lock_spinlock_simple_Release( ); /** - * @brief Initialize a Lock + * @brief Initialize a lock. * * This method is used to initialize the lock at @a lock. * @@ -102,7 +104,7 @@ void _SMP_lock_spinlock_nested_Initialize( ); /** - * @brief Obtain a Lock + * @brief Obtain a lock. * * This method is used to obtain the lock at @a lock. ISR's are * disabled when this routine returns and it is the callers responsibility @@ -115,7 +117,7 @@ void _SMP_lock_spinlock_nested_Initialize( * * @param [in] lock is the address of the lock to obtain. * - * @return This method returns with processor interrupts disabled. + * @retval This method returns with processor interrupts disabled. * The previous level is returned. */ ISR_Level _SMP_lock_spinlock_nested_Obtain( @@ -123,9 +125,9 @@ ISR_Level _SMP_lock_spinlock_nested_Obtain( ); /** - * @brief Release a Lock + * @brief Release a lock. * - * This method is used to release the lock at @a lock. + * This method is used to release the lock at @a lock. * * @note ISR's are reenabled by this method and are expected to be * disabled upon entry to the method. diff --git a/cpukit/score/include/rtems/score/stack.h b/cpukit/score/include/rtems/score/stack.h index 1e06e366c9..9aa90425c4 100644 --- a/cpukit/score/include/rtems/score/stack.h +++ b/cpukit/score/include/rtems/score/stack.h @@ -1,6 +1,8 @@ /** * @file rtems/score/stack.h * + * @brief Information About the Thread Stack Handler + * * This include file contains all information about the thread * Stack Handler. This Handler provides mechanisms which can be used to * initialize and utilize stacks. diff --git a/cpukit/score/include/rtems/score/states.h b/cpukit/score/include/rtems/score/states.h index f71bf9399e..9fab5d4748 100644 --- a/cpukit/score/include/rtems/score/states.h +++ b/cpukit/score/include/rtems/score/states.h @@ -1,7 +1,9 @@ /** * @file rtems/score/states.h * - * This include file contains thread execution state information. + * @brief Thread Execution State Information + * + * This include file defines thread execution state information. */ /* @@ -17,7 +19,7 @@ #define _RTEMS_SCORE_STATES_H /** - * @defgroup ScoreStates Thread States Handler + * @defgroup ScoreStates SuperCore Thread States * * @ingroup Score * diff --git a/cpukit/score/include/rtems/score/sysstate.h b/cpukit/score/include/rtems/score/sysstate.h index b847dc842f..7d3d6aed59 100644 --- a/cpukit/score/include/rtems/score/sysstate.h +++ b/cpukit/score/include/rtems/score/sysstate.h @@ -3,7 +3,7 @@ * * @ingroup ScoreSysState * - * @brief System State Handler API. + * @brief System State Handler API */ /* @@ -30,9 +30,8 @@ extern "C" { * @ingroup Score * * @brief Management of the internal system state of RTEMS. - * - * @{ */ +/**@{**/ /** * @brief System states. diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h index 623b56251f..248be62c95 100644 --- a/cpukit/score/include/rtems/score/thread.h +++ b/cpukit/score/include/rtems/score/thread.h @@ -1,6 +1,8 @@ /** * @file rtems/score/thread.h * + * @brief Constants and Structures Related with the Thread Control Block + * * This include file contains all constants and structures associated * with the thread control block. */ @@ -185,14 +187,14 @@ typedef enum { typedef void (*Thread_CPU_budget_algorithm_callout )( Thread_Control * ); /** - * @brief Per Task Variable Manager Structure Forward Reference + * @brief Forward reference to the per task variable structure.. * * Forward reference to the per task variable structure. */ struct rtems_task_variable_tt; /** - * @brief Per Task Variable Manager Structure + * @brief Internal structure used to manager per task variables. * * This is the internal structure used to manager per Task Variables. */ @@ -275,7 +277,7 @@ typedef union { } Thread_Wait_information_Object_argument_type; /** - * @brief Thread Blocking Management Information + * @brief Information required to manage a thread while it is blocked. * * This contains the information required to manage a thread while it is * blocked and to return information to it. @@ -503,14 +505,14 @@ SCORE_EXTERN Thread_Control *_Thread_Allocated_fp; */ SCORE_EXTERN struct _reent **_Thread_libc_reent; /** - * @brief Initialize Thread Handler + * @brief Initialize thread handler. * * This routine performs the initialization necessary for this handler. */ void _Thread_Handler_initialization(void); /** - * @brief Create Idle Thread + * @brief Create idle thread. * * This routine creates the idle thread. * @@ -519,7 +521,7 @@ void _Thread_Handler_initialization(void); void _Thread_Create_idle(void); /** - * @brief Start Thread Multitasking + * @brief Start thread multitasking. * * This routine initiates multitasking. It is invoked only as * part of initialization and its invocation is the last act of @@ -533,7 +535,7 @@ void _Thread_Create_idle(void); void _Thread_Start_multitasking( void ); /** - * @brief Dispatch Thread + * @brief Dispatch thread. * * This routine is responsible for transferring control of the * processor from the executing thread to the heir thread. Once the @@ -553,7 +555,7 @@ void _Thread_Start_multitasking( void ); void _Thread_Dispatch( void ); /** - * @brief Stack Allocate Helper + * @brief Allocate the requested stack space for the thread. * * Allocate the requested stack space for the thread. * Set the Start.stack field to the address of the stack. @@ -569,7 +571,7 @@ size_t _Thread_Stack_Allocate( ); /** - * @brief Deallocate Thread Stack + * @brief Deallocate thread stack. * * Deallocate the Thread's stack. */ @@ -578,7 +580,8 @@ void _Thread_Stack_Free( ); /** - * @brief Initialize Thread + * @brief Initialize thread. + * * This routine initializes the specified the thread. It allocates * all memory associated with this thread. It completes by adding * the thread to the local object table so operations on this @@ -604,14 +607,14 @@ bool _Thread_Initialize( ); /** - * @brief Initializes Thread and Executes it + * @brief Initializes thread and executes it. * * This routine initializes the executable information for a thread * and makes it ready to execute. After this routine executes, the * thread competes with all other threads for CPU time. * * @param the_thread is the thread to be initialized - * @param the_prototype + * @param the_prototype * @param entry_point * @param pointer_argument * @param numeric_argument @@ -625,7 +628,8 @@ bool _Thread_Start( ); /** - * @brief Restart Thread + * @brief Restarts the specified thread. + * * This support routine restarts the specified task in a way that the * next time this thread executes, it will begin execution at its * original starting point. @@ -639,7 +643,7 @@ bool _Thread_Restart( ); /** - * @brief Resets a thread to its initial state + * @brief Resets a thread to its initial state. * * This routine resets a thread to its initial state but does * not restart it. Some APIs do this in separate @@ -656,7 +660,7 @@ void _Thread_Reset( ); /** - * @brief Thread Close + * @brief Frees all memory associated with the specified thread. * * This routine frees all memory associated with the specified * thread and removes it from the local object table so no further @@ -668,7 +672,7 @@ void _Thread_Close( ); /** - * @brief Thread Ready + * @brief Removes any set states for @a the_thread. * * This routine removes any set states for @a the_thread. It performs * any necessary scheduling operations including the selection of @@ -683,7 +687,7 @@ void _Thread_Ready( ); /** - * @brief Clear Thread state + * @brief Clears the indicated STATES for @a the_thread. * * This routine clears the indicated STATES for @a the_thread. It performs * any necessary scheduling operations including the selection of @@ -699,13 +703,13 @@ void _Thread_Clear_state( ); /** - * @brief Sets States for a Thread + * @brief Sets the indicated @a state for @a the_thread. * * This routine sets the indicated @a state for @a the_thread. It performs * any necessary scheduling operations including the selection of * a new heir thread. * - * @param[in] the_thread is the thread to set the state for. + * @param[in] the_thread is the thread to set the state for. * @param[in] state is the state to set the_thread to. * * - INTERRUPT LATENCY: @@ -718,7 +722,7 @@ void _Thread_Set_state( ); /** - * @brief Sets the Transient state for a Thread + * @brief Sets the transient state for a thread. * * This routine sets the Transient state for @a the_thread. It performs * any necessary scheduling operations including the selection of @@ -734,11 +738,11 @@ void _Thread_Set_transient( ); /** - * @brief Initializes Enviroment for A Thread + * @brief Initializes enviroment for a thread. * * This routine initializes the context of @a the_thread to its * appropriate starting state. - * + * * @param[in] the_thread is the pointer to the thread control block. */ void _Thread_Load_environment( @@ -746,29 +750,24 @@ void _Thread_Load_environment( ); /** - * @brief Thread Handler + * @brief Wrapper function for all threads. + * * This routine is the wrapper function for all threads. It is * the starting point for all threads. The user provided thread * entry point is invoked by this routine. Operations * which must be performed immediately before and after the user's * thread executes are found here. * - * NOTE: - * - * On entry, it is assumed all interrupts are blocked and that this + * @note On entry, it is assumed all interrupts are blocked and that this * routine needs to set the initial isr level. This may or may not * actually be needed by the context switch routine and as a result * interrupts may already be at there proper level. Either way, * setting the initial isr level properly here is safe. - * - * Input parameters: NONE - * - * Output parameters: NONE */ void _Thread_Handler( void ); /** - * @brief Ended the delay of a Thread + * @brief Ended the delay of a thread. * * This routine is invoked when a thread must be unblocked at the * end of a time based delay (i.e. wake after or wake when). @@ -782,7 +781,7 @@ void _Thread_Delay_ended( ); /** - * @brief Changes the priority of a thread + * @brief Change the priority of a thread. * * This routine changes the current priority of @a the_thread to * @a new_priority. It performs any necessary scheduling operations @@ -799,7 +798,7 @@ void _Thread_Change_priority ( ); /** - * @brief Set Thread Priority + * @brief Set thread priority. * * This routine updates the priority related fields in the_thread * control block to indicate the current priority is now new_priority. @@ -840,7 +839,7 @@ void *_Thread_Idle_body( typedef void (*rtems_per_thread_routine)( Thread_Control * ); /** - * @brief Iterates Over All Threads + * @brief Iterates over all threads. * This routine iterates over all threads regardless of API and * invokes the specified routine. */ @@ -849,7 +848,7 @@ void rtems_iterate_over_all_threads( ); /** - * @brief Maps THread Id to a TCB Pointer + * @brief Maps thread Id to a TCB pointer. * * This function maps thread IDs to thread control * blocks. If ID corresponds to a local thread, then it @@ -875,7 +874,7 @@ Thread_Control *_Thread_Get ( ); /** - * @brief Cancel a blocking operation due to ISR + * @brief Cancel a blocking operation due to ISR. * * This method is used to cancel a blocking operation that was * satisfied from an ISR while the thread executing was in the @@ -900,14 +899,14 @@ void _Thread_blocking_operation_Cancel( #if defined(RTEMS_SMP) /** - * @brief _Thread_Dispatch_initialization + * @brief Initializes the thread dispatching subsystem. * * This routine initializes the thread dispatching subsystem. */ void _Thread_Dispatch_initialization(void); /** - * @brief _Thread_Dispatch_in_critical_section + * @brief Checks if thread dispatch says that we are in a critical section. * * This routine returns true if thread dispatch indicates * that we are in a critical section. @@ -915,14 +914,14 @@ void _Thread_blocking_operation_Cancel( bool _Thread_Dispatch_in_critical_section(void); /** - * @brief _Thread_Dispatch_get_disable_level + * @brief Returns value of the the thread dispatch level. * * This routine returns value of the the thread dispatch level. */ uint32_t _Thread_Dispatch_get_disable_level(void); /** - * @brief _Thread_Dispatch_set_disable_level + * @brief Sets thread dispatch level to the value passed in. * * This routine sets thread dispatch level to the * value passed in. @@ -930,14 +929,14 @@ void _Thread_blocking_operation_Cancel( uint32_t _Thread_Dispatch_set_disable_level(uint32_t value); /** - * @brief _Thread_Dispatch_increment_disable_level + * @brief Increments the thread dispatch level. * * This rountine increments the thread dispatch level */ uint32_t _Thread_Dispatch_increment_disable_level(void); /** - * @brief _Thread_Dispatch_decrement_disable_level + * @brief Decrements the thread dispatch level. * * This routine decrements the thread dispatch level. */ diff --git a/cpukit/score/include/rtems/score/threadmp.h b/cpukit/score/include/rtems/score/threadmp.h index eba713ca57..6c9788fe28 100644 --- a/cpukit/score/include/rtems/score/threadmp.h +++ b/cpukit/score/include/rtems/score/threadmp.h @@ -1,6 +1,8 @@ /** * @file rtems/score/threadmp.h * + * @brief Multiprocessing Portion of the Thread Package + * * This include file contains the specification for all routines * and data specific to the multiprocessing portion of the thread package. */ @@ -20,6 +22,8 @@ /** * @defgroup ScoreThreadMP Thread Handler Multiprocessing Support * + * @ingroup Score + * * This handler encapsulates functionality which is related to managing * threads in a multiprocessor system configuration. This handler must * manage proxies which represent remote threads blocking on local @@ -32,7 +36,7 @@ extern "C" { #endif /** - * @brief MP Thread Handler Initialization + * @brief Initialize MP thread handler. * * This routine initializes the multiprocessing portion of the Thread Handler. */ @@ -41,7 +45,8 @@ void _Thread_MP_Handler_initialization ( ); /** - * @brief MP Thread Proxy Allocate + * @brief Allocate a MP proxy control block from + * the inactive chain of free proxy control blocks. * * This allocates a proxy control block from * the inactive chain of free proxy control blocks. @@ -54,7 +59,8 @@ Thread_Control *_Thread_MP_Allocate_proxy ( ); /** - * @brief MP Thread Proxy Find + * @brief Removes the MP proxy control block for the specified + * id from the active chain of proxy control blocks. * * This function removes the proxy control block for the specified * id from the active chain of proxy control blocks. @@ -64,14 +70,14 @@ Thread_Control *_Thread_MP_Find_proxy ( ); /** - * @brief Active Proxy Set + * @brief Manage the active set MP proxies. * * The following chain is used to manage the active set proxies. */ SCORE_EXTERN Chain_Control _Thread_MP_Active_proxies; /** - * @brief Inactive Proxy Set + * @brief Manage the inactive set of MP proxies. * * The following chain is used to manage the inactive set of proxies. */ diff --git a/cpukit/score/include/rtems/score/threadq.h b/cpukit/score/include/rtems/score/threadq.h index a2653b3a02..1be336993c 100644 --- a/cpukit/score/include/rtems/score/threadq.h +++ b/cpukit/score/include/rtems/score/threadq.h @@ -1,6 +1,8 @@ /** * @file rtems/score/threadq.h * + * Constants and Structures Associated with the Manipulation of Objects + * * This include file contains all the constants and structures associated * with the manipulation of objects. */ @@ -60,7 +62,7 @@ typedef void ( *Thread_queue_Timeout_callout )( ); /** - * @brief Thread Queue Dequeue + * @brief Gets a pointer to a thread waiting on the_thread_queue. * * This function returns a pointer to a thread waiting on * the_thread_queue. The selection of this thread is based on @@ -72,7 +74,7 @@ Thread_Control *_Thread_queue_Dequeue( ); /** - * @brief Thread Queue Enqueue Wrapper + * @brief Enqueues the currently executing thread on the_thread_queue. * * This routine enqueues the currently executing thread on * the_thread_queue with an optional timeout. @@ -84,7 +86,7 @@ Thread_Control *_Thread_queue_Dequeue( _Thread_queue_Timeout ) /** - * @brief Thread Queue Enqueue + * @brief Blocks a thread and places it on a thread. * * This routine blocks a thread, places it on a thread, and optionally * starts a timeout timer. @@ -102,7 +104,7 @@ void _Thread_queue_Enqueue_with_handler( ); /** - * @brief Thread Queue Requeue + * @brief Invoked when a thread changes priority and is blocked. * * This routine is invoked when a thread changes priority and is * blocked on a thread queue. If the queue is priority ordered, @@ -119,7 +121,7 @@ void _Thread_queue_Requeue( ); /** - * @brief Extracts Thread from Thread Queue + * @brief Extracts thread from thread queue. * * This routine removes @a the_thread from @a the_thread_queue * and cancels any timeouts associated with this blocking. @@ -133,7 +135,7 @@ void _Thread_queue_Extract( ); /** - * @brief Thread Queue Extract with proxy + * @brief Extracts the_thread from the_thread_queue. * * This routine extracts the_thread from the_thread_queue * and ensures that if there is a proxy for this task on @@ -144,7 +146,7 @@ bool _Thread_queue_Extract_with_proxy( ); /** - * @brief Thread Queue First + * @brief Gets a pointer to the "first" thread on the_thread_queue. * * This function returns a pointer to the "first" thread * on the_thread_queue. The "first" thread is selected @@ -152,17 +154,23 @@ bool _Thread_queue_Extract_with_proxy( * * @param[in] the_thread_queue pointer to thread queue * - * @return first thread or NULL + * @retval first thread or NULL */ Thread_Control *_Thread_queue_First( Thread_queue_Control *the_thread_queue ); /** - * @brief Thread Queue Flush + * @brief Unblocks all threads blocked on the_thread_queue. * * This routine unblocks all threads blocked on the_thread_queue * and cancels any associated timeouts. + * + * @param[in] the_thread_queue is the pointer to a threadq header + * @param[in] remote_extract_callout points to a method to invoke to + * invoke when a remote thread is unblocked + * @param[in] status is the status which will be returned to + * all unblocked threads */ void _Thread_queue_Flush( Thread_queue_Control *the_thread_queue, @@ -171,14 +179,14 @@ void _Thread_queue_Flush( ); /** - * @brief Thread Queue Initialize + * @brief Initialize the_thread_queue. * * This routine initializes the_thread_queue based on the * discipline indicated in attribute_set. The state set on * threads which block on the_thread_queue is state. * * @param[in] the_thread_queue is the pointer to a threadq header - * @param[in] discipline is the queueing discipline + * @param[in] the_discipline is the queueing discipline * @param[in] state is the state of waiting threads * @param[in] timeout_status is the return on a timeout */ @@ -190,7 +198,8 @@ void _Thread_queue_Initialize( ); /** - * @brief Thread Queue Dequeue priority + * @brief Removes a thread from the specified PRIORITY based + * threadq, unblocks it, and cancels its timeout timer. * * This routine removes a thread from the specified PRIORITY based * threadq, unblocks it, and cancels its timeout timer. @@ -208,14 +217,18 @@ Thread_Control *_Thread_queue_Dequeue_priority( ); /** - * @brief Thread Queue Enqueue Priority + * @brief Enqueues the currently executing thread on the_thread_queue. * * This routine enqueues the currently executing thread on * the_thread_queue with an optional timeout using the * priority discipline. * * @param[in] the_thread_queue is the pointer to threadq - * @param[in] thread is the thread to insert + * @param[in] the_thread is the thread to insert + * @param[in] level_p is a pointer to an interrupt level to be returned + * + * @retval This methods returns an indication of the blocking state as + * well as filling in *@ level_p with the previous interrupt level. * * - INTERRUPT LATENCY: * + forward less than @@ -228,7 +241,7 @@ Thread_blocking_operation_States _Thread_queue_Enqueue_priority ( ); /** - * @brief Thread Queue Extract priority Helper + * @brief Removes the_thread and cancels related timeouts. * * This routine removes the_thread from the_thread_queue * and cancels any timeouts associated with this blocking. @@ -246,7 +259,7 @@ void _Thread_queue_Extract_priority_helper( ); /** - * @brief Thread Queue Extract priority + * @brief Wraps the underlying call and hides the requeuing argument. * * This macro wraps the underlying call and hides the requeuing argument. */ @@ -254,21 +267,21 @@ void _Thread_queue_Extract_priority_helper( #define _Thread_queue_Extract_priority( _the_thread_queue, _the_thread ) \ _Thread_queue_Extract_priority_helper( _the_thread_queue, _the_thread, false ) /** - * @brief Returns highest priority thread on the_thread_queue + * @brief Get highest priority thread on the_thread_queue. * * This function returns a pointer to the "first" thread * on @a the_thread_queue. The "first" thread is the highest * priority thread waiting on @a the_thread_queue. * * @param[in] the_thread_queue is the pointer to the thread queue - * @return first thread or NULL + * @retval first thread or NULL */ Thread_Control *_Thread_queue_First_priority( Thread_queue_Control *the_thread_queue ); /** - * @brief Thread Queue Dequeue FIFO + * @brief Gets a pointer to the thread which has been waiting the longest. * * This function returns a pointer to the thread which has * been waiting the longest on the_thread_queue. If no @@ -276,7 +289,7 @@ Thread_Control *_Thread_queue_First_priority( * * @param[in] the_thread_queue is the pointer to threadq * - * @return thread dequeued or NULL + * @retval thread dequeued or NULL * * - INTERRUPT LATENCY: * + check sync @@ -287,7 +300,7 @@ Thread_Control *_Thread_queue_Dequeue_fifo( ); /** - * @brief Thread Queue Enqueue FIFO + * @brief Enqueues the currently executing thread on the_thread_queue. * * This routine enqueues the currently executing thread on * the_thread_queue with an optional timeout using the @@ -307,7 +320,7 @@ Thread_blocking_operation_States _Thread_queue_Enqueue_fifo ( ); /** - * @brief Thread Queue Extract FIFO + * @brief Removes the_thread from the_thread_queue and cancels any timeouts. * * This routine removes the_thread from the_thread_queue * and cancels any timeouts associated with this blocking. @@ -318,7 +331,7 @@ void _Thread_queue_Extract_fifo( ); /** - * @brief Thread Queue First FIFO + * @brief Gets a pointer to the "first" thread on the_thread_queue. * * This function returns a pointer to the "first" thread * on the_thread_queue. The first thread is the thread @@ -326,14 +339,14 @@ void _Thread_queue_Extract_fifo( * * @param[in] the_thread_queue is the pointer to threadq * - * @return first thread or NULL + * @retval first thread or NULL */ Thread_Control *_Thread_queue_First_fifo( Thread_queue_Control *the_thread_queue ); /** - * @brief Thread Queue Timeout + * @brief Thread queue timeout. * * This routine is invoked when a task's request has not * been satisfied after the timeout interval specified to @@ -349,7 +362,7 @@ void _Thread_queue_Timeout ( ); /** - * @brief Process Thread Queue Timeout + * @brief Process thread queue timeout. * * This is a shared helper routine which makes it easier to have multiple * object class specific timeout routines. diff --git a/cpukit/score/include/rtems/score/threadsync.h b/cpukit/score/include/rtems/score/threadsync.h index df8ce5f800..a740302f7e 100644 --- a/cpukit/score/include/rtems/score/threadsync.h +++ b/cpukit/score/include/rtems/score/threadsync.h @@ -1,5 +1,7 @@ /** - * @file rtems/score/threadsync.h + * @file rtems/score/threadsync.h + * + * @brief Synchronize Thread Blocking Operations with Actions in an ISR * * This include file contains all constants and structures associated * with synchronizing a thread blocking operation with potential diff --git a/cpukit/score/include/rtems/score/timespec.h b/cpukit/score/include/rtems/score/timespec.h index 41bb8bb3ef..e72ccb2b72 100644 --- a/cpukit/score/include/rtems/score/timespec.h +++ b/cpukit/score/include/rtems/score/timespec.h @@ -35,7 +35,7 @@ extern "C" { #endif /** - * @brief Set Timespec to Seconds Nanosecond + * @brief Set timespec to seconds nanosecond. * * This method sets the timespec to the specified seconds and nanoseconds * value. @@ -51,7 +51,7 @@ extern "C" { } while (0) /** - * @brief Zero Timespec + * @brief Sets the Timespec to Zero * * This method sets the timespec to zero. * value. @@ -65,37 +65,37 @@ extern "C" { } while (0) /** - * @brief Get Seconds Portion of Timespec + * @brief Get seconds portion of timespec. * * This method returns the seconds portion of the specified timespec * * @param[in] _time points to the timespec * - * @return The seconds portion of @a _time. + * @retval The seconds portion of @a _time. */ #define _Timespec_Get_seconds( _time ) \ ((_time)->tv_sec) /** - * @brief Get Nanoseconds Portion of Timespec + * @brief Get nanoseconds portion of timespec. * * This method returns the nanoseconds portion of the specified timespec * * @param[in] _time points to the timespec * - * @return The nanoseconds portion of @a _time. + * @retval The nanoseconds portion of @a _time. */ #define _Timespec_Get_nanoseconds( _time ) \ ((_time)->tv_nsec) /** - * @brief Is Timespec Valid + * @brief Check if timespec is valid. * * This method determines the validity of a timespec. * * @param[in] time is the timespec instance to validate. * - * @return This method returns true if @a time is valid and + * @retval This method returns true if @a time is valid and * false otherwise. */ bool _Timespec_Is_valid( @@ -103,14 +103,14 @@ bool _Timespec_Is_valid( ); /** - * @brief Timespec Less Than Operator + * @brief The Timespec "less than" operator. * * This method is the less than operator for timespecs. * * @param[in] lhs is the left hand side timespec * @param[in] rhs is the right hand side timespec * - * @return This method returns true if @a lhs is less than the @a rhs and + * @retval This method returns true if @a lhs is less than the @a rhs and * false otherwise. */ bool _Timespec_Less_than( @@ -119,28 +119,28 @@ bool _Timespec_Less_than( ); /** - * @brief Timespec Greater Than Operator + * @brief The Timespec "greater than" operator. * * This method is the greater than operator for timespecs. * - * @param[in] lhs is the left hand side timespec - * @param[in] rhs is the right hand side timespec + * @param[in] _lhs is the left hand side timespec + * @param[in] _rhs is the right hand side timespec * - * @return This method returns true if @a lhs is greater than the @a rhs and + * @retval This method returns true if @a lhs is greater than the @a rhs and * false otherwise. */ #define _Timespec_Greater_than( _lhs, _rhs ) \ _Timespec_Less_than( _rhs, _lhs ) /** - * @brief Timespec equal to Operator + * @brief The Timespec "equal to" operator. * * This method is the is equal to than operator for timespecs. * * @param[in] lhs is the left hand side timespec * @param[in] rhs is the right hand side timespec * - * @return This method returns true if @a lhs is equal to @a rhs and + * @retval This method returns true if @a lhs is equal to @a rhs and * false otherwise. */ #define _Timespec_Equal_to( lhs, rhs ) \ @@ -149,7 +149,7 @@ bool _Timespec_Less_than( ) /** - * @brief Add to a Timespec + * @brief Add two timespecs. * * This routine adds two timespecs. The second argument is added * to the first. @@ -157,7 +157,7 @@ bool _Timespec_Less_than( * @param[in] time is the base time to be added to * @param[in] add is the timespec to add to the first argument * - * @return This method returns the number of seconds @a time increased by. + * @retval This method returns the number of seconds @a time increased by. */ uint32_t _Timespec_Add_to( struct timespec *time, @@ -165,21 +165,21 @@ uint32_t _Timespec_Add_to( ); /** - * @brief Convert Timespec to Number of Ticks + * @brief Convert timespec to number of ticks. * * This routine convert the @a time timespec to the corresponding number * of clock ticks. * * @param[in] time is the time to be converted * - * @return This method returns the number of ticks computed. + * @retval This method returns the number of ticks computed. */ uint32_t _Timespec_To_ticks( const struct timespec *time ); /** - * @brief Convert Ticks to Timespec + * @brief Convert ticks to timespec. * * This routine converts the @a ticks value to the corresponding * timespec format @a time. @@ -193,7 +193,7 @@ void _Timespec_From_ticks( ); /** - * @brief Subtract Two Timespec + * @brief Subtract two timespec. * * This routine subtracts two timespecs. @a result is set to * @a end - @a start. @@ -202,7 +202,7 @@ void _Timespec_From_ticks( * @param[in] end is the ending time * @param[in] result is the difference between starting and ending time. * - * @return This method fills in @a result. + * @retval This method fills in @a result. */ void _Timespec_Subtract( const struct timespec *start, @@ -211,7 +211,7 @@ void _Timespec_Subtract( ); /** - * @brief Divide Timespec By Integer + * @brief Divide timespec by an integer. * * This routine divides a timespec by an integer value. The expected * use is to assist in benchmark calculations where you typically @@ -221,7 +221,7 @@ void _Timespec_Subtract( * @param[in] iterations is the number of iterations * @param[in] result is the average time. * - * @return This method fills in @a result. + * @retval This method fills in @a result. */ void _Timespec_Divide_by_integer( const struct timespec *time, @@ -230,7 +230,7 @@ void _Timespec_Divide_by_integer( ); /** - * @brief Divide Timespec + * @brief Divide a timespec by anonther timespec. * * This routine divides a timespec by another timespec. The * intended use is for calculating percentages to three decimal points. @@ -240,7 +240,7 @@ void _Timespec_Divide_by_integer( * @param[in] ival_percentage is the integer portion of the average * @param[in] fval_percentage is the thousandths of percentage * - * @return This method fills in @a result. + * @retval This method fills in @a result. */ void _Timespec_Divide( const struct timespec *lhs, diff --git a/cpukit/score/include/rtems/score/timestamp.h b/cpukit/score/include/rtems/score/timestamp.h index 951c37413d..638ae7bf52 100644 --- a/cpukit/score/include/rtems/score/timestamp.h +++ b/cpukit/score/include/rtems/score/timestamp.h @@ -1,6 +1,8 @@ /** * @file rtems/score/timestamp.h * + * @brief Helpers for Manipulating Timestamps + * * This include file contains helpers for manipulating timestamps. */ @@ -17,7 +19,7 @@ #define _RTEMS_SCORE_TIMESTAMP_H /** - * @defgroup SuperCore Timestamp + * @defgroup SuperCoreTimeStamp Score Timestamp * * @ingroup Score * @@ -73,7 +75,7 @@ extern "C" { #endif /** - * @brief Set Timestamp to Specified Seconds and Nanoseconds + * @brief Set timestamp to specified seconds and nanoseconds. * * This method sets the timestamp to the specified @a _seconds and @a _nanoseconds * value. @@ -91,7 +93,7 @@ extern "C" { #endif /** - * @brief Zero Timestamp + * @brief Sets the timestamp to zero. * * This method sets the timestamp to zero. * value. @@ -107,13 +109,13 @@ extern "C" { #endif /** - * @brief Is Timestamp Valid + * @brief Determines the validity of a timestamp. * * This method determines the validity of a timestamp. * * @param[in] _time points to the timestamp instance to validate. * - * @return This method returns true if @a time is valid and + * @retval This method returns true if @a time is valid and * false otherwise. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE @@ -125,14 +127,14 @@ extern "C" { #endif /** - * @brief Timestamp Less Than Operator + * @brief Less than operator for timestamps. * * This method is the less than operator for timestamps. * * @param[in] _lhs points to the left hand side timestamp * @param[in] _rhs points to the right hand side timestamp * - * @return This method returns true if @a _lhs is less than the @a _rhs and + * @retval This method returns true if @a _lhs is less than the @a _rhs and * false otherwise. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE @@ -144,28 +146,28 @@ extern "C" { #endif /** - * @brief Timestamp Greater Than Operator + * @brief Greater than operator for timestamps. * * This method is the greater than operator for timestamps. * * @param[in] _lhs points to the left hand side timestamp * @param[in] _rhs points to the right hand side timestamp * - * @return This method returns true if @a _lhs is greater than the @a _rhs and + * @retval This method returns true if @a _lhs is greater than the @a _rhs and * false otherwise. */ #define _Timestamp_Greater_than( _lhs, _rhs ) \ _Timestamp_Less_than( _rhs, _lhs ) /** - * @brief Timestamp equal to Operator + * @brief Equal to than operator for timestamps. * * This method is the is equal to than operator for timestamps. * * @param[in] _lhs points to the left hand side timestamp * @param[in] _rhs points to the right hand side timestamp * - * @return This method returns true if @a _lhs is equal to @a _rhs and + * @retval This method returns true if @a _lhs is equal to @a _rhs and * false otherwise. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE @@ -177,7 +179,7 @@ extern "C" { #endif /** - * @brief Add to a Timestamp + * @brief Adds two timestamps. * * This routine adds two timestamps. The second argument is added * to the first. @@ -185,7 +187,7 @@ extern "C" { * @param[in] _time points to the base time to be added to * @param[in] _add points to the timestamp to add to the first argument * - * @return This method returns the number of seconds @a time increased by. + * @retval This method returns the number of seconds @a time increased by. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE #define _Timestamp_Add_to( _time, _add ) \ @@ -196,14 +198,14 @@ extern "C" { #endif /** - * @brief Convert Timestamp to Number of Ticks + * @brief Convert timestamp to number of clock ticks. * * This routine convert the @a time timestamp to the corresponding number * of clock ticks. * * @param[in] _time points to the time to be converted * - * @return This method returns the number of ticks computed. + * @retval This method returns the number of ticks computed. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE #define _Timestamp_To_ticks( _time ) \ @@ -214,7 +216,7 @@ extern "C" { #endif /** - * @brief Convert Ticks to Timestamp + * @brief Converts the @a _ticks value to timestamp format. * * This routine converts the @a _ticks value to the corresponding * timestamp format @a _time. @@ -231,7 +233,7 @@ extern "C" { #endif /** - * @brief Subtract Two Timestamp + * @brief Subtracts two timestamps. * * This routine subtracts two timestamps. @a result is set to * @a end - @a start. @@ -241,7 +243,7 @@ extern "C" { * @param[in] _result points to the difference between * starting and ending time. * - * @return This method fills in @a _result. + * @retval This method fills in @a _result. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE #define _Timestamp_Subtract( _start, _end, _result ) \ @@ -252,7 +254,7 @@ extern "C" { #endif /** - * @brief Divide Timestamp By Integer + * @brief Divides a timestamp by an integer value. * * This routine divides a timestamp by an integer value. The expected * use is to assist in benchmark calculations where you typically @@ -262,7 +264,7 @@ extern "C" { * @param[in] _iterations is the number of iterations * @param[in] _result points to the average time. * - * @return This method fills in @a result. + * @retval This method fills in @a result. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE #define _Timestamp_Divide_by_integer( _time, _iterations, _result ) \ @@ -273,7 +275,7 @@ extern "C" { #endif /** - * @brief Divide Timestamp + * @brief Divides a timestamp by another timestamp. * * This routine divides a timestamp by another timestamp. The * intended use is for calculating percentages to three decimal points. @@ -283,7 +285,7 @@ extern "C" { * @param[in] _ival_percentage points to the integer portion of the average * @param[in] _fval_percentage points to the thousandths of percentage * - * @return This method fills in @a result. + * @retval This method fills in @a result. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE #define _Timestamp_Divide( _lhs, _rhs, _ival_percentage, _fval_percentage ) \ @@ -294,13 +296,13 @@ extern "C" { #endif /** - * @brief Get Seconds Portion of Timestamp + * @brief Get seconds portion of timestamp. * * This method returns the seconds portion of the specified timestamp * * @param[in] _time points to the timestamp * - * @return The seconds portion of @a _time. + * @retval The seconds portion of @a _time. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE #define _Timestamp_Get_seconds( _time ) \ @@ -311,13 +313,13 @@ extern "C" { #endif /** - * @brief Get Nanoseconds Portion of Timestamp + * @brief Get nanoseconds portion of timestamp. * * This method returns the nanoseconds portion of the specified timestamp * * @param[in] _time points to the timestamp * - * @return The nanoseconds portion of @a _time. + * @retval The nanoseconds portion of @a _time. */ #if CPU_TIMESTAMP_USE_STRUCT_TIMESPEC == TRUE #define _Timestamp_Get_nanoseconds( _time ) \ @@ -328,7 +330,7 @@ extern "C" { #endif /** - * @brief Convert Timestamp to Struct Timespec + * @brief Convert timestamp to struct timespec. * * This method returns the seconds portion of the specified @a _timestamp. * @@ -345,7 +347,7 @@ extern "C" { #endif /** - * @brief Convert Timestamp to struct timeval + * @brief Convert timestamp to struct timeval. * * @param[in] _timestamp points to the timestamp * @param[in] _timeval points to the timeval diff --git a/cpukit/score/include/rtems/score/timestamp64.h b/cpukit/score/include/rtems/score/timestamp64.h index 41735fa144..306ee35fee 100644 --- a/cpukit/score/include/rtems/score/timestamp64.h +++ b/cpukit/score/include/rtems/score/timestamp64.h @@ -1,6 +1,8 @@ /** * @file rtems/score/timestamp64.h * + * @brief Helpers for Manipulating 64-bit Integer Timestamps + * * This include file contains helpers for manipulating * 64-bit integer timestamps. */ @@ -18,7 +20,7 @@ #define _RTEMS_SCORE_TIMESTAMP64_H /** - * @defgroup SuperCore Timestamp64 + * @defgroup SuperCoreTimestamp64 SuperCore Sixty-Four Bit Timestamps * * @ingroup Score * @@ -61,7 +63,7 @@ static inline void _Timestamp64_implementation_Set( } /** - * @brief Set Timestamp to Seconds Nanosecond + * @brief Set 64-bit timestamp to seconds nanosecond. * * This method sets the timestamp to the specified seconds and nanoseconds * value. @@ -89,10 +91,9 @@ static inline void _Timestamp64_implementation_Set_to_zero( } /** - * @brief Zero Timestamp + * @brief Sets the 64-bit timestamp to zero. * - * This method sets the timestamp to zero. - * value. + * This method sets the timestamp to zero value. * * @param[in] _time points to the timestamp instance to zero. */ @@ -106,13 +107,13 @@ static inline void _Timestamp64_implementation_Set_to_zero( #endif /** - * @brief Is Timestamp Valid + * @brief Determines the validity of a 64-bit timestamp. * * This method determines the validity of a timestamp. * * @param[in] _time points to the timestamp instance to validate. * - * @return This method returns true if @a time is valid and + * @retval This method returns true if @a time is valid and * false otherwise. */ #define _Timestamp64_Is_valid( _time ) \ @@ -127,14 +128,14 @@ static inline bool _Timestamp64_implementation_Less_than( } /** - * @brief Timestamp Less Than Operator + * @brief The "less than" operator for 64-bit timestamps. * * This method is the less than operator for timestamps. * * @param[in] _lhs points to the left hand side timestamp * @param[in] _rhs points to the right hand side timestamp * - * @return This method returns true if @a _lhs is less than the @a _rhs and + * @retval This method returns true if @a _lhs is less than the @a _rhs and * false otherwise. */ #if CPU_TIMESTAMP_USE_INT64_INLINE == TRUE @@ -159,14 +160,14 @@ static inline bool _Timestamp64_implementation_Equal_to( _Timestamp64_Less_than( _rhs, _lhs ) /** - * @brief Timestamp equal to Operator + * @brief The "equal to" operator for 64-bit timestamps. * * This method is the is equal to than operator for timestamps. * * @param[in] _lhs points to the left hand side timestamp * @param[in] _rhs points to the right hand side timestamp * - * @return This method returns true if @a _lhs is equal to @a _rhs and + * @retval This method returns true if @a _lhs is equal to @a _rhs and * false otherwise. */ #if CPU_TIMESTAMP_USE_INT64_INLINE == TRUE @@ -188,7 +189,7 @@ static inline void _Timestamp64_implementation_Add_to( } /** - * @brief Add to a Timestamp + * @brief Add two 64-bit timestamps. * * This routine adds two timestamps. The second argument is added * to the first. @@ -196,7 +197,7 @@ static inline void _Timestamp64_implementation_Add_to( * @param[in] _time points to the base time to be added to * @param[in] _add points to the timestamp to add to the first argument * - * @return This method returns the number of seconds @a time increased by. + * @retval This method returns the number of seconds @a time increased by. */ #if CPU_TIMESTAMP_USE_INT64_INLINE == TRUE #define _Timestamp64_Add_to( _time, _add ) \ @@ -209,21 +210,21 @@ static inline void _Timestamp64_implementation_Add_to( #endif /** - * @brief Convert Timestamp to Number of Ticks + * @brief Convert 64-bit timestamp to number of ticks. * * This routine convert the @a time timestamp to the corresponding number * of clock ticks. * * @param[in] _time points to the time to be converted * - * @return This method returns the number of ticks computed. + * @retval This method returns the number of ticks computed. */ uint32_t _Timestamp64_To_ticks( const Timestamp64_Control *_time ); /** - * @brief Convert Ticks to Timestamp + * @brief Convert ticks to 64-bit timestamp. * * This routine converts the @a _ticks value to the corresponding * timestamp format @a _time. @@ -246,7 +247,7 @@ static inline void _Timestamp64_implementation_Subtract( } /** - * @brief Subtract Two Timestamp + * @brief Subtract two 64-bit timestamps. * * This routine subtracts two timestamps. @a result is set to * @a end - @a start. @@ -277,7 +278,7 @@ static inline void _Timestamp64_implementation_Divide_by_integer( } /** - * @brief Divide Timestamp By Integer + * @brief Divide 64-bit timestamp by an integer. * * This routine divides a timestamp by an integer value. The expected * use is to assist in benchmark calculations where you typically @@ -299,7 +300,7 @@ static inline void _Timestamp64_implementation_Divide_by_integer( #endif /** - * @brief Divide Timestamp + * @brief Divide 64-bit timestamp by another 64-bit timestamp. * * This routine divides a timestamp by another timestamp. The * intended use is for calculating percentages to three decimal points. @@ -324,13 +325,13 @@ static inline uint32_t _Timestamp64_implementation_Get_seconds( } /** - * @brief Get Seconds Portion of Timestamp + * @brief Get seconds portion of a 64-bit timestamp. * * This method returns the seconds portion of the specified timestamp * * @param[in] _time points to the timestamp * - * @return The seconds portion of @a _time. + * @retval The seconds portion of @a _time. */ #if CPU_TIMESTAMP_USE_INT64_INLINE == TRUE #define _Timestamp64_Get_seconds( _time ) \ @@ -349,13 +350,13 @@ static inline uint32_t _Timestamp64_implementation_Get_nanoseconds( } /** - * @brief Get Nanoseconds Portion of Timestamp + * @brief Get nanoseconds portion of a 64-bit timestamp. * * This method returns the nanoseconds portion of the specified timestamp * * @param[in] _time points to the timestamp * - * @return The nanoseconds portion of @a _time. + * @retval The nanoseconds portion of @a _time. */ #if CPU_TIMESTAMP_USE_INT64_INLINE == TRUE #define _Timestamp64_Get_nanoseconds( _time ) \ @@ -376,7 +377,7 @@ static inline void _Timestamp64_implementation_To_timespec( } /** - * @brief Convert Timestamp to struct timespec + * @brief Convert 64-bit timestamp to struct timespec. * * This method returns the seconds portion of the specified timestamp * @@ -403,7 +404,7 @@ static inline void _Timestamp64_implementation_To_timeval( } /** - * @brief Convert Timestamp to struct timeval + * @brief Convert 64-bit timestamp to struct timeval. * * This method returns the seconds portion of the specified timestamp * diff --git a/cpukit/score/include/rtems/score/tod.h b/cpukit/score/include/rtems/score/tod.h index eb743b737a..df73f95970 100644 --- a/cpukit/score/include/rtems/score/tod.h +++ b/cpukit/score/include/rtems/score/tod.h @@ -1,6 +1,8 @@ /** * @file rtems/score/tod.h * + * @brief Constants and Structures Associated with the Time of Day Handler. + * * This include file contains all the constants and structures associated * with the Time of Day Handler. */ @@ -105,7 +107,7 @@ extern "C" { (4 * TOD_SECONDS_PER_DAY)) /** - * @brief RTEMS Epoch Year + * @brief Earliest year to which an time of day can be initialized. * * The following constant define the earliest year to which an * time of day can be initialized. This is considered the @@ -157,7 +159,7 @@ typedef struct { SCORE_EXTERN TOD_Control _TOD; /** - * @brief Seconds Since RTEMS Epoch + * @brief Number of seconds Since RTEMS epoch. * * The following contains the number of seconds from 00:00:00 * January 1, TOD_BASE_YEAR until the current time of day. @@ -166,14 +168,14 @@ SCORE_EXTERN TOD_Control _TOD; _Timestamp_Get_seconds(&_TOD.now) /** - * @brief Initializes the Time of Day Handler + * @brief Initializes the time of day handler. * * Performs the initialization necessary for the Time Of Day handler. */ void _TOD_Handler_initialization(void); /** - * @brief Sets the time of day from timestamp + * @brief Sets the time of day from timestamp. * * The @a tod_as_timestamp timestamp represents the time since UNIX epoch. * The watchdog seconds chain will be adjusted. @@ -203,10 +205,11 @@ static inline void _TOD_Set( * * This function invokes the nanoseconds extension. * - * @param[out] snapshot The snapshot. - * @param[in] source The clock. + * @param[out] snapshot points to an area that will contain the current + * TOD plus the BSP nanoseconds since last tick adjustment + * @param[in] clock contains the current TOD * - * @return The snapshot. + * @retval @a snapshot */ Timestamp_Control *_TOD_Get_with_nanoseconds( Timestamp_Control *snapshot, @@ -226,7 +229,7 @@ static inline void _TOD_Get( } /** - * @brief _TOD_Get_uptime + * @brief Gets the system uptime with potential accuracy to the nanosecond. * * This routine returns the system uptime with potential accuracy * to the nanosecond. @@ -241,7 +244,7 @@ static inline void _TOD_Get_uptime( } /** - * @brief _TOD_Get_uptime_as_timespec + * @brief Gets the system uptime with potential accuracy to the nanosecond. * * This routine returns the system uptime with potential accuracy * to the nanosecond. @@ -253,7 +256,7 @@ void _TOD_Get_uptime_as_timespec( ); /** - * @brief Increments time of day at each clock tick + * @brief Increments time of day at each clock tick. * * This routine increments the ticks field of the current time of * day at each clock tick. @@ -261,7 +264,7 @@ void _TOD_Get_uptime_as_timespec( void _TOD_Tickle_ticks( void ); /** - * @brief TOD_MILLISECONDS_TO_MICROSECONDS + * @brief Converts an interval expressed in milliseconds to microseconds. * * This routine converts an interval expressed in milliseconds to microseconds. * @@ -270,7 +273,7 @@ void _TOD_Tickle_ticks( void ); #define TOD_MILLISECONDS_TO_MICROSECONDS(_ms) ((uint32_t)(_ms) * 1000L) /** - * @brief Converts microseconds to ticks + * @brief Converts an interval expressed in microseconds to ticks. * * This routine converts an interval expressed in microseconds to ticks. * @@ -281,7 +284,7 @@ uint32_t TOD_MICROSECONDS_TO_TICKS( ); /** - * @brief TOD_MILLISECONDS_TO_TICKS + * @brief Converts an interval expressed in milliseconds to ticks. * * This routine converts an interval expressed in milliseconds to ticks. * @@ -292,7 +295,7 @@ uint32_t TOD_MILLISECONDS_TO_TICKS( ); /** - * @brief How many ticks in a second? + * @brief Gets number of ticks in a second. * * This method returns the number of ticks in a second. * @@ -302,7 +305,7 @@ uint32_t TOD_MILLISECONDS_TO_TICKS( uint32_t TOD_TICKS_PER_SECOND_method(void); /** - * @brief Method to return number of ticks in a second + * @brief Gets number of ticks in a second. * * This method exists to hide the fact that TOD_TICKS_PER_SECOND can not * be implemented as a macro in a .h file due to visibility issues. diff --git a/cpukit/score/include/rtems/score/tqdata.h b/cpukit/score/include/rtems/score/tqdata.h index 1c2e1326f5..c556d3ffe8 100644 --- a/cpukit/score/include/rtems/score/tqdata.h +++ b/cpukit/score/include/rtems/score/tqdata.h @@ -1,6 +1,8 @@ /** * @file rtems/score/tqdata.h * + * @brief Constants and Structures Needed to Declare a Thread Queue + * * This include file contains all the constants and structures * needed to declare a thread queue. */ diff --git a/cpukit/score/include/rtems/score/userext.h b/cpukit/score/include/rtems/score/userext.h index 6071d7ab3b..bf76c35e39 100644 --- a/cpukit/score/include/rtems/score/userext.h +++ b/cpukit/score/include/rtems/score/userext.h @@ -3,7 +3,7 @@ * * @ingroup ScoreUserExt * - * @brief User Extension Handler API. + * @brief User Extension Handler API */ /* @@ -36,9 +36,8 @@ typedef void User_extensions_routine RTEMS_COMPILER_DEPRECATED_ATTRIBUTE; * @brief The User Extension Handler provides invocation of application * dependent routines at critical points in the life of each thread and the * system as a whole. - * - * @{ */ +/**@{**/ /** * @brief Task create extension. diff --git a/cpukit/score/include/rtems/score/userextimpl.h b/cpukit/score/include/rtems/score/userextimpl.h index 7a89d9af0c..6ecdcc579a 100644 --- a/cpukit/score/include/rtems/score/userextimpl.h +++ b/cpukit/score/include/rtems/score/userextimpl.h @@ -3,7 +3,7 @@ * * @ingroup ScoreUserExt * - * @brief User Extension Handler API. + * @brief User Extension Handler API */ /* @@ -25,10 +25,13 @@ extern "C" { #endif /** - * @addtogroup ScoreUserExt + * @defgroup ScoreUserExt User Extension Handler + * + * @ingroup Score * - * @{ + * @addtogroup ScoreUserExt */ +/**@{**/ /** * @brief List of active extensions. @@ -42,9 +45,8 @@ extern Chain_Control _User_extensions_Switches_list; /** * @name Extension Maintainance - * - * @{ */ +/**@{**/ void _User_extensions_Handler_initialization( void ); @@ -154,9 +156,8 @@ void _User_extensions_Iterate( /** * @name Extension Callout Dispatcher - * - * @{ */ +/**@{**/ static inline bool _User_extensions_Thread_create( Thread_Control *created ) { diff --git a/cpukit/score/include/rtems/score/watchdog.h b/cpukit/score/include/rtems/score/watchdog.h index 1471f84b28..6dd0b5d0ce 100644 --- a/cpukit/score/include/rtems/score/watchdog.h +++ b/cpukit/score/include/rtems/score/watchdog.h @@ -1,6 +1,8 @@ /** * @file rtems/score/watchdog.h * + * @brief Constants and Structures Associated with Watchdog Timers + * * This include file contains all the constants and structures associated * with watchdog timers. This Handler provides mechanisms which can be * used to initialize and manipulate watchdog timers. @@ -38,7 +40,7 @@ extern "C" { #endif /** - * @brief Maximum Interval Length + * @brief Control block used to manage intervals. * * The following type defines the control block used to manage * intervals. @@ -46,14 +48,15 @@ extern "C" { #define WATCHDOG_MAXIMUM_INTERVAL ((Watchdog_Interval) 0xffffffff) /** - * @brief Watchdog Interval Type + * @brief Type is used to specify the length of intervals. * * This type is used to specify the length of intervals. */ typedef uint32_t Watchdog_Interval; /** - * @brief Watchdog Nanoseconds Since Last Tick Extension + * @brief Pointer to the BSP plugin to obtain the number + * of nanoseconds since the last clock tick. * * This type defines a pointer to the BSP plugin to obtain the number * of nanoseconds since the last clock tick. @@ -61,14 +64,14 @@ typedef uint32_t Watchdog_Interval; typedef uint32_t (*Watchdog_Nanoseconds_since_last_tick_routine)(void); /** - * @brief Watchdog Service Routine Return Type + * @brief Return type from a Watchdog Service Routine. * * This type defines the return type from a Watchdog Service Routine. */ typedef void Watchdog_Service_routine; /** - * @brief Watchdog Service Routine Pointer Type + * @brief Pointer to a watchdog service routine. * * This type define a pointer to a watchdog service routine. */ @@ -78,7 +81,7 @@ typedef Watchdog_Service_routine ( *Watchdog_Service_routine_entry )( ); /** - * @brief No timeout constant + * @brief The constant for indefinite wait. * * This is the constant for indefinite wait. It is actually an * illegal interval. @@ -86,7 +89,7 @@ typedef Watchdog_Service_routine ( *Watchdog_Service_routine_entry )( #define WATCHDOG_NO_TIMEOUT 0 /** - * @brief Watchdog States Type + * @brief Set of the states which a watchdog timer may be at any given time. * * This enumerated type is the set of the states in which a * watchdog timer may be at any given time. @@ -108,7 +111,8 @@ typedef enum { } Watchdog_States; /** - * @brief Watchdog Adjustment Directions Type + * @brief the manner in which a watchdog chain may + * be adjusted by the @ref _Watchdog_Adjust routine. * * The following enumerated type details the manner in which * a watchdog chain may be adjusted by the @ref _Watchdog_Adjust @@ -123,7 +127,7 @@ typedef enum { } Watchdog_Adjust_directions; /** - * @brief Watchdog Control Structure + * @brief The control block used to manage each watchdog timer. * * The following record defines the control block used * to manage each watchdog timer. @@ -154,7 +158,7 @@ typedef struct { } Watchdog_Control; /** - * @brief Watchdog Synchronization Level + * @brief Watchdog synchronization level. * * This used for synchronization purposes * during an insert on a watchdog delta chain. @@ -162,7 +166,7 @@ typedef struct { SCORE_EXTERN volatile uint32_t _Watchdog_Sync_level; /** - * @brief Watchdog Synchronization Count + * @brief Watchdog synchronization count. * * This used for synchronization purposes * during an insert on a watchdog delta chain. @@ -170,7 +174,7 @@ SCORE_EXTERN volatile uint32_t _Watchdog_Sync_level; SCORE_EXTERN volatile uint32_t _Watchdog_Sync_count; /** - * @brief Ticks Since System Boot + * @brief The number of ticks since the system was booted. * * This contains the number of ticks since the system was booted. */ @@ -178,7 +182,7 @@ SCORE_EXTERN volatile uint32_t _Watchdog_Sync_count; SCORE_EXTERN volatile Watchdog_Interval _Watchdog_Ticks_since_boot; /** - * @brief Watchdog Nanoseconds Since Last Tick Handler + * @brief The number of nanoseconds since the last clock tick. * * This is a pointer to the optional BSP plugin to obtain the number * of nanoseconds since the last clock tick. @@ -187,21 +191,21 @@ extern Watchdog_Nanoseconds_since_last_tick_routine _Watchdog_Nanoseconds_since_tick_handler; /** - * @brief Per Ticks Watchdog List + * @brief Watchdog chain which is managed at ticks. * * This is the watchdog chain which is managed at ticks. */ SCORE_EXTERN Chain_Control _Watchdog_Ticks_chain; /** - * @brief Per Seconds Watchdog List + * @brief Watchdog chain which is managed at second boundaries. * * This is the watchdog chain which is managed at second boundaries. */ SCORE_EXTERN Chain_Control _Watchdog_Seconds_chain; /** - * @brief Watchdog Handler Initialization + * @brief Initialize the watchdog handler. * * This routine initializes the watchdog handler. The watchdog * synchronization flag is initialized and the watchdog chains are @@ -210,20 +214,21 @@ SCORE_EXTERN Chain_Control _Watchdog_Seconds_chain; void _Watchdog_Handler_initialization( void ); /** - * @brief Remove Watchdog from List + * @brief Removes @a the_watchdog from the watchdog chain. * * This routine removes @a the_watchdog from the watchdog chain on which * it resides and returns the state @a the_watchdog timer was in. * * @param[in] the_watchdog will be removed - * @return the state in which @a the_watchdog was in when removed + * @retval the state in which @a the_watchdog was in when removed */ Watchdog_States _Watchdog_Remove ( Watchdog_Control *the_watchdog ); /** - * @brief Watchdog Adjust + * @brief Adjusts the @a header watchdog chain in the forward + * or backward @a direction for @a units ticks. * * This routine adjusts the @a header watchdog chain in the forward * or backward @a direction for @a units ticks. @@ -239,7 +244,8 @@ void _Watchdog_Adjust ( ); /** - * @brief Watchdog Adjust to Chain + * @brief Adjusts the @a header watchdog chain in the forward + * @a direction for @a units_arg ticks. * * This routine adjusts the @a header watchdog chain in the forward * @a direction for @a units_arg ticks. @@ -259,7 +265,8 @@ void _Watchdog_Adjust_to_chain( ); /** - * @brief Watchdog Insert + * @brief Inserts @a the_watchdog into the @a header watchdog chain + * for a time of @a units. * * This routine inserts @a the_watchdog into the @a header watchdog chain * for a time of @a units. @@ -274,7 +281,8 @@ void _Watchdog_Insert ( ); /** - * @brief Watchdog Tickle + * @brief This routine is invoked at appropriate intervals to update + * the @a header watchdog chain. * * This routine is invoked at appropriate intervals to update * the @a header watchdog chain. @@ -287,7 +295,7 @@ void _Watchdog_Tickle ( ); /** - * @brief Report Information on a Single Watchdog Instance + * @brief Report information on a single watchdog instance. * * This method prints a one line report on the watchdog instance * provided. The @a name may be used to identify the watchdog and @@ -306,7 +314,7 @@ void _Watchdog_Report( ); /** - * @brief Report Information on a Watchdog Chain + * @brief Report information on a watchdog chain. * * This method prints report on the watchdog chain provided. * The @a name may be used to identify the watchdog chain and @@ -326,7 +334,7 @@ void _Watchdog_Report_chain( ); /** - * @brief Default Nanoseconds Since Last Tick Handler + * @brief Handler for default nanoseconds since last tick. * * @retval 0 Always. */ diff --git a/cpukit/score/include/rtems/score/wkspace.h b/cpukit/score/include/rtems/score/wkspace.h index ffac4cbff0..91059f734f 100644 --- a/cpukit/score/include/rtems/score/wkspace.h +++ b/cpukit/score/include/rtems/score/wkspace.h @@ -1,5 +1,7 @@ /** - * @file rtems/score/wkspace.h + * @file rtems/score/wkspace.h + * + * @brief Information Related to the RAM Workspace * * This include file contains information related to the * RAM Workspace. This Handler provides mechanisms which can be used to @@ -44,7 +46,7 @@ extern "C" { SCORE_EXTERN Heap_Control _Workspace_Area; /** - * @brief Workspace Handler Initialization + * @brief Initilize workspace handler. * * This routine performs the initialization necessary for this handler. */ @@ -55,7 +57,7 @@ void _Workspace_Handler_initialization( ); /** - * @brief Allocate Memory from Workspace + * @brief Allocate memory from workspace. * * This routine returns the address of a block of memory of size * bytes. If a block of the appropriate size cannot be allocated @@ -63,14 +65,14 @@ void _Workspace_Handler_initialization( * * @param size is the requested size * - * @return a pointer to the requested memory or NULL. + * @retval a pointer to the requested memory or NULL. */ void *_Workspace_Allocate( size_t size ); /** - * @brief Free Memory to the Workspace + * @brief Free memory to the workspace. * * This function frees the specified block of memory. If the block * belongs to the Workspace and can be successfully freed, then @@ -88,27 +90,27 @@ void _Workspace_Free( ); /** - * @brief Workspace Allocate or Fail with Fatal Error + * @brief Workspace allocate or fail with fatal error. * * This routine returns the address of a block of memory of @a size * bytes. If a block of the appropriate size cannot be allocated * from the workspace, then the internal error handler is invoked. * * @param[in] size is the desired number of bytes to allocate - * @return If successful, the starting address of the allocated memory + * @retval If successful, the starting address of the allocated memory */ void *_Workspace_Allocate_or_fatal_error( size_t size ); /** - * @brief Duplicates String with Memory from the Workspace + * @brief Duplicates string with memory from the workspace. * * @param[in] string is the pointer to a zero terminated string. * @param[in] len is the length of the string (equal to strlen(string)). * - * @return NULL Not enough memory. - * @return other Duplicated string. + * @retval NULL Not enough memory. + * @retval other Duplicated string. */ char *_Workspace_String_duplicate( const char *string, diff --git a/cpukit/score/include/rtems/seterr.h b/cpukit/score/include/rtems/seterr.h index ddd5c1c685..f0e5b7ca6d 100644 --- a/cpukit/score/include/rtems/seterr.h +++ b/cpukit/score/include/rtems/seterr.h @@ -1,6 +1,8 @@ /** * @file rtems/seterr.h * + * @brief Data which Ease the Burden of Consistently Setting Errno + * * This file contains macros and definitions which ease the burden * of consistently setting errno and returning -1. */ @@ -17,6 +19,14 @@ #ifndef _RTEMS_SETERR_H #define _RTEMS_SETERR_H +/** + * @defgroup ScoreSetErr Set Errno + * + * @ingroup Score + * + */ +/**@{*/ + #include <errno.h> /** @@ -41,5 +51,6 @@ #define rtems_set_errno_and_return_minus_one_cast( _error, _cast ) \ do { errno = (_error); return (_cast) -1; } while(0) +/**@}*/ #endif /* end of include file */ diff --git a/cpukit/score/include/rtems/system.h b/cpukit/score/include/rtems/system.h index 46f080b46a..0100b72b84 100644 --- a/cpukit/score/include/rtems/system.h +++ b/cpukit/score/include/rtems/system.h @@ -1,9 +1,11 @@ /** - * @file rtems/system.h + * @file * - * This include file contains information that is included in every - * function in the executive. This must be the first include file - * included in all internal RTEMS files. + * @brief Information Included in Every Function in the Executive + * + * This include file contains information that is included in every + * function in the executive. This must be the first include file + * included in all internal RTEMS files. */ /* @@ -20,6 +22,13 @@ #include <rtems/score/percpu.h> +/** + * @defgroup ScoreSystem System Information + * + * @ingroup Score + */ +/**@{*/ + #ifdef __cplusplus extern "C" { #endif @@ -52,5 +61,6 @@ extern const char _Copyright_Notice[]; } #endif +/**@}*/ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/address.inl b/cpukit/score/inline/rtems/score/address.inl index c1c4f30b02..17bcd0a016 100644 --- a/cpukit/score/inline/rtems/score/address.inl +++ b/cpukit/score/inline/rtems/score/address.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/address.inl +/** + * @file + * + * @brief Inlined Routines Associated with Addresses * - * This include file contains the bodies of the routines - * about addresses which are inlined. + * This include file contains the bodies of the routines + * about addresses which are inlined. */ /* @@ -24,20 +26,21 @@ #include <rtems/score/basedefs.h> /** - * @addtogroup ScoreAddress - * @{ + * @addtogroup ScoreAddress */ +/**@{**/ -/** @brief Add Offset to Address +/** + * @brief Add offset to an address. * - * This function is used to add an @a offset to a @a base address. - * It returns the resulting address. This address is typically - * converted to an access type before being used further. + * This function is used to add an @a offset to a @a base address. + * It returns the resulting address. This address is typically + * converted to an access type before being used further. * - * @param[in] base is the base address. - * @param[in] offset is the offset to add to @a base. + * @param[in] base is the base address. + * @param[in] offset is the offset to add to @a base. * - * @return This method returns the resulting address. + * @return This method returns the resulting address. */ #include <rtems/bspIo.h> RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( @@ -48,16 +51,17 @@ RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset ( return (void *)((uintptr_t)base + offset); } -/** @brief Subtract Offset from Offset +/** + * @brief Subtract offset from offset. * - * This function is used to subtract an @a offset from a @a base - * address. It returns the resulting address. This address is - * typically converted to an access type before being used further. + * This function is used to subtract an @a offset from a @a base + * address. It returns the resulting address. This address is + * typically converted to an access type before being used further. * - * @param[in] base is the base address. - * @param[in] offset is the offset to subtract to @a base. + * @param[in] base is the base address. + * @param[in] offset is the offset to subtract to @a base. * - * @return This method returns the resulting address. + * @return This method returns the resulting address. */ RTEMS_INLINE_ROUTINE void *_Addresses_Subtract_offset ( @@ -68,18 +72,19 @@ RTEMS_INLINE_ROUTINE void *_Addresses_Subtract_offset ( return (void *)((uintptr_t)base - offset); } -/** @brief Subtract Two Offsets +/** + * @brief Subtract two offsets. * - * This function is used to subtract two addresses. It returns the - * resulting offset. + * This function is used to subtract two addresses. It returns the + * resulting offset. * - * @param[in] left is the address on the left hand side of the subtraction. - * @param[in] right is the address on the right hand side of the subtraction. + * @param[in] left is the address on the left hand side of the subtraction. + * @param[in] right is the address on the right hand side of the subtraction. * - * @return This method returns the resulting address. + * @return This method returns the resulting address. * - * @note The cast of an address to an uint32_t makes this code - * dependent on an addresses being thirty two bits. + * @note The cast of an address to an uint32_t makes this code + * dependent on an addresses being thirty two bits. */ RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract ( const void *left, @@ -89,16 +94,17 @@ RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract ( return (int32_t) ((const char *) left - (const char *) right); } -/** @brief Is Address Aligned +/** + * @brief Is address aligned. * - * This function returns true if the given address is correctly - * aligned for this processor and false otherwise. Proper alignment - * is based on correctness and efficiency. + * This function returns true if the given address is correctly + * aligned for this processor and false otherwise. Proper alignment + * is based on correctness and efficiency. * - * @param[in] address is the address being checked for alignment. + * @param[in] address is the address being checked for alignment. * - * @return This method returns true if the address is aligned and - * false otherwise. + * @retval true The @a address is aligned. + * @retval false The @a address is not aligned. */ RTEMS_INLINE_ROUTINE bool _Addresses_Is_aligned ( const void *address @@ -111,20 +117,21 @@ RTEMS_INLINE_ROUTINE bool _Addresses_Is_aligned ( #endif } -/** @brief Is Address In Range +/** + * @brief Is address in range. * - * This function returns true if the given address is within the - * memory range specified and false otherwise. base is the address - * of the first byte in the memory range and limit is the address - * of the last byte in the memory range. The base address is - * assumed to be lower than the limit address. + * This function returns true if the given address is within the + * memory range specified and false otherwise. base is the address + * of the first byte in the memory range and limit is the address + * of the last byte in the memory range. The base address is + * assumed to be lower than the limit address. * - * @param[in] address is the address to check. - * @param[in] base is the lowest address of the range to check against. - * @param[in] limit is the highest address of the range to check against. + * @param[in] address is the address to check. + * @param[in] base is the lowest address of the range to check against. + * @param[in] limit is the highest address of the range to check against. * - * @return This method returns true if the given @a address is within the - * memory range specified and false otherwise. + * @retval true The @a address is within the memory range specified + * @retval false The @a address is not within the memory range specified. */ RTEMS_INLINE_ROUTINE bool _Addresses_Is_in_range ( const void *address, @@ -135,7 +142,7 @@ RTEMS_INLINE_ROUTINE bool _Addresses_Is_in_range ( return (address >= base && address <= limit); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/chain.inl b/cpukit/score/inline/rtems/score/chain.inl index ebef69521b..7290d6ecac 100644 --- a/cpukit/score/inline/rtems/score/chain.inl +++ b/cpukit/score/inline/rtems/score/chain.inl @@ -1,9 +1,7 @@ /** * @file * - * @ingroup ScoreChain - * - * @brief Chain Handler API. + * @brief Chain Handler API */ /* @@ -25,16 +23,17 @@ #define _RTEMS_SCORE_CHAIN_INL /** - * @addtogroup ScoreChain - * @{ + * @addtogroup ScoreChain */ +/**@{**/ -/** @brief Set off chain +/** + * @brief Set off chain. * - * This function sets the next and previous fields of the @a node to NULL - * indicating the @a node is not part of a chain. + * This function sets the next and previous fields of the @a node to NULL + * indicating the @a node is not part of a chain. * - * @param[in] node the node set to off chain. + * @param[in] node the node set to off chain. */ RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain( Chain_Node *node @@ -43,14 +42,16 @@ RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain( node->next = node->previous = NULL; } -/** @brief Is the Node off Chain +/** + * @brief Is the node off chain. * - * This function returns true if the @a node is not on a chain. A @a node is - * off chain if the next and previous fields are set to NULL. + * This function returns true if the @a node is not on a chain. A @a node is + * off chain if the next and previous fields are set to NULL. * - * @param[in] node is the node off chain. + * @param[in] node is the node off chain. * - * @return This function returns true if the @a node is off chain. + * @retval true The @a node is off chain. + * @retval false The @a node is not off chain. */ RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain( const Chain_Node *node @@ -59,16 +60,17 @@ RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain( return (node->next == NULL) && (node->previous == NULL); } -/** @brief Are Two Nodes Equal +/** + * @brief Are two nodes equal. * - * This function returns true if @a left and @a right are equal, - * and false otherwise. + * This function returns true if @a left and @a right are equal, + * and false otherwise. * - * @param[in] left is the node on the left hand side of the comparison. - * @param[in] right is the node on the left hand side of the comparison. + * @param[in] left is the node on the left hand side of the comparison. + * @param[in] right is the node on the left hand side of the comparison. * - * @return This function returns true if @a left and @a right are equal, - * and false otherwise. + * @retval true @a left and @a right are equal. + * @retval false @a left and @a right are not equal. */ RTEMS_INLINE_ROUTINE bool _Chain_Are_nodes_equal( const Chain_Node *left, @@ -78,13 +80,15 @@ RTEMS_INLINE_ROUTINE bool _Chain_Are_nodes_equal( return left == right; } -/** @brief Is this Chain Control Pointer Null +/** + * @brief Is this chain control pointer NULL. * - * This function returns true if the_chain is NULL and false otherwise. + * This function returns true if the_chain is NULL and false otherwise. * - * @param[in] the_chain is the chain to be checked for empty status. + * @param[in] the_chain is the chain to be checked for empty status. * - * @return This method returns true if the_chain is NULL and false otherwise. + * @retval true @a the_chain is @c NULL. + * @retval false @a the_chain is not @c NULL. */ RTEMS_INLINE_ROUTINE bool _Chain_Is_null( const Chain_Control *the_chain @@ -93,13 +97,15 @@ RTEMS_INLINE_ROUTINE bool _Chain_Is_null( return (the_chain == NULL); } -/** @brief Is the Chain Node Pointer NULL +/** + * @brief Is the chain node pointer NULL. * - * This function returns true if the_node is NULL and false otherwise. + * This function returns true if the_node is NULL and false otherwise. * - * @param[in] the_node is the node pointer to check. + * @param[in] the_node is the node pointer to check. * - * @return This method returns true if the_node is NULL and false otherwise. + * @retval true @a the_node is @c NULL. + * @retval false @a the_node is not @c NULL. */ RTEMS_INLINE_ROUTINE bool _Chain_Is_null_node( const Chain_Node *the_node @@ -108,13 +114,14 @@ RTEMS_INLINE_ROUTINE bool _Chain_Is_null_node( return (the_node == NULL); } -/** @brief Return pointer to Chain Head +/** + * @brief Return pointer to chain head. * - * This function returns a pointer to the head node on the chain. + * This function returns a pointer to the head node on the chain. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the permanent head node of the chain. + * @return This method returns the permanent head node of the chain. */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Head( Chain_Control *the_chain @@ -123,13 +130,14 @@ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Head( return &the_chain->Head.Node; } -/** @brief Return pointer to immutable Chain Head +/** + * @brief Return pointer to immutable chain head. * - * This function returns a pointer to the head node on the chain. + * This function returns a pointer to the head node on the chain. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the permanent head node of the chain. + * @return This method returns the permanent head node of the chain. */ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_head( const Chain_Control *the_chain @@ -138,13 +146,14 @@ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_head( return &the_chain->Head.Node; } -/** @brief Return pointer to Chain Tail +/** + * @brief Return pointer to chain tail. * - * This function returns a pointer to the tail node on the chain. + * This function returns a pointer to the tail node on the chain. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the permanent tail node of the chain. + * @return This method returns the permanent tail node of the chain. */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( Chain_Control *the_chain @@ -153,13 +162,14 @@ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail( return &the_chain->Tail.Node; } -/** @brief Return pointer to immutable Chain Tail +/** + * @brief Return pointer to immutable chain tail. * - * This function returns a pointer to the tail node on the chain. + * This function returns a pointer to the tail node on the chain. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the permanent tail node of the chain. + * @return This method returns the permanent tail node of the chain. */ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_tail( const Chain_Control *the_chain @@ -168,14 +178,15 @@ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_tail( return &the_chain->Tail.Node; } -/** @brief Return pointer to Chain's First node +/** + * @brief Return pointer to chain's first node. * - * This function returns a pointer to the first node on the chain after the - * head. + * This function returns a pointer to the first node on the chain after the + * head. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the first node of the chain. + * @return This method returns the first node of the chain. */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First( Chain_Control *the_chain @@ -184,14 +195,15 @@ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First( return _Chain_Head( the_chain )->next; } -/** @brief Return pointer to immutable Chain's First node +/** + * @brief Return pointer to immutable chain's first node. * - * This function returns a pointer to the first node on the chain after the - * head. + * This function returns a pointer to the first node on the chain after the + * head. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the first node of the chain. + * @return This method returns the first node of the chain. */ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first( const Chain_Control *the_chain @@ -200,14 +212,15 @@ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first( return _Chain_Immutable_head( the_chain )->next; } -/** @brief Return pointer to Chain's Last node +/** + * @brief Return pointer to chain's last node. * - * This function returns a pointer to the last node on the chain just before - * the tail. + * This function returns a pointer to the last node on the chain just before + * the tail. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the last node of the chain. + * @return This method returns the last node of the chain. */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Last( Chain_Control *the_chain @@ -216,14 +229,15 @@ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Last( return _Chain_Tail( the_chain )->previous; } -/** @brief Return pointer to immutable Chain's Last node +/** + * @brief Return pointer to immutable chain's last node. * - * This function returns a pointer to the last node on the chain just before - * the tail. + * This function returns a pointer to the last node on the chain just before + * the tail. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This method returns the last node of the chain. + * @return This method returns the last node of the chain. */ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_last( const Chain_Control *the_chain @@ -232,13 +246,14 @@ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_last( return _Chain_Immutable_tail( the_chain )->previous; } -/** @brief Return pointer the next node from this node +/** + * @brief Return pointer the next node from this node. * - * This function returns a pointer to the next node after this node. + * This function returns a pointer to the next node after this node. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the next node on the chain. + * @return This method returns the next node on the chain. */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Next( Chain_Node *the_node @@ -247,13 +262,14 @@ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Next( return the_node->next; } -/** @brief Return pointer the immutable next node from this node +/** + * @brief Return pointer the immutable next node from this node. * - * This function returns a pointer to the next node after this node. + * This function returns a pointer to the next node after this node. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the next node on the chain. + * @return This method returns the next node on the chain. */ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_next( const Chain_Node *the_node @@ -262,13 +278,14 @@ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_next( return the_node->next; } -/** @brief Return pointer the previous node from this node +/** + * @brief Return pointer the previous node from this node. * - * This function returns a pointer to the previous node on this chain. + * This function returns a pointer to the previous node on this chain. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the previous node on the chain. + * @return This method returns the previous node on the chain. */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Previous( Chain_Node *the_node @@ -277,13 +294,14 @@ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Previous( return the_node->previous; } -/** @brief Return pointer the immutable previous node from this node +/** + * @brief Return pointer the immutable previous node from this node. * - * This function returns a pointer to the previous node on this chain. + * This function returns a pointer to the previous node on this chain. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the previous node on the chain. + * @return This method returns the previous node on the chain. */ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_previous( const Chain_Node *the_node @@ -292,15 +310,16 @@ RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_previous( return the_node->previous; } -/** @brief Is the Chain Empty +/** + * @brief Is the chain empty. * - * This function returns true if there a no nodes on @a the_chain and - * false otherwise. + * This function returns true if there a no nodes on @a the_chain and + * false otherwise. * - * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_chain is the chain to be operated upon. * - * @return This function returns true if there a no nodes on @a the_chain and - * false otherwise. + * @retval true There are no nodes on @a the_chain. + * @retval false There are nodes on @a the_chain. */ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( const Chain_Control *the_chain @@ -310,16 +329,17 @@ RTEMS_INLINE_ROUTINE bool _Chain_Is_empty( == _Chain_Immutable_tail( the_chain ); } -/** @brief Is this the First Node on the Chain +/** + * @brief Is this the first node on the chain. * - * This function returns true if the_node is the first node on a chain and - * false otherwise. + * This function returns true if the_node is the first node on a chain and + * false otherwise. * - * @param[in] the_node is the node the caller wants to know if it is - * the first node on a chain. + * @param[in] the_node is the node the caller wants to know if it is + * the first node on a chain. * - * @return This function returns true if @a the_node is the first node on - * a chain and false otherwise. + * @retval true @a the_node is the first node on a chain. + * @retval false @a the_node is not the first node on a chain. */ RTEMS_INLINE_ROUTINE bool _Chain_Is_first( const Chain_Node *the_node @@ -328,15 +348,16 @@ RTEMS_INLINE_ROUTINE bool _Chain_Is_first( return (the_node->previous->previous == NULL); } -/** @brief Is this the Last Node on the Chain +/** + * @brief Is this the last node on the chain. * - * This function returns true if @a the_node is the last node on a chain and - * false otherwise. + * This function returns true if @a the_node is the last node on a chain and + * false otherwise. * - * @param[in] the_node is the node to check as the last node. + * @param[in] the_node is the node to check as the last node. * - * @return This function returns true if @a the_node is the last node on - * a chain and false otherwise. + * @retval true @a the_node is the last node on a chain. + * @retval false @a the_node is not the last node on a chain. */ RTEMS_INLINE_ROUTINE bool _Chain_Is_last( const Chain_Node *the_node @@ -345,15 +366,19 @@ RTEMS_INLINE_ROUTINE bool _Chain_Is_last( return (the_node->next->next == NULL); } -/** @brief Does this Chain have only One Node +/** + * @brief Does this chain have only one node. + * + * This function returns true if there is only one node on @a the_chain and + * false otherwise. * - * This function returns true if there is only one node on @a the_chain and - * false otherwise. + * @param[in] the_chain is the chain to be operated upon. * - * @param[in] the_chain is the chain to be operated upon. + * @return This function returns true if there is only one node on + * @a the_chain and false otherwise. * - * @return This function returns true if there is only one node on - * @a the_chain and false otherwise. + * @retval true There is only one node on @a the_chain. + * @retval false There is more than one node on @a the_chain. */ RTEMS_INLINE_ROUTINE bool _Chain_Has_only_one_node( const Chain_Control *the_chain @@ -363,16 +388,17 @@ RTEMS_INLINE_ROUTINE bool _Chain_Has_only_one_node( == _Chain_Immutable_last( the_chain ); } -/** @brief Is this Node the Chain Head +/** + * @brief Is this node the chain head. * - * This function returns true if @a the_node is the head of the_chain and - * false otherwise. + * This function returns true if @a the_node is the head of @a the_chain and + * false otherwise. * - * @param[in] the_chain is the chain to be operated upon. - * @param[in] the_node is the node to check for being the Chain Head. + * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_node is the node to check for being the Chain Head. * - * @return This function returns true if @a the_node is the head of - * @a the_chain and false otherwise. + * @retval true @a the_node is the head of @a the_chain. + * @retval false @a the_node is not the head of @a the_chain. */ RTEMS_INLINE_ROUTINE bool _Chain_Is_head( const Chain_Control *the_chain, @@ -382,13 +408,17 @@ RTEMS_INLINE_ROUTINE bool _Chain_Is_head( return (the_node == _Chain_Immutable_head( the_chain )); } -/** @brief Is this Node the Chail Tail +/** + * @brief Is this node the chail tail. * - * This function returns true if the_node is the tail of the_chain and - * false otherwise. + * This function returns true if @a the_node is the tail of @a the_chain and + * false otherwise. * - * @param[in] the_chain is the chain to be operated upon. - * @param[in] the_node is the node to check for being the Chain Tail. + * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_node is the node to check for being the Chain Tail. + * + * @retval true @a the_node is the tail of @a the_chain. + * @retval false @a the_node is not the tail of @a the_chain. */ RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( const Chain_Control *the_chain, @@ -398,11 +428,12 @@ RTEMS_INLINE_ROUTINE bool _Chain_Is_tail( return (the_node == _Chain_Immutable_tail( the_chain )); } -/** @brief Initialize this Chain as Empty +/** + * @brief Initialize this chain as empty. * - * This routine initializes the specified chain to contain zero nodes. + * This routine initializes the specified chain to contain zero nodes. * - * @param[in] the_chain is the chain to be initialized. + * @param[in] the_chain is the chain to be initialized. */ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( Chain_Control *the_chain @@ -416,13 +447,14 @@ RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty( tail->previous = head; } -/** @brief Extract this Node (unprotected) +/** + * @brief Extract this node (unprotected). * - * This routine extracts the_node from the chain on which it resides. - * It does NOT disable interrupts to ensure the atomicity of the - * extract operation. + * This routine extracts the_node from the chain on which it resides. + * It does NOT disable interrupts to ensure the atomicity of the + * extract operation. * - * @param[in] the_node is the node to be extracted. + * @param[in] the_node is the node to be extracted. */ RTEMS_INLINE_ROUTINE void _Chain_Extract_unprotected( Chain_Node *the_node @@ -437,19 +469,20 @@ RTEMS_INLINE_ROUTINE void _Chain_Extract_unprotected( previous->next = next; } -/** @brief Get the First Node (unprotected) +/** + * @brief Get the first node (unprotected). * - * This function removes the first node from the_chain and returns - * a pointer to that node. It does NOT disable interrupts to ensure - * the atomicity of the get operation. + * This function removes the first node from the_chain and returns + * a pointer to that node. It does NOT disable interrupts to ensure + * the atomicity of the get operation. * - * @param[in] the_chain is the chain to attempt to get the first node from. + * @param[in] the_chain is the chain to attempt to get the first node from. * - * @return This method returns the first node on the chain even if it is - * the Chain Tail. + * @return This method returns the first node on the chain even if it is + * the Chain Tail. * - * @note This routine assumes that there is at least one node on the chain - * and always returns a node even if it is the Chain Tail. + * @note This routine assumes that there is at least one node on the chain + * and always returns a node even if it is the Chain Tail. */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected( Chain_Control *the_chain @@ -465,18 +498,19 @@ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected( return old_first; } -/** @brief Get the First Node (unprotected) +/** + * @brief Get the first node (unprotected). * - * This function removes the first node from the_chain and returns - * a pointer to that node. If the_chain is empty, then NULL is returned. + * This function removes the first node from the_chain and returns + * a pointer to that node. If the_chain is empty, then NULL is returned. * - * @param[in] the_chain is the chain to attempt to get the first node from. + * @param[in] the_chain is the chain to attempt to get the first node from. * - * @return This method returns the first node on the chain or NULL if the - * chain is empty. + * @return This method returns the first node on the chain or NULL if the + * chain is empty. * - * @note It does NOT disable interrupts to ensure the atomicity of the - * get operation. + * @note It does NOT disable interrupts to ensure the atomicity of the + * get operation. */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( Chain_Control *the_chain @@ -488,17 +522,18 @@ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected( return NULL; } -/** @brief Insert a Node (unprotected) +/** + * @brief Insert a node (unprotected). * - * This routine inserts the_node on a chain immediately following - * after_node. + * This routine inserts the_node on a chain immediately following + * after_node. * - * @param[in] after_node is the node which will precede @a the_node on the - * chain. - * @param[in] the_node is the node to be inserted. + * @param[in] after_node is the node which will precede @a the_node on the + * chain. + * @param[in] the_node is the node to be inserted. * - * @note It does NOT disable interrupts to ensure the atomicity - * of the extract operation. + * @note It does NOT disable interrupts to ensure the atomicity + * of the extract operation. */ RTEMS_INLINE_ROUTINE void _Chain_Insert_unprotected( Chain_Node *after_node, @@ -514,15 +549,16 @@ RTEMS_INLINE_ROUTINE void _Chain_Insert_unprotected( before_node->previous = the_node; } -/** @brief Append a Node (unprotected) +/** + * @brief Append a node (unprotected). * - * This routine appends the_node onto the end of the_chain. + * This routine appends the_node onto the end of the_chain. * - * @param[in] the_chain is the chain to be operated upon. - * @param[in] the_node is the node to be appended. + * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_node is the node to be appended. * - * @note It does NOT disable interrupts to ensure the atomicity of the - * append operation. + * @note It does NOT disable interrupts to ensure the atomicity of the + * append operation. */ RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( Chain_Control *the_chain, @@ -539,13 +575,13 @@ RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected( } /** - * @brief Append a node on the end of a chain if the node is in the off chain - * state (unprotected). + * @brief Append a node on the end of a chain if the node is in the off chain + * state (unprotected). * - * @note It does NOT disable interrupts to ensure the atomicity of the - * append operation. + * @note It does NOT disable interrupts to ensure the atomicity of the + * append operation. * - * @see _Chain_Append_unprotected() and _Chain_Is_node_off_chain(). + * @see _Chain_Append_unprotected() and _Chain_Is_node_off_chain(). */ RTEMS_INLINE_ROUTINE void _Chain_Append_if_is_off_chain_unprotected( Chain_Control *the_chain, @@ -557,15 +593,16 @@ RTEMS_INLINE_ROUTINE void _Chain_Append_if_is_off_chain_unprotected( } } -/** @brief Prepend a Node (unprotected) +/** + * @brief Prepend a node (unprotected). * - * This routine prepends the_node onto the front of the_chain. + * This routine prepends the_node onto the front of the_chain. * - * @param[in] the_chain is the chain to be operated upon. - * @param[in] the_node is the node to be prepended. + * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_node is the node to be prepended. * - * @note It does NOT disable interrupts to ensure the atomicity of the - * prepend operation. + * @note It does NOT disable interrupts to ensure the atomicity of the + * prepend operation. */ RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected( Chain_Control *the_chain, @@ -575,15 +612,16 @@ RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected( _Chain_Insert_unprotected(_Chain_Head(the_chain), the_node); } -/** @brief Prepend a Node (protected) +/** + * @brief Prepend a node (protected). * - * This routine prepends the_node onto the front of the_chain. + * This routine prepends the_node onto the front of the_chain. * - * @param[in] the_chain is the chain to be operated upon. - * @param[in] the_node is the node to be prepended. + * @param[in] the_chain is the chain to be operated upon. + * @param[in] the_node is the node to be prepended. * - * @note It disables interrupts to ensure the atomicity of the - * prepend operation. + * @note It disables interrupts to ensure the atomicity of the + * prepend operation. */ RTEMS_INLINE_ROUTINE void _Chain_Prepend( Chain_Control *the_chain, @@ -688,7 +726,7 @@ RTEMS_INLINE_ROUTINE bool _Chain_Get_with_empty_check_unprotected( return is_empty_now; } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/corebarrier.inl b/cpukit/score/inline/rtems/score/corebarrier.inl index 1af05151db..72ad670a70 100644 --- a/cpukit/score/inline/rtems/score/corebarrier.inl +++ b/cpukit/score/inline/rtems/score/corebarrier.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/corebarrier.inl +/** + * @file + * + * @brief Inlined Routines Associated with the SuperCore Barrier * - * This include file contains all of the inlined routines associated - * with the SuperCore barrier. + * This include file contains all of the inlined routines associated + * with the SuperCore barrier. */ /* @@ -22,19 +24,20 @@ #define _RTEMS_SCORE_COREBARRIER_INL /** - * @addtogroup ScoreBarrier - * @{ + * @addtogroup ScoreBarrier */ +/**@{**/ #include <rtems/score/thread.h> #include <rtems/score/threadq.h> /** - * This function returns true if the automatic release attribute is - * enabled in the @a attribute_set and false otherwise. + * This function returns true if the automatic release attribute is + * enabled in the @a attribute_set and false otherwise. + * + * @param[in] the_attribute is the attribute set to test * - * @param[in] the_attribute is the attribute set to test - * @return true if the priority attribute is enabled + * @return true if the priority attribute is enabled */ RTEMS_INLINE_ROUTINE bool _CORE_barrier_Is_automatic( CORE_barrier_Attributes *the_attribute @@ -45,11 +48,11 @@ RTEMS_INLINE_ROUTINE bool _CORE_barrier_Is_automatic( } /** - * This routine returns the number of threads currently waiting at the barrier. + * This routine returns the number of threads currently waiting at the barrier. * - * @param[in] the_barrier is the barrier to obtain the number of blocked - * threads for - * @return the current count of this barrier + * @param[in] the_barrier is the barrier to obtain the number of blocked + * threads for + * @return the current count of this barrier */ RTEMS_INLINE_ROUTINE uint32_t _CORE_barrier_Get_number_of_waiting_threads( CORE_barrier_Control *the_barrier @@ -58,7 +61,7 @@ RTEMS_INLINE_ROUTINE uint32_t _CORE_barrier_Get_number_of_waiting_threads( return the_barrier->number_of_waiting_threads; } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/coremsg.inl b/cpukit/score/inline/rtems/score/coremsg.inl index 0191c3cd1e..986fc3f6a4 100644 --- a/cpukit/score/inline/rtems/score/coremsg.inl +++ b/cpukit/score/inline/rtems/score/coremsg.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/coremsg.inl +/** + * @file + * + * @brief Inlined Routines in the Core Message Handler * - * This include file contains the static inline implementation of all - * inlined routines in the Core Message Handler. + * This include file contains the static inline implementation of all + * inlined routines in the Core Message Handler. */ /* @@ -22,14 +24,14 @@ #define _RTEMS_SCORE_COREMSG_INL /** - * @addtogroup ScoreMessageQueue - * @{ + * @addtogroup ScoreMessageQueue */ +/**@{**/ #include <string.h> /* needed for memcpy */ - + /** - * This routine sends a message to the end of the specified message queue. + * This routine sends a message to the end of the specified message queue. */ RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Send( CORE_message_queue_Control *the_message_queue, @@ -52,9 +54,9 @@ RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Send( timeout /* timeout interval */ ); } - + /** - * This routine sends a message to the front of the specified message queue. + * This routine sends a message to the front of the specified message queue. */ RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Urgent( CORE_message_queue_Control *the_message_queue, @@ -79,8 +81,8 @@ RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Urgent( } /** - * This routine copies the contents of the source message buffer - * to the destination message buffer. + * This routine copies the contents of the source message buffer + * to the destination message buffer. */ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Copy_buffer ( const void *source, @@ -92,8 +94,8 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Copy_buffer ( } /** - * This function allocates a message buffer from the inactive - * message buffer chain. + * This function allocates a message buffer from the inactive + * message buffer chain. */ RTEMS_INLINE_ROUTINE CORE_message_queue_Buffer_control * _CORE_message_queue_Allocate_message_buffer ( @@ -105,8 +107,8 @@ _CORE_message_queue_Allocate_message_buffer ( } /** - * This routine frees a message buffer to the inactive - * message buffer chain. + * This routine frees a message buffer to the inactive + * message buffer chain. */ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer ( CORE_message_queue_Control *the_message_queue, @@ -117,10 +119,10 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer ( } /** - * This function returns the priority of @a the_message. + * This function returns the priority of @a the_message. * - * NOTE: It encapsulates the optional behavior that message priority is - * disabled if no API requires it. + * @note It encapsulates the optional behavior that message priority is + * disabled if no API requires it. */ RTEMS_INLINE_ROUTINE int _CORE_message_queue_Get_message_priority ( CORE_message_queue_Buffer_control *the_message @@ -134,14 +136,14 @@ RTEMS_INLINE_ROUTINE int _CORE_message_queue_Get_message_priority ( } /** - * This function sets the priority of @a the_message. + * This function sets the priority of @a the_message. * - * NOTE: It encapsulates the optional behavior that message priority is - * disabled if no API requires it. + * @note It encapsulates the optional behavior that message priority is + * disabled if no API requires it. */ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Set_message_priority ( CORE_message_queue_Buffer_control *the_message, - int priority + int priority ) { #if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY) @@ -150,8 +152,8 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Set_message_priority ( } /** - * This function removes the first message from the_message_queue - * and returns a pointer to it. + * This function removes the first message from the_message_queue + * and returns a pointer to it. */ RTEMS_INLINE_ROUTINE CORE_message_queue_Buffer_control *_CORE_message_queue_Get_pending_message ( @@ -163,8 +165,8 @@ RTEMS_INLINE_ROUTINE } /** - * This function returns true if the priority attribute is - * enabled in the attribute_set and false otherwise. + * This function returns true if the priority attribute is + * enabled in the attribute_set and false otherwise. */ RTEMS_INLINE_ROUTINE bool _CORE_message_queue_Is_priority( CORE_message_queue_Attributes *the_attribute @@ -175,8 +177,8 @@ RTEMS_INLINE_ROUTINE bool _CORE_message_queue_Is_priority( } /** - * This routine places the_message at the rear of the outstanding - * messages on the_message_queue. + * This routine places the_message at the rear of the outstanding + * messages on the_message_queue. */ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Append_unprotected ( CORE_message_queue_Control *the_message_queue, @@ -190,8 +192,8 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Append_unprotected ( } /** - * This routine places the_message at the front of the outstanding - * messages on the_message_queue. + * This routine places the_message at the front of the outstanding + * messages on the_message_queue. */ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Prepend_unprotected ( CORE_message_queue_Control *the_message_queue, @@ -205,7 +207,7 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Prepend_unprotected ( } /** - * This function returns true if the_message_queue is true and false otherwise. + * This function returns true if the_message_queue is true and false otherwise. */ RTEMS_INLINE_ROUTINE bool _CORE_message_queue_Is_null ( CORE_message_queue_Control *the_message_queue @@ -216,8 +218,8 @@ RTEMS_INLINE_ROUTINE bool _CORE_message_queue_Is_null ( #if defined(RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION) /** - * This function returns true if notification is enabled on this message - * queue and false otherwise. + * This function returns true if notification is enabled on this message + * queue and false otherwise. */ RTEMS_INLINE_ROUTINE bool _CORE_message_queue_Is_notify_enabled ( CORE_message_queue_Control *the_message_queue @@ -228,8 +230,8 @@ RTEMS_INLINE_ROUTINE bool _CORE_message_queue_Is_null ( #endif /** - * This routine initializes the notification information for - * @a the_message_queue. + * This routine initializes the notification information for + * @a the_message_queue. */ #if defined(RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION) RTEMS_INLINE_ROUTINE void _CORE_message_queue_Set_notify ( @@ -247,7 +249,7 @@ RTEMS_INLINE_ROUTINE bool _CORE_message_queue_Is_null ( the_message_queue, the_handler, the_argument ) #endif -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/coremutex.inl b/cpukit/score/inline/rtems/score/coremutex.inl index 90b939345b..f41a4de0b8 100644 --- a/cpukit/score/inline/rtems/score/coremutex.inl +++ b/cpukit/score/inline/rtems/score/coremutex.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/coremutex.inl +/** + * @file + * + * @brief Inlined Routines Associated with the CORE Mutexes * - * This include file contains all of the inlined routines associated - * with the CORE mutexes. + * This include file contains all of the inlined routines associated + * with the CORE mutexes. */ /* @@ -22,19 +24,20 @@ #define _RTEMS_SCORE_COREMUTEX_INL /** - * @addtogroup ScoreMutex - * @{ + * @addtogroup ScoreMutex */ +/**@{**/ /** - * @brief Is Mutex Locked + * @brief Is mutex locked. * - * This routine returns true if the mutex specified is locked and false - * otherwise. + * This routine returns true if the mutex specified is locked and false + * otherwise. * - * @param[in] the_mutex is the mutex to check + * @param[in] the_mutex is the mutex to check. * - * @return This method returns true if the mutex is locked. + * @retval true The mutex is locked. + * @retval false The mutex is not locked. */ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_locked( CORE_mutex_Control *the_mutex @@ -42,16 +45,17 @@ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_locked( { return the_mutex->lock == CORE_MUTEX_LOCKED; } - + /** - * @brief Does Core Mutex Use FIFO Blocking + * @brief Does core mutex use FIFO blocking. * - * This routine returns true if the mutex's wait discipline is FIFO and false - * otherwise. + * This routine returns true if the mutex's wait discipline is FIFO and false + * otherwise. * - * @param[in] the_attribute is the attribute set of the mutex + * @param[in] the_attribute is the attribute set of the mutex. * - * @return This method returns true if the mutex is using FIFO blocking order. + * @retval true The mutex is using FIFO blocking order. + * @retval false The mutex is not using FIFO blocking order. */ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_fifo( CORE_mutex_Attributes *the_attribute @@ -59,17 +63,18 @@ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_fifo( { return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_FIFO; } - + /** - * @brief Doex Core Mutex Use Priority Blocking + * @brief Doex core mutex use priority blocking. + * + * This routine returns true if the mutex's wait discipline is PRIORITY and + * false otherwise. * - * This routine returns true if the mutex's wait discipline is PRIORITY and - * false otherwise. + * @param[in] the_attribute is the attribute set of the mutex. * - * @param[in] the_attribute is the attribute set of the mutex + * @retval true The mutex is using priority blocking order. + * @retval false The mutex is not using priority blocking order. * - * @return This method returns true if the mutex is using - * priority blocking order. */ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_priority( CORE_mutex_Attributes *the_attribute @@ -77,17 +82,17 @@ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_priority( { return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY; } - + /** - * @brief Does Mutex Use Priority Inheritance + * @brief Does mutex use priority inheritance. * - * This routine returns true if the mutex's wait discipline is - * INHERIT_PRIORITY and false otherwise. + * This routine returns true if the mutex's wait discipline is + * INHERIT_PRIORITY and false otherwise. * - * @param[in] the_attribute is the attribute set of the mutex + * @param[in] the_attribute is the attribute set of the mutex. * - * @return This method returns true if the mutex is using priority - * inheritance. + * @retval true The mutex is using priority inheritance. + * @retval false The mutex is not using priority inheritance. */ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_inherit_priority( CORE_mutex_Attributes *the_attribute @@ -95,16 +100,17 @@ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_inherit_priority( { return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; } - + /** - * @brief Does Mutex Use Priority Ceiling + * @brief Does mutex use priority ceiling. * - * This routine returns true if the mutex's wait discipline is - * PRIORITY_CEILING and false otherwise. + * This routine returns true if the mutex's wait discipline is + * PRIORITY_CEILING and false otherwise. * - * @param[in] the_attribute is the attribute set of the mutex - * @return This method returns true if the mutex is using priority - * ceiling. + * @param[in] the_attribute is the attribute set of the mutex. + * + * @retval true The mutex is using priority ceiling. + * @retval false The mutex is not using priority ceiling. */ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_priority_ceiling( CORE_mutex_Attributes *the_attribute @@ -112,7 +118,7 @@ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_priority_ceiling( { return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; } - + /* * Seize Mutex with Quick Success Path * @@ -221,7 +227,7 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body( return 1; } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/corerwlock.inl b/cpukit/score/inline/rtems/score/corerwlock.inl index 8736c0f331..d1be4b2589 100644 --- a/cpukit/score/inline/rtems/score/corerwlock.inl +++ b/cpukit/score/inline/rtems/score/corerwlock.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/corerwlock.inl +/** + * @file + * + * @brief Inlined Routines Associated with the SuperCore RWLock * - * This include file contains all of the inlined routines associated - * with the SuperCore RWLock. + * This include file contains all of the inlined routines associated + * with the SuperCore RWLock. */ /* @@ -22,18 +24,17 @@ #define _RTEMS_SCORE_CORERWLOCK_INL /** - * @addtogroup ScoreRWLock - * @{ + * @addtogroup ScoreRWLock */ +/**@{**/ #include <rtems/score/thread.h> #include <rtems/score/threadq.h> /** + * This method is used to initialize core rwlock attributes. * - * This method is used to initialize core rwlock attributes. - * - * @param[in] the_attributes pointer to the attributes to initialize. + * @param[in] the_attributes pointer to the attributes to initialize. */ RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes( CORE_RWLock_Attributes *the_attributes @@ -43,7 +44,7 @@ RTEMS_INLINE_ROUTINE void _CORE_RWLock_Initialize_attributes( } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/coresem.inl b/cpukit/score/inline/rtems/score/coresem.inl index f504798f31..69a7b2627d 100644 --- a/cpukit/score/inline/rtems/score/coresem.inl +++ b/cpukit/score/inline/rtems/score/coresem.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/coresem.inl +/** + * @file + * + * @brief Inlined Routines Associated with the SuperCore Semaphore * - * This include file contains all of the inlined routines associated - * with the SuperCore semaphore. + * This include file contains all of the inlined routines associated + * with the SuperCore semaphore. */ /* @@ -22,19 +24,20 @@ #define _RTEMS_SCORE_CORESEM_INL /** - * @addtogroup ScoreSemaphore - * @{ + * @addtogroup ScoreSemaphore */ +/**@{**/ #include <rtems/score/thread.h> #include <rtems/score/threadq.h> /** - * This function returns true if the priority attribute is - * enabled in the @a attribute_set and false otherwise. + * This function returns true if the priority attribute is + * enabled in the @a attribute_set and false otherwise. * - * @param[in] the_attribute is the attribute set to test - * @return true if the priority attribute is enabled + * @param[in] the_attribute is the attribute set to test + * + * @return true if the priority attribute is enabled */ RTEMS_INLINE_ROUTINE bool _CORE_semaphore_Is_priority( CORE_semaphore_Attributes *the_attribute @@ -44,10 +47,11 @@ RTEMS_INLINE_ROUTINE bool _CORE_semaphore_Is_priority( } /** - * This routine returns the current count associated with the semaphore. + * This routine returns the current count associated with the semaphore. + * + * @param[in] the_semaphore is the semaphore to obtain the count of * - * @param[in] the_semaphore is the semaphore to obtain the count of - * @return the current count of this semaphore + * @return the current count of this semaphore */ RTEMS_INLINE_ROUTINE uint32_t _CORE_semaphore_Get_count( CORE_semaphore_Control *the_semaphore @@ -57,19 +61,19 @@ RTEMS_INLINE_ROUTINE uint32_t _CORE_semaphore_Get_count( } /** - * This routine attempts to receive a unit from the_semaphore. - * If a unit is available or if the wait flag is false, then the routine - * returns. Otherwise, the calling task is blocked until a unit becomes - * available. + * This routine attempts to receive a unit from the_semaphore. + * If a unit is available or if the wait flag is false, then the routine + * returns. Otherwise, the calling task is blocked until a unit becomes + * available. * - * @param[in] the_semaphore is the semaphore to obtain - * @param[in] id is the Id of the owning API level Semaphore object - * @param[in] wait is true if the thread is willing to wait - * @param[in] timeout is the maximum number of ticks to block - * @param[in] level_p is a temporary variable used to contain the ISR - * disable level cookie + * @param[in] the_semaphore is the semaphore to obtain + * @param[in] id is the Id of the owning API level Semaphore object + * @param[in] wait is true if the thread is willing to wait + * @param[in] timeout is the maximum number of ticks to block + * @param[in] level_p is a temporary variable used to contain the ISR + * disable level cookie * - * @note There is currently no MACRO version of this routine. + * @note There is currently no MACRO version of this routine. */ RTEMS_INLINE_ROUTINE void _CORE_semaphore_Seize_isr_disable( CORE_semaphore_Control *the_semaphore, @@ -77,12 +81,12 @@ RTEMS_INLINE_ROUTINE void _CORE_semaphore_Seize_isr_disable( bool wait, Watchdog_Interval timeout, ISR_Level *level_p -) -{ +) +{ Thread_Control *executing; /* disabled when you get here */ - + executing = _Thread_Executing; executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL; if ( the_semaphore->count != 0 ) { @@ -107,7 +111,7 @@ RTEMS_INLINE_ROUTINE void _CORE_semaphore_Seize_isr_disable( _Thread_Enable_dispatch(); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/corespinlock.inl b/cpukit/score/inline/rtems/score/corespinlock.inl index f45f320d85..76f5c4446a 100644 --- a/cpukit/score/inline/rtems/score/corespinlock.inl +++ b/cpukit/score/inline/rtems/score/corespinlock.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/corespinlock.inl +/** + * @file + * + * @brief Inlined Routines Associated with the SuperCore Spinlock * - * This include file contains all of the inlined routines associated - * with the SuperCore spinlock. + * This include file contains all of the inlined routines associated + * with the SuperCore spinlock. */ /* @@ -22,15 +24,14 @@ #define _RTEMS_SCORE_CORESPINLOCK_INL /** - * @addtogroup ScoreSpinlock - * @{ + * @addtogroup ScoreSpinlock */ +/**@{**/ /** + * This method is used to initialize core spinlock attributes. * - * This method is used to initialize core spinlock attributes. - * - * @param[in] the_attributes pointer to the attributes to initialize. + * @param[in] the_attributes pointer to the attributes to initialize. */ RTEMS_INLINE_ROUTINE void _CORE_spinlock_Initialize_attributes( CORE_spinlock_Attributes *the_attributes @@ -40,13 +41,12 @@ RTEMS_INLINE_ROUTINE void _CORE_spinlock_Initialize_attributes( } /** + * This method is used to determine if the spinlock is available or not. * - * This method is used to determine if the spinlock is available or not. - * - * @param[in] the_spinlock will be checked + * @param[in] the_spinlock will be checked * - * @return This method will return true if the spinlock is busy - * and false otherwise. + * @return This method will return true if the spinlock is busy + * and false otherwise. */ RTEMS_INLINE_ROUTINE bool _CORE_spinlock_Is_busy( CORE_spinlock_Control *the_spinlock @@ -55,7 +55,7 @@ RTEMS_INLINE_ROUTINE bool _CORE_spinlock_Is_busy( return (the_spinlock->users != 0); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/heap.inl b/cpukit/score/inline/rtems/score/heap.inl index 59bdd7b142..4a346bdf21 100644 --- a/cpukit/score/inline/rtems/score/heap.inl +++ b/cpukit/score/inline/rtems/score/heap.inl @@ -1,9 +1,7 @@ /** * @file * - * @ingroup ScoreHeap - * - * @brief Heap Handler API. + * @brief Heap Handler API */ /* @@ -26,9 +24,8 @@ /** * @addtogroup ScoreHeap - * - * @{ */ +/**@{**/ RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_head( Heap_Control *heap ) { @@ -201,7 +198,8 @@ RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap( * * The next block of the last block will be the first block. Since the first * block indicates that the previous block is used, this ensures that the last - * block appears as used for the _Heap_Is_used() and _Heap_Is_free() functions. + * block appears as used for the _Heap_Is_used() and _Heap_Is_free() + * functions. * * This feature will be used to terminate the scattered heap area list. See * also _Heap_Extend(). diff --git a/cpukit/score/inline/rtems/score/isr.inl b/cpukit/score/inline/rtems/score/isr.inl index accc03c2c7..c46c585f55 100644 --- a/cpukit/score/inline/rtems/score/isr.inl +++ b/cpukit/score/inline/rtems/score/isr.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/isr.inl +/** + * @file + * + * @brief Inlined Routines in the Interrupt Handler * - * This include file contains the static implementation of all - * inlined routines in the Interrupt Handler. + * This include file contains the static implementation of all + * inlined routines in the Interrupt Handler. */ /* @@ -22,14 +24,14 @@ #define _RTEMS_SCORE_ISR_INL /** - * @addtogroup ScoreISR - * @{ + * @addtogroup ScoreISR */ +/**@{**/ #if (CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE) /** - * This function returns true if the vector is a valid vector number - * for this processor and false otherwise. + * This function returns true if the vector is a valid vector number + * for this processor and false otherwise. */ RTEMS_INLINE_ROUTINE bool _ISR_Is_vector_number_valid ( @@ -40,8 +42,8 @@ RTEMS_INLINE_ROUTINE bool _ISR_Is_vector_number_valid ( } /** - * This function returns true if handler is the entry point of a valid - * use interrupt service routine and false otherwise. + * This function returns true if handler is the entry point of a valid + * use interrupt service routine and false otherwise. */ RTEMS_INLINE_ROUTINE bool _ISR_Is_valid_user_handler ( @@ -52,7 +54,7 @@ RTEMS_INLINE_ROUTINE bool _ISR_Is_valid_user_handler ( } #endif -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/mppkt.inl b/cpukit/score/inline/rtems/score/mppkt.inl index c83242464e..0f9c6b2fcd 100644 --- a/cpukit/score/inline/rtems/score/mppkt.inl +++ b/cpukit/score/inline/rtems/score/mppkt.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/mppkt.inl +/** + * @file + * + * @brief Inlined Routines from the Packet Handler * - * This package is the implementation of the Packet Handler - * routines which are inlined. + * This package is the implementation of the Packet Handler + * routines which are inlined. */ /* @@ -22,16 +24,16 @@ #define _RTEMS_SCORE_MPPKT_INL /** - * @addtogroup ScoreMPPacket - * @{ + * @addtogroup ScoreMPPacket */ +/**@{**/ /** - * This function returns true if the the_packet_class is valid, - * and false otherwise. + * This function returns true if the the_packet_class is valid, + * and false otherwise. * - * @note Check for lower bounds (MP_PACKET_CLASSES_FIRST ) is unnecessary - * because this enum starts at lower bound of zero. + * @note Check for lower bounds (MP_PACKET_CLASSES_FIRST ) is unnecessary + * because this enum starts at lower bound of zero. */ RTEMS_INLINE_ROUTINE bool _Mp_packet_Is_valid_packet_class ( @@ -42,8 +44,8 @@ RTEMS_INLINE_ROUTINE bool _Mp_packet_Is_valid_packet_class ( } /** - * This function returns true if the the_packet_class is null, - * and false otherwise. + * This function returns true if the the_packet_class is null, + * and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Mp_packet_Is_null ( @@ -53,7 +55,7 @@ RTEMS_INLINE_ROUTINE bool _Mp_packet_Is_null ( return the_packet == NULL; } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/object.inl b/cpukit/score/inline/rtems/score/object.inl index 1f3adcb274..726d676cd9 100644 --- a/cpukit/score/inline/rtems/score/object.inl +++ b/cpukit/score/inline/rtems/score/object.inl @@ -1,5 +1,7 @@ /** - * @file rtems/score/object.inl + * @file + * + * @brief Inlined Routines in the Object Handler * * This include file contains the static inline implementation of all * of the inlined routines in the Object Handler. @@ -22,16 +24,16 @@ #define _RTEMS_SCORE_OBJECT_INL /** - * This function builds an object's id from the processor node and index - * values specified. + * This function builds an object's id from the processor node and index + * values specified. * - * @param[in] the_api indicates the API associated with this Id. - * @param[in] the_class indicates the class of object. - * It is specific to @a the_api. - * @param[in] node is the node where this object resides. - * @param[in] index is the instance number of this object. + * @param[in] the_api indicates the API associated with this Id. + * @param[in] the_class indicates the class of object. + * It is specific to @a the_api. + * @param[in] node is the node where this object resides. + * @param[in] index is the instance number of this object. * - * @return This method returns an object Id constructed from the arguments. + * @return This method returns an object Id constructed from the arguments. */ RTEMS_INLINE_ROUTINE Objects_Id _Objects_Build_id( Objects_APIs the_api, @@ -49,11 +51,11 @@ RTEMS_INLINE_ROUTINE Objects_Id _Objects_Build_id( } /** - * This function returns the API portion of the ID. + * This function returns the API portion of the ID. * - * @param[in] id is the object Id to be processed. + * @param[in] id is the object Id to be processed. * - * @return This method returns an object Id constructed from the arguments. + * @return This method returns an object Id constructed from the arguments. */ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( Objects_Id id @@ -63,24 +65,24 @@ RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API( } /** - * This function returns the class portion of the ID. + * This function returns the class portion of the ID. * - * @param[in] id is the object Id to be processed + * @param[in] id is the object Id to be processed */ RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class( Objects_Id id ) { - return (uint32_t) + return (uint32_t) ((id >> OBJECTS_CLASS_START_BIT) & OBJECTS_CLASS_VALID_BITS); } - + /** - * This function returns the node portion of the ID. + * This function returns the node portion of the ID. * - * @param[in] id is the object Id to be processed + * @param[in] id is the object Id to be processed * - * @return This method returns the node portion of an object ID. + * @return This method returns the node portion of an object ID. */ RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_node( Objects_Id id @@ -98,11 +100,11 @@ RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_node( } /** - * This function returns the index portion of the ID. + * This function returns the index portion of the ID. * - * @param[in] id is the Id to be processed + * @param[in] id is the Id to be processed * - * @return This method returns the class portion of the specified object ID. + * @return This method returns the class portion of the specified object ID. */ RTEMS_INLINE_ROUTINE Objects_Maximum _Objects_Get_index( Objects_Id id @@ -114,12 +116,12 @@ RTEMS_INLINE_ROUTINE Objects_Maximum _Objects_Get_index( } /** - * This function returns true if the api is valid. + * This function returns true if the api is valid. * - * @param[in] the_api is the api portion of an object ID. + * @param[in] the_api is the api portion of an object ID. * - * @return This method returns true if the specified api value is valid - * and false otherwise. + * @return This method returns true if the specified api value is valid + * and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( uint32_t the_api @@ -129,16 +131,16 @@ RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid( return false; return true; } - + /** - * This function returns true if the node is of the local object, and - * false otherwise. + * This function returns true if the node is of the local object, and + * false otherwise. * - * @param[in] node is the node number and corresponds to the node number - * portion of an object ID. + * @param[in] node is the node number and corresponds to the node number + * portion of an object ID. * - * @return This method returns true if the specified node is the local node - * and false otherwise. + * @return This method returns true if the specified node is the local node + * and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Objects_Is_local_node( uint32_t node @@ -148,15 +150,15 @@ RTEMS_INLINE_ROUTINE bool _Objects_Is_local_node( } /** - * This function returns true if the id is of a local object, and - * false otherwise. + * This function returns true if the id is of a local object, and + * false otherwise. * - * @param[in] id is an object ID + * @param[in] id is an object ID * - * @return This method returns true if the specified object Id is local - * and false otherwise. + * @return This method returns true if the specified object Id is local + * and false otherwise. * - * @note On a single processor configuration, this always returns true. + * @note On a single processor configuration, this always returns true. */ RTEMS_INLINE_ROUTINE bool _Objects_Is_local_id( #if defined(RTEMS_MULTIPROCESSING) @@ -174,14 +176,14 @@ RTEMS_INLINE_ROUTINE bool _Objects_Is_local_id( } /** - * This function returns true if left and right are equal, - * and false otherwise. + * This function returns true if left and right are equal, + * and false otherwise. * - * @param[in] left is the Id on the left hand side of the comparison - * @param[in] right is the Id on the right hand side of the comparison + * @param[in] left is the Id on the left hand side of the comparison + * @param[in] right is the Id on the right hand side of the comparison * - * @return This method returns true if the specified object IDs are equal - * and false otherwise. + * @return This method returns true if the specified object IDs are equal + * and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Objects_Are_ids_equal( Objects_Id left, @@ -192,14 +194,14 @@ RTEMS_INLINE_ROUTINE bool _Objects_Are_ids_equal( } /** - * This function returns a pointer to the local_table object - * referenced by the index. + * This function returns a pointer to the local_table object + * referenced by the index. * - * @param[in] information points to an Object Information Table - * @param[in] index is the index of the object the caller wants to access + * @param[in] information points to an Object Information Table + * @param[in] index is the index of the object the caller wants to access * - * @return This method returns a pointer to a local object or NULL if the - * index is invalid and RTEMS_DEBUG is enabled. + * @return This method returns a pointer to a local object or NULL if the + * index is invalid and RTEMS_DEBUG is enabled. */ RTEMS_INLINE_ROUTINE Objects_Control *_Objects_Get_local_object( Objects_Information *information, @@ -207,10 +209,10 @@ RTEMS_INLINE_ROUTINE Objects_Control *_Objects_Get_local_object( ) { /* - * This routine is ONLY to be called from places in the code - * where the Id is known to be good. Therefore, this should NOT - * occur in normal situations. - */ + * This routine is ONLY to be called from places in the code + * where the Id is known to be good. Therefore, this should NOT + * occur in normal situations. + */ #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return NULL; @@ -219,17 +221,17 @@ RTEMS_INLINE_ROUTINE Objects_Control *_Objects_Get_local_object( } /** - * This function sets the pointer to the local_table object - * referenced by the index. + * This function sets the pointer to the local_table object + * referenced by the index. * - * @param[in] information points to an Object Information Table - * @param[in] index is the index of the object the caller wants to access - * @param[in] the_object is the local object pointer + * @param[in] information points to an Object Information Table + * @param[in] index is the index of the object the caller wants to access + * @param[in] the_object is the local object pointer * - * @note This routine is ONLY to be called in places where the - * index portion of the Id is known to be good. This is - * OK since it is normally called from object create/init - * or delete/destroy operations. + * @note This routine is ONLY to be called in places where the + * index portion of the Id is known to be good. This is + * OK since it is normally called from object create/init + * or delete/destroy operations. */ RTEMS_INLINE_ROUTINE void _Objects_Set_local_object( @@ -242,7 +244,7 @@ RTEMS_INLINE_ROUTINE void _Objects_Set_local_object( * This routine is ONLY to be called from places in the code * where the Id is known to be good. Therefore, this should NOT * occur in normal situations. - */ + */ #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; @@ -252,17 +254,17 @@ RTEMS_INLINE_ROUTINE void _Objects_Set_local_object( } /** - * This function sets the pointer to the local_table object - * referenced by the index to a NULL so the object Id is invalid - * after this call. + * This function sets the pointer to the local_table object + * referenced by the index to a NULL so the object Id is invalid + * after this call. * - * @param[in] information points to an Object Information Table - * @param[in] the_object is the local object pointer + * @param[in] information points to an Object Information Table + * @param[in] the_object is the local object pointer * - * @note This routine is ONLY to be called in places where the - * index portion of the Id is known to be good. This is - * OK since it is normally called from object create/init - * or delete/destroy operations. + * @note This routine is ONLY to be called in places where the + * index portion of the Id is known to be good. This is + * OK since it is normally called from object create/init + * or delete/destroy operations. */ RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( @@ -278,12 +280,12 @@ RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id( } /** - * This function places the_object control pointer and object name - * in the Local Pointer and Local Name Tables, respectively. + * This function places the_object control pointer and object name + * in the Local Pointer and Local Name Tables, respectively. * - * @param[in] information points to an Object Information Table - * @param[in] the_object is a pointer to an object - * @param[in] name is the name of the object to make accessible + * @param[in] information points to an Object Information Table + * @param[in] the_object is a pointer to an object + * @param[in] name is the name of the object to make accessible */ RTEMS_INLINE_ROUTINE void _Objects_Open( Objects_Information *information, @@ -301,12 +303,12 @@ RTEMS_INLINE_ROUTINE void _Objects_Open( } /** - * This function places the_object control pointer and object name - * in the Local Pointer and Local Name Tables, respectively. + * This function places the_object control pointer and object name + * in the Local Pointer and Local Name Tables, respectively. * - * @param[in] information points to an Object Information Table - * @param[in] the_object is a pointer to an object - * @param[in] name is the name of the object to make accessible + * @param[in] information points to an Object Information Table + * @param[in] the_object is a pointer to an object + * @param[in] name is the name of the object to make accessible */ RTEMS_INLINE_ROUTINE void _Objects_Open_u32( Objects_Information *information, @@ -320,17 +322,17 @@ RTEMS_INLINE_ROUTINE void _Objects_Open_u32( the_object ); - /* ASSERT: information->is_string == false */ + /* ASSERT: information->is_string == false */ the_object->name.name_u32 = name; } /** - * This function places the_object control pointer and object name - * in the Local Pointer and Local Name Tables, respectively. + * This function places the_object control pointer and object name + * in the Local Pointer and Local Name Tables, respectively. * - * @param[in] information points to an Object Information Table - * @param[in] the_object is a pointer to an object - * @param[in] name is the name of the object to make accessible + * @param[in] information points to an Object Information Table + * @param[in] the_object is a pointer to an object + * @param[in] name is the name of the object to make accessible */ RTEMS_INLINE_ROUTINE void _Objects_Open_string( Objects_Information *information, @@ -345,18 +347,18 @@ RTEMS_INLINE_ROUTINE void _Objects_Open_string( ); #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES) - /* ASSERT: information->is_string */ + /* ASSERT: information->is_string */ the_object->name.name_p = name; #endif } /** - * Returns if the object maximum specifies unlimited objects. + * Returns if the object maximum specifies unlimited objects. * - * @param[in] maximum The object maximum specification. + * @param[in] maximum The object maximum specification. * - * @retval true Unlimited objects are available. - * @retval false The object count is fixed. + * @retval true Unlimited objects are available. + * @retval false The object count is fixed. */ RTEMS_INLINE_ROUTINE bool _Objects_Is_unlimited( uint32_t maximum ) { diff --git a/cpukit/score/inline/rtems/score/objectmp.inl b/cpukit/score/inline/rtems/score/objectmp.inl index 502c946014..e6734cf352 100644 --- a/cpukit/score/inline/rtems/score/objectmp.inl +++ b/cpukit/score/inline/rtems/score/objectmp.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/objectmp.inl +/** + * @file + * + * @brief Inlined Routines Associated with Global Objects * - * This include file contains the bodies of all inlined routines - * which deal with global objects. + * This include file contains the bodies of all inlined routines + * which deal with global objects. */ /* @@ -22,12 +24,12 @@ #define _RTEMS_SCORE_OBJECTMP_INL /** - * @addtogroup ScoreObjectMP - * @{ + * @addtogroup ScoreObjectMP */ +/**@{**/ /** - * This function allocates a Global Object control block. + * This function allocates a Global Object control block. */ RTEMS_INLINE_ROUTINE Objects_MP_Control *_Objects_MP_Allocate_global_object ( @@ -39,7 +41,7 @@ RTEMS_INLINE_ROUTINE Objects_MP_Control *_Objects_MP_Allocate_global_object ( } /** - * This routine deallocates a Global Object control block. + * This routine deallocates a Global Object control block. */ RTEMS_INLINE_ROUTINE void _Objects_MP_Free_global_object ( @@ -53,7 +55,7 @@ RTEMS_INLINE_ROUTINE void _Objects_MP_Free_global_object ( } /** - * This function returns whether the global object is NULL or not. + * This function returns whether the global object is NULL or not. */ RTEMS_INLINE_ROUTINE bool _Objects_MP_Is_null_global_object ( @@ -63,7 +65,7 @@ RTEMS_INLINE_ROUTINE bool _Objects_MP_Is_null_global_object ( return( the_object == NULL ); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/priority.inl b/cpukit/score/inline/rtems/score/priority.inl index c0ac766a2f..5c7c6b3402 100644 --- a/cpukit/score/inline/rtems/score/priority.inl +++ b/cpukit/score/inline/rtems/score/priority.inl @@ -1,5 +1,7 @@ -/** - * @file rtems/score/priority.inl +/** + * @file + * + * @brief Inlined Routines in the Priority Handler * * This file contains the static inline implementation of all inlined * routines in the Priority Handler. @@ -22,20 +24,20 @@ #define _RTEMS_SCORE_PRIORITY_INL /** - * @addtogroup ScorePriority - * @{ + * @addtogroup ScorePriority */ +/**@{**/ /** - * This function returns true if the_priority if valid for a - * user task, and false otherwise. + * This function returns true if the_priority if valid for a + * user task, and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Priority_Is_valid ( Priority_Control the_priority ) { - /* + /* * Since PRIORITY_MINIMUM is 0 and priorities are stored unsigned, * then checking for less than 0 is unnecessary. */ @@ -45,7 +47,7 @@ RTEMS_INLINE_ROUTINE bool _Priority_Is_valid ( -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/prioritybitmap.inl b/cpukit/score/inline/rtems/score/prioritybitmap.inl index 76bb1a1c83..70844fa0e3 100644 --- a/cpukit/score/inline/rtems/score/prioritybitmap.inl +++ b/cpukit/score/inline/rtems/score/prioritybitmap.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/prioritybitmap.inl +/** + * @file + * + * @brief Inlined Routines in the Priority Handler Bit Map Implementation * - * This file contains the static inline implementation of all inlined - * routines in the Priority Handler bit map implementation + * This file contains the static inline implementation of all inlined + * routines in the Priority Handler bit map implementation */ /* @@ -22,14 +24,14 @@ #define _RTEMS_SCORE_PRIORITYBITMAP_INL /** - * @addtogroup ScorePriority - * @{ + * @addtogroup ScorePriority */ +/**@{**/ #include <rtems/score/bitfield.h> /** - * This function returns the major portion of the_priority. + * This function returns the major portion of the_priority. */ RTEMS_INLINE_ROUTINE Priority_bit_map_Control _Priority_Major ( @@ -40,7 +42,7 @@ RTEMS_INLINE_ROUTINE Priority_bit_map_Control _Priority_Major ( } /** - * This function returns the minor portion of the_priority. + * This function returns the minor portion of the_priority. */ RTEMS_INLINE_ROUTINE Priority_bit_map_Control _Priority_Minor ( @@ -51,23 +53,23 @@ RTEMS_INLINE_ROUTINE Priority_bit_map_Control _Priority_Minor ( } #if ( CPU_USE_GENERIC_BITFIELD_CODE == TRUE ) - + /** - * This function returns the mask associated with the major or minor - * number passed to it. + * This function returns the mask associated with the major or minor + * number passed to it. */ - + RTEMS_INLINE_ROUTINE Priority_bit_map_Control _Priority_Mask ( uint32_t bit_number ) { return (Priority_bit_map_Control)(0x8000u >> bit_number); } - + /** - * This function returns the mask bit inverted. + * This function returns the mask bit inverted. */ - + RTEMS_INLINE_ROUTINE Priority_bit_map_Control _Priority_Mask_invert ( uint32_t mask ) @@ -75,13 +77,13 @@ RTEMS_INLINE_ROUTINE Priority_bit_map_Control _Priority_Mask_invert ( return (Priority_bit_map_Control)(~mask); } - + /** - * This function translates the bit numbers returned by the bit scan - * of a priority bit field into something suitable for use as - * a major or minor component of a priority. + * This function translates the bit numbers returned by the bit scan + * of a priority bit field into something suitable for use as + * a major or minor component of a priority. */ - + RTEMS_INLINE_ROUTINE uint32_t _Priority_Bits_index ( uint32_t bit_number ) @@ -96,7 +98,7 @@ RTEMS_INLINE_ROUTINE uint32_t _Priority_Bits_index ( */ /** - * This routine performs the initialization necessary for this handler. + * This routine performs the initialization necessary for this handler. */ RTEMS_INLINE_ROUTINE void _Priority_bit_map_Handler_initialization( void ) @@ -109,8 +111,8 @@ RTEMS_INLINE_ROUTINE void _Priority_bit_map_Handler_initialization( void ) } /** - * This routine uses the_priority_map to update the priority - * bit maps to indicate that a thread has been readied. + * This routine uses the_priority_map to update the priority + * bit maps to indicate that a thread has been readied. */ RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add ( @@ -122,9 +124,9 @@ RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add ( } /** - * This routine uses the_priority_map to update the priority - * bit maps to indicate that a thread has been removed from the - * ready state. + * This routine uses the_priority_map to update the priority + * bit maps to indicate that a thread has been removed from the + * ready state. */ RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove ( @@ -137,8 +139,8 @@ RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove ( } /** - * This function returns the priority of the highest priority - * ready thread. + * This function returns the priority of the highest priority + * ready thread. */ RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void ) @@ -154,9 +156,9 @@ RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void ) } /** - * This routine initializes the_priority_map so that it - * contains the information necessary to manage a thread - * at new_priority. + * This routine initializes the_priority_map so that it + * contains the information necessary to manage a thread + * at new_priority. */ RTEMS_INLINE_ROUTINE void _Priority_bit_map_Initialize_information( @@ -185,7 +187,7 @@ RTEMS_INLINE_ROUTINE void _Priority_bit_map_Initialize_information( the_priority_map->block_minor = (Priority_bit_map_Control)(~((uint32_t)mask)); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/rbtree.inl b/cpukit/score/inline/rtems/score/rbtree.inl index 439b40a0ba..8b4234de57 100644 --- a/cpukit/score/inline/rtems/score/rbtree.inl +++ b/cpukit/score/inline/rtems/score/rbtree.inl @@ -1,12 +1,14 @@ /** - * @file rtems/score/rbtree.inl + * @file * - * This include file contains the bodies of the routines which are - * associated with Red-Black Trees and inlined. + * @brief Inlined Routines Associated with Red-Black Trees * - * @note The routines in this file are ordered from simple - * to complex. No other RBTree Handler routine is referenced - * unless it has already been defined. + * This include file contains the bodies of the routines which are + * associated with Red-Black Trees and inlined. + * + * @note The routines in this file are ordered from simple + * to complex. No other RBTree Handler routine is referenced + * unless it has already been defined. */ /* @@ -25,12 +27,12 @@ #define _RTEMS_SCORE_RBTREE_INL /** - * @addtogroup ScoreRBTree - * @{ + * @addtogroup ScoreRBTree */ +/**@{**/ /** - * @brief Get the direction opposite to @a the_dir + * @brief Get the direction opposite to @a the_dir. */ RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction( RBTree_Direction the_dir @@ -39,10 +41,11 @@ RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction( return (RBTree_Direction) !((int) the_dir); } -/** @brief Set off rbtree +/** + * @brief Set off RBtree. * - * This function sets the parent and child fields of the @a node to NULL - * indicating the @a node is not part of a rbtree. + * This function sets the parent and child fields of the @a node to NULL + * indicating the @a node is not part of a rbtree. * */ RTEMS_INLINE_ROUTINE void _RBTree_Set_off_rbtree( @@ -52,22 +55,29 @@ RTEMS_INLINE_ROUTINE void _RBTree_Set_off_rbtree( node->parent = node->child[RBT_LEFT] = node->child[RBT_RIGHT] = NULL; } -/** @brief Is the Node off RBTree +/** + * @brief Is the node off RBTree. * - * This function returns true if the @a node is not on a rbtree. A @a node is - * off rbtree if the parent and child fields are set to NULL. + * This function returns true if the @a node is not on a rbtree. A @a node is + * off rbtree if the parent and child fields are set to NULL. */ RTEMS_INLINE_ROUTINE bool _RBTree_Is_node_off_rbtree( const RBTree_Node *node ) { - return (node->parent == NULL) && (node->child[RBT_LEFT] == NULL) && (node->child[RBT_RIGHT] == NULL); + return (node->parent == NULL) && + (node->child[RBT_LEFT] == NULL) && + (node->child[RBT_RIGHT] == NULL); } -/** @brief Are Two Nodes Equal +/** + * @brief Are two Nodes equal. + * + * This function returns true if @a left and @a right are equal, + * and false otherwise. * - * This function returns true if @a left and @a right are equal, - * and false otherwise. + * @retval true @a left and @a right are equal. + * @retval false @a left and @a right are not equal. */ RTEMS_INLINE_ROUTINE bool _RBTree_Are_nodes_equal( const RBTree_Node *left, @@ -77,9 +87,13 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Are_nodes_equal( return left == right; } -/** @brief Is this RBTree Control Pointer Null +/** + * @brief Is this RBTree control pointer NULL. * - * This function returns true if @a the_rbtree is NULL and false otherwise. + * This function returns true if @a the_rbtree is NULL and false otherwise. + * + * @retval true @a the_rbtree is @c NULL. + * @retval false @a the_rbtree is not @c NULL. */ RTEMS_INLINE_ROUTINE bool _RBTree_Is_null( const RBTree_Control *the_rbtree @@ -88,9 +102,13 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_null( return (the_rbtree == NULL); } -/** @brief Is the RBTree Node Pointer NULL +/** + * @brief Is the RBTree node pointer NUL. + * + * This function returns true if @a the_node is NULL and false otherwise. * - * This function returns true if @a the_node is NULL and false otherwise. + * @retval true @a the_node is @c NULL. + * @retval false @a the_node is not @c NULL. */ RTEMS_INLINE_ROUTINE bool _RBTree_Is_null_node( const RBTree_Node *the_node @@ -100,9 +118,10 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_null_node( } -/** @brief Return pointer to RBTree's root node +/** + * @brief Return pointer to RBTree's root node. * - * This function returns a pointer to the root node of @a the_rbtree. + * This function returns a pointer to the root node of @a the_rbtree. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Root( const RBTree_Control *the_rbtree @@ -111,10 +130,11 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Root( return the_rbtree->root; } -/** @brief Return pointer to RBTree's First node +/** + * @brief Return pointer to RBTree's first node. * - * This function returns a pointer to the first node on @a the_rbtree, - * where @a dir specifies whether to return the minimum (0) or maximum (1). + * This function returns a pointer to the first node on @a the_rbtree, + * where @a dir specifies whether to return the minimum (0) or maximum (1). */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_First( const RBTree_Control *the_rbtree, @@ -124,9 +144,10 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_First( return the_rbtree->first[dir]; } -/** @brief Return pointer to the parent of this node +/** + * @brief Return pointer to the parent of this node. * - * This function returns a pointer to the parent node of @a the_node. + * This function returns a pointer to the parent node of @a the_node. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent( const RBTree_Node *the_node @@ -136,13 +157,14 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent( return the_node->parent; } -/** @brief Return pointer to the left of this node +/** + * @brief Return pointer to the left of this node. * - * This function returns a pointer to the left node of this node. + * This function returns a pointer to the left node of this node. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the left node on the rbtree. + * @return This method returns the left node on the rbtree. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Left( const RBTree_Node *the_node @@ -151,13 +173,14 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Left( return the_node->child[RBT_LEFT]; } -/** @brief Return pointer to the right of this node +/** + * @brief Return pointer to the right of this node. * - * This function returns a pointer to the right node of this node. + * This function returns a pointer to the right node of this node. * - * @param[in] the_node is the node to be operated upon. + * @param[in] the_node is the node to be operated upon. * - * @return This method returns the right node on the rbtree. + * @return This method returns the right node on the rbtree. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Right( const RBTree_Node *the_node @@ -166,15 +189,16 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Right( return the_node->child[RBT_RIGHT]; } -/** @brief Is the RBTree Empty +/** + * @brief Is the RBTree empty. * - * This function returns true if there are no nodes on @a the_rbtree and - * false otherwise. + * This function returns true if there are no nodes on @a the_rbtree and + * false otherwise. * - * @param[in] the_rbtree is the rbtree to be operated upon. + * @param[in] the_rbtree is the rbtree to be operated upon. * - * @return This function returns true if there are no nodes on - * @a the_rbtree and false otherwise. + * @retval true There are no nodes on @a the_rbtree. + * @retval false There are nodes on @a the_rbtree. */ RTEMS_INLINE_ROUTINE bool _RBTree_Is_empty( const RBTree_Control *the_rbtree @@ -183,11 +207,15 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_empty( return (the_rbtree->root == NULL); } -/** @brief Is this the First Node on the RBTree +/** + * @brief Is this the first node on the RBTree. * - * This function returns true if @a the_node is the first node on - * @a the_rbtree and false otherwise. @a dir specifies whether first means - * minimum (0) or maximum (1). + * This function returns true if @a the_node is the first node on + * @a the_rbtree and false otherwise. @a dir specifies whether first means + * minimum (0) or maximum (1). + * + * @retval true @a the_node is the first node on @a the_rbtree. + * @retval false @a the_node is not the first node on @a the_rbtree. * */ RTEMS_INLINE_ROUTINE bool _RBTree_Is_first( @@ -199,9 +227,13 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_first( return (the_node == _RBTree_First(the_rbtree, dir)); } -/** @brief Is this node red? +/** + * @brief Is this node red. + * + * This function returns true if @a the_node is red and false otherwise. * - * This function returns true if @a the_node is red and false otherwise. + * @retval true @a the_node is red. + * @retval false @a the_node in not red. */ RTEMS_INLINE_ROUTINE bool _RBTree_Is_red( const RBTree_Node *the_node @@ -211,24 +243,32 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_red( } -/** @brief Does this RBTree have only One Node +/** + * @brief Does this RBTree have only one node. * - * This function returns true if there is only one node on @a the_rbtree and - * false otherwise. + * This function returns true if there is only one node on @a the_rbtree and + * false otherwise. * + * @retval true @a the_rbtree has only one node. + * @retval false @a the_rbtree has more than one nodes. */ RTEMS_INLINE_ROUTINE bool _RBTree_Has_only_one_node( const RBTree_Control *the_rbtree ) { if(!the_rbtree) return false; /* TODO: expected behavior? */ - return (the_rbtree->root->child[RBT_LEFT] == NULL && the_rbtree->root->child[RBT_RIGHT] == NULL); + return (the_rbtree->root->child[RBT_LEFT] == NULL && + the_rbtree->root->child[RBT_RIGHT] == NULL); } -/** @brief Is this Node the RBTree root +/** + * @brief Is this node the RBTree root. * - * This function returns true if @a the_node is the root of @a the_rbtree and - * false otherwise. + * This function returns true if @a the_node is the root of @a the_rbtree and + * false otherwise. + * + * @retval true @a the_node is the root of @a the_rbtree. + * @retval false @a the_node is not the root of @a the_rbtree. */ RTEMS_INLINE_ROUTINE bool _RBTree_Is_root( const RBTree_Control *the_rbtree, @@ -238,9 +278,10 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_root( return (the_node == _RBTree_Root(the_rbtree)); } -/** @brief Initialize this RBTree as Empty +/** + * @brief Initialize this RBTree as empty. * - * This routine initializes @a the_rbtree to contain zero nodes. + * This routine initializes @a the_rbtree to contain zero nodes. */ RTEMS_INLINE_ROUTINE void _RBTree_Initialize_empty( RBTree_Control *the_rbtree, @@ -256,11 +297,11 @@ RTEMS_INLINE_ROUTINE void _RBTree_Initialize_empty( the_rbtree->is_unique = is_unique; } -/** @brief Return a pointer to node's grandparent +/** + * @brief Return a pointer to node's grandparent. * - * This function returns a pointer to the grandparent of @a the_node if it - * exists, and NULL if not. - * + * This function returns a pointer to the grandparent of @a the_node if it + * exists, and NULL if not. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Grandparent( const RBTree_Node *the_node @@ -273,10 +314,11 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Grandparent( return(the_node->parent->parent); } -/** @brief Return a pointer to node's sibling +/** + * @brief Return a pointer to node's sibling. * - * This function returns a pointer to the sibling of @a the_node if it - * exists, and NULL if not. + * This function returns a pointer to the sibling of @a the_node if it + * exists, and NULL if not. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling( const RBTree_Node *the_node @@ -292,10 +334,11 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling( return the_node->parent->child[RBT_LEFT]; } -/** @brief Return a pointer to node's parent's sibling +/** + * @brief Return a pointer to node's parent's sibling. * - * This function returns a pointer to the sibling of the parent of - * @a the_node if it exists, and NULL if not. + * This function returns a pointer to the sibling of the parent of + * @a the_node if it exists, and NULL if not. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent_sibling( const RBTree_Node *the_node @@ -307,10 +350,11 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent_sibling( return _RBTree_Sibling(the_node->parent); } -/** @brief Find the RBTree_Control header given a node in the tree +/** + * @brief Find the RBTree_Control header given a node in the tree. * - * This function returns a pointer to the header of the Red Black - * Tree containing @a the_node if it exists, and NULL if not. + * This function returns a pointer to the header of the Red Black + * Tree containing @a the_node if it exists, and NULL if not. */ RTEMS_INLINE_ROUTINE RBTree_Control *_RBTree_Find_header_unprotected( RBTree_Node *the_node @@ -341,47 +385,13 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_lesser( return compare_result < 0; } -/** @brief Find the node with given key in the tree - * - * This function returns a pointer to the node in @a the_rbtree - * having key equal to key of @a the_node if it exists, - * and NULL if not. @a the_node has to be made up before a search. - * - * @note If the tree is not unique and contains duplicate keys, the set - * of duplicate keys acts as FIFO. - */ -RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Find_unprotected( - RBTree_Control *the_rbtree, - RBTree_Node *the_node - ) -{ - RBTree_Node* iter_node = the_rbtree->root; - RBTree_Node* found = NULL; - int compare_result; - while (iter_node) { - compare_result = the_rbtree->compare_function(the_node, iter_node); - if ( _RBTree_Is_equal( compare_result ) ) { - found = iter_node; - if ( the_rbtree->is_unique ) - break; - } - - RBTree_Direction dir = - (RBTree_Direction) _RBTree_Is_greater( compare_result ); - iter_node = iter_node->child[dir]; - } /* while(iter_node) */ - - return found; -} - /** * @brief Returns the predecessor of a node. * - * @param[in] rbtree The red-black tree. - * @param[in] node The node. + * @param[in] node is the node. * - * @retval NULL The predecessor does not exist. - * @retval otherwise The predecessor node. + * @retval NULL The predecessor does not exist. Otherwise it returns + * the predecessor node. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Predecessor_unprotected( const RBTree_Node *node @@ -405,11 +415,9 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Predecessor( /** * @brief Returns the successor of a node. * - * @param[in] rbtree The red-black tree. - * @param[in] node The node. + * @param[in] node is the node. * - * @retval NULL The successor does not exist. - * @retval otherwise The successor node. + * @retval NULL The successor does not exist. Otherwise the successor node. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Successor_unprotected( const RBTree_Node *node @@ -430,18 +438,19 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Successor( return _RBTree_Next( node, RBT_RIGHT ); } -/** @brief Get the First Node (unprotected) +/** + * @brief Get the first node (unprotected). * - * This function removes the minimum or maximum node from the_rbtree and - * returns a pointer to that node. It does NOT disable interrupts to ensure - * the atomicity of the get operation. + * This function removes the minimum or maximum node from the_rbtree and + * returns a pointer to that node. It does NOT disable interrupts to ensure + * the atomicity of the get operation. * - * @param[in] the_rbtree is the rbtree to attempt to get the min node from. - * @param[in] dir specifies whether to get minimum (0) or maximum (1) + * @param[in] the_rbtree is the rbtree to attempt to get the min node from. + * @param[in] dir specifies whether to get minimum (0) or maximum (1) * - * @return This method returns the min or max node on the rbtree, or NULL. + * @return This method returns the min or max node on the rbtree, or NULL. * - * @note This routine may return NULL if the RBTree is empty. + * @note This routine may return NULL if the RBTree is empty. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Get_unprotected( RBTree_Control *the_rbtree, @@ -453,10 +462,11 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Get_unprotected( return the_node; } -/** @brief Rotate the_node in the direction passed as second argument - * - * This routine rotates @a the_node to the direction @a dir, swapping - * @a the_node with its child\[@a dir\]. +/** + * @brief Rotate the_node in the direction passed as second argument. + * + * This routine rotates @a the_node to the direction @a dir, swapping + * @a the_node with its child\[@a dir\]. */ RTEMS_INLINE_ROUTINE void _RBTree_Rotate( RBTree_Node *the_node, @@ -481,7 +491,8 @@ RTEMS_INLINE_ROUTINE void _RBTree_Rotate( the_node->parent = c; } -/** @brief Determines whether the tree is unique +/** + * @brief Determines whether the tree is unique. */ RTEMS_INLINE_ROUTINE bool _RBTree_Is_unique( const RBTree_Control *the_rbtree @@ -489,7 +500,8 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_unique( { return( the_rbtree && the_rbtree->is_unique ); } -/**@}*/ + +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/scheduler.inl b/cpukit/score/inline/rtems/score/scheduler.inl index 227cabc399..20460d1540 100644 --- a/cpukit/score/inline/rtems/score/scheduler.inl +++ b/cpukit/score/inline/rtems/score/scheduler.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/scheduler.inl +/** + * @file + * + * @brief Inlined Routines Associated with the Manipulation of the Scheduler * - * This inline file contains all of the inlined routines associated with - * the manipulation of the scheduler. + * This inline file contains all of the inlined routines associated with + * the manipulation of the scheduler. */ /* @@ -22,135 +24,145 @@ #define _RTEMS_SCORE_SCHEDULER_INL /** - * @addtogroup ScoreScheduler - * @{ + * @addtogroup ScoreScheduler */ +/**@{**/ /** - * The preferred method to add a new scheduler is to define the jump table - * entries and add a case to the _Scheduler_Initialize routine. + * The preferred method to add a new scheduler is to define the jump table + * entries and add a case to the _Scheduler_Initialize routine. * - * Generic scheduling implementations that rely on the ready queue only can + * Generic scheduling implementations that rely on the ready queue only can * be found in the _Scheduler_queue_XXX functions. - * */ -/* Passing the Scheduler_Control* to these functions allows for multiple - * scheduler's to exist simultaneously, which could be useful on an SMP - * system. Then remote Schedulers may be accessible. How to protect such +/* + * Passing the Scheduler_Control* to these functions allows for multiple + * scheduler's to exist simultaneously, which could be useful on an SMP + * system. Then remote Schedulers may be accessible. How to protect such * accesses remains an open problem. */ -/** @brief _Scheduler_Schedule +/** + * @brief Scheduler schedule. * - * This kernel routine implements the scheduling decision logic for - * the scheduler. It does NOT dispatch. + * This kernel routine implements the scheduling decision logic for + * the scheduler. It does NOT dispatch. */ RTEMS_INLINE_ROUTINE void _Scheduler_Schedule( void ) { _Scheduler.Operations.schedule(); } -/** @brief _Scheduler_Yield +/** + * @brief Scheduler yield. * - * This routine is invoked when a thread wishes to voluntarily - * transfer control of the processor to another thread. This routine - * always operates on the scheduler that 'owns' the currently executing - * thread. + * This routine is invoked when a thread wishes to voluntarily + * transfer control of the processor to another thread. This routine + * always operates on the scheduler that 'owns' the currently executing + * thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void ) { _Scheduler.Operations.yield(); } -/** @brief _Scheduler_Block +/** + * @brief Scheduler block. * - * This routine removes @a the_thread from the scheduling decision for - * the scheduler. The primary task is to remove the thread from the - * ready queue. It performs any necessary schedulering operations - * including the selection of a new heir thread. + * This routine removes @a the_thread from the scheduling decision for + * the scheduler. The primary task is to remove the thread from the + * ready queue. It performs any necessary schedulering operations + * including the selection of a new heir thread. */ -RTEMS_INLINE_ROUTINE void _Scheduler_Block( - Thread_Control *the_thread +RTEMS_INLINE_ROUTINE void _Scheduler_Block( + Thread_Control *the_thread ) { _Scheduler.Operations.block( the_thread ); } -/** @brief _Scheduler_Unblock +/** + * @brief Scheduler unblock. * - * This routine adds @a the_thread to the scheduling decision for - * the scheduler. The primary task is to add the thread to the - * ready queue per the schedulering policy and update any appropriate - * scheduling variables, for example the heir thread. + * This routine adds @a the_thread to the scheduling decision for + * the scheduler. The primary task is to add the thread to the + * ready queue per the schedulering policy and update any appropriate + * scheduling variables, for example the heir thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_Unblock( - Thread_Control *the_thread + Thread_Control *the_thread ) { _Scheduler.Operations.unblock( the_thread ); } -/** @brief _Scheduler_Allocate +/** + * @brief Scheduler allocate. * * This routine allocates @a the_thread->scheduler */ -RTEMS_INLINE_ROUTINE void* _Scheduler_Allocate( +RTEMS_INLINE_ROUTINE void* _Scheduler_Allocate( Thread_Control *the_thread ) { return _Scheduler.Operations.allocate( the_thread ); } -/** @brief _Scheduler_Free +/** + * @brief Scheduler free. * * This routine frees @a the_thread->scheduler */ -RTEMS_INLINE_ROUTINE void _Scheduler_Free( +RTEMS_INLINE_ROUTINE void _Scheduler_Free( Thread_Control *the_thread ) { return _Scheduler.Operations.free( the_thread ); } -/** @brief _Scheduler_Update +/** + * @brief Scheduler update. * * This routine updates @a the_thread->scheduler */ -RTEMS_INLINE_ROUTINE void _Scheduler_Update( +RTEMS_INLINE_ROUTINE void _Scheduler_Update( Thread_Control *the_thread ) { _Scheduler.Operations.update( the_thread ); } -/** @brief _Scheduler_Enqueue +/** + * @brief Scheduler enqueue. * * This routine enqueue @a the_thread->scheduler */ -RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue( +RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue( Thread_Control *the_thread ) { _Scheduler.Operations.enqueue( the_thread ); } -/** @brief _Scheduler_Enqueue_first +/** + * @brief Scheduler enqueue first. * * This routine enqueue_first @a the_thread->scheduler */ -RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue_first( +RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue_first( Thread_Control *the_thread ) { _Scheduler.Operations.enqueue_first( the_thread ); } -/** @brief _Scheduler_Extract +/** + * @brief Scheduler extract. * * This routine extract @a the_thread->scheduler */ -RTEMS_INLINE_ROUTINE void _Scheduler_Extract( +RTEMS_INLINE_ROUTINE void _Scheduler_Extract( Thread_Control *the_thread ) { @@ -158,7 +170,7 @@ RTEMS_INLINE_ROUTINE void _Scheduler_Extract( } /** - * @brief Scheduler Priority compare + * @brief Scheduler priority compare. * * This routine compares two priorities. */ @@ -171,7 +183,7 @@ RTEMS_INLINE_ROUTINE int _Scheduler_Priority_compare( } /** - * @brief Scheduler Release job + * @brief Scheduler release job. * * This routine is called when a new period of task is issued. */ @@ -183,10 +195,11 @@ RTEMS_INLINE_ROUTINE void _Scheduler_Release_job( _Scheduler.Operations.release_job(the_thread, length); } -/** @brief Scheduler Method Invoked at Each Clock Tick +/** + * @brief Scheduler method invoked at each clock tick. * * This method is invoked at each clock tick to allow the scheduler - * implementation to perform any activities required. For the + * implementation to perform any activities required. For the * scheduler which support standard RTEMS features, this includes * time-slicing management. */ @@ -195,7 +208,7 @@ RTEMS_INLINE_ROUTINE void _Scheduler_Tick( void ) _Scheduler.Operations.tick(); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/schedulerpriority.inl b/cpukit/score/inline/rtems/score/schedulerpriority.inl index 5c3dd5fbd6..4655f9501f 100644 --- a/cpukit/score/inline/rtems/score/schedulerpriority.inl +++ b/cpukit/score/inline/rtems/score/schedulerpriority.inl @@ -1,8 +1,11 @@ -/** - * @file rtems/score/schedulerpriority.inl +/** + * @file + * + * @brief Inlined Routines Associated with the Manipulation of the + * Priority-Based Scheduling Structures * - * This inline file contains all of the inlined routines associated with - * the manipulation of the priority-based scheduling structures. + * This inline file contains all of the inlined routines associated with + * the manipulation of the priority-based scheduling structures. */ /* @@ -24,13 +27,14 @@ #include <rtems/score/wkspace.h> /** - * @addtogroup ScoreScheduler - * @{ + * @addtogroup ScoreScheduler */ +/**@{**/ -/** @brief Scheduler priority Ready queue initialize +/** + * @brief Ready queue initialization. * - * This routine initializes @a the_ready_queue for priority-based scheduling. + * This routine initializes @a the_ready_queue for priority-based scheduling. */ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_initialize(void) { @@ -49,11 +53,11 @@ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_initialize(void) } /** - * @brief _Scheduler_priority_Ready_queue_enqueue + * @brief Put a thread to the ready queue. + * + * This routine puts @a the_thread on to the priority-based ready queue. * - * This routine puts @a the_thread on to the priority-based ready queue. - * - * @param[in] the_thread - pointer to thread + * @param[in] the_thread is a pointer to the thread */ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue( Thread_Control *the_thread @@ -66,18 +70,18 @@ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue( ready = sched_info->ready_chain; _Priority_bit_map_Add( &sched_info->Priority_map ); - + _Chain_Append_unprotected( ready, &the_thread->Object.Node ); } /** - * @brief _Scheduler_priority_Ready_queue_Enqueue_first + * @brief Put a thread to the head of the ready queue. + * + * This routine puts @a the_thread to the head of the ready queue. + * For priority-based ready queues, the thread will be the first thread + * at its priority level. * - * This routine puts @a the_thread to the head of the ready queue. - * For priority-based ready queues, the thread will be the first thread - * at its priority level. - * - * @param[in] the_thread - pointer to thread + * @param[in] the_thread is a pointer to the thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue_first( Thread_Control *the_thread @@ -96,12 +100,12 @@ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue_first( } /** - * @brief _Scheduler_priority_Ready_queue_extract + * @brief Remove a specific thread from the ready queue. * - * This routine removes a specific thread from the specified - * priority-based ready queue. + * This routine removes a specific thread from the specified + * priority-based ready queue. * - * @param[in] the_thread - pointer to thread + * @param[in] the_thread is a pointer to the thread. */ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract( Thread_Control *the_thread @@ -122,13 +126,13 @@ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract( } /** - * @brief _Scheduler_priority_Ready_queue_first + * @brief Return a pointer to the first thread. * - * This routines returns a pointer to the first thread on @a the_ready_queue. + * This routines returns a pointer to the first thread on @a the_ready_queue. * - * @param[in] the_ready_queue - pointer to thread queue + * @param[in] the_ready_queue - pointer to thread queue * - * @return This method returns the first thread or NULL + * @return This method returns the first thread or NULL */ RTEMS_INLINE_ROUTINE Thread_Control *_Scheduler_priority_Ready_queue_first( Chain_Control *the_ready_queue @@ -143,12 +147,12 @@ RTEMS_INLINE_ROUTINE Thread_Control *_Scheduler_priority_Ready_queue_first( } /** - * @brief _Scheduler_priority_Ready_queue_requeue + * @brief Requeue a thread on the ready queue. * - * This routine is invoked when a thread changes priority and should be - * moved to a different position on the ready queue. + * This routine is invoked when a thread changes priority and should be + * moved to a different position on the ready queue. * - * @param[in] the_thread - pointer to thread + * @param[in] the_thread is a pointer to the thread */ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_requeue( Thread_Control *the_thread @@ -162,19 +166,17 @@ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_requeue( _Chain_Extract_unprotected( &the_thread->Object.Node ); _Chain_Append_unprotected( - sched_info->ready_chain, + sched_info->ready_chain, &the_thread->Object.Node ); } } /** - * @brief _Scheduler_priority_Schedule_body - * - * This kernel routine implements scheduling decision logic - * for priority-based scheduling. + * @brief Scheduling decision logic. * - * @param[in] the_thread - pointer to thread + * This kernel routine implements scheduling decision logic + * for priority-based scheduling. */ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void) { @@ -184,12 +186,12 @@ RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(void) } /** - * @brief Scheduler priority Priority compare body + * @brief Priority comparison. * - * This routine implements priority comparison for priority-based - * scheduling. + * This routine implements priority comparison for priority-based + * scheduling. * - * @return >0 for higher priority, 0 for equal and <0 for lower priority. + * @return >0 for higher priority, 0 for equal and <0 for lower priority. */ RTEMS_INLINE_ROUTINE int _Scheduler_priority_Priority_compare_body( Priority_Control p1, @@ -200,7 +202,7 @@ RTEMS_INLINE_ROUTINE int _Scheduler_priority_Priority_compare_body( return ( p2 - p1 ); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/schedulersimple.inl b/cpukit/score/inline/rtems/score/schedulersimple.inl index b94cd224da..e67fc3cd84 100644 --- a/cpukit/score/inline/rtems/score/schedulersimple.inl +++ b/cpukit/score/inline/rtems/score/schedulersimple.inl @@ -1,8 +1,11 @@ -/** - * @file rtems/score/schedulersimple.inl +/** + * @file + * + * @brief Inlined Routines Associated with the Manipulation of the + * Priority-Based Scheduling Structures * - * This inline file contains all of the inlined routines associated with - * the manipulation of the priority-based scheduling structures. + * This inline file contains all of the inlined routines associated with + * the manipulation of the priority-based scheduling structures. */ /* @@ -23,15 +26,15 @@ #include <rtems/score/thread.h> /** - * @addtogroup ScoreScheduler - * @{ + * @addtogroup ScoreScheduler */ +/**@{**/ /** - * This routine puts @a the_thread on to the ready queue. + * This routine puts @a the_thread on to the ready queue. * - * @param[in] the_ready_queue is a pointer to the ready queue head - * @param[in] the_thread is the thread to be blocked + * @param[in] the_ready_queue is a pointer to the ready queue head + * @param[in] the_thread is the thread to be blocked */ RTEMS_INLINE_ROUTINE void _Scheduler_simple_Ready_queue_requeue( Scheduler_Control *the_ready_queue, @@ -45,7 +48,7 @@ RTEMS_INLINE_ROUTINE void _Scheduler_simple_Ready_queue_requeue( _Scheduler_simple_Ready_queue_enqueue( the_thread ); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/stack.inl b/cpukit/score/inline/rtems/score/stack.inl index 2f60f0f50b..7cb73eef9e 100644 --- a/cpukit/score/inline/rtems/score/stack.inl +++ b/cpukit/score/inline/rtems/score/stack.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/stack.inl +/** + * @file + * + * @brief Inlined Routines from the Stack Handler * - * This file contains the static inline implementation of the inlined - * routines from the Stack Handler. + * This file contains the static inline implementation of the inlined + * routines from the Stack Handler. */ /* @@ -24,14 +26,14 @@ #include <rtems/score/basedefs.h> /* RTEMS_INLINE_ROUTINE */ /** - * @addtogroup ScoreStack - * @{ + * @addtogroup ScoreStack */ +/**@{**/ /** - * This routine initializes the_stack record to indicate that - * size bytes of memory starting at starting_address have been - * reserved for a stack. + * This routine initializes the_stack record to indicate that + * size bytes of memory starting at starting_address have been + * reserved for a stack. */ RTEMS_INLINE_ROUTINE void _Stack_Initialize ( Stack_Control *the_stack, @@ -44,10 +46,10 @@ RTEMS_INLINE_ROUTINE void _Stack_Initialize ( } /** - * This function returns the minimum stack size configured - * for this application. + * This function returns the minimum stack size configured + * for this application. * - * @return This method returns the minimum stack size; + * @return This method returns the minimum stack size; */ RTEMS_INLINE_ROUTINE uint32_t _Stack_Minimum (void) { @@ -55,12 +57,12 @@ RTEMS_INLINE_ROUTINE uint32_t _Stack_Minimum (void) } /** - * This function returns true if size bytes is enough memory for - * a valid stack area on this processor, and false otherwise. + * This function returns true if size bytes is enough memory for + * a valid stack area on this processor, and false otherwise. * - * @param[in] size is the stack size to check + * @param[in] size is the stack size to check * - * @return This method returns true if the stack is large enough. + * @return This method returns true if the stack is large enough. */ RTEMS_INLINE_ROUTINE bool _Stack_Is_enough ( size_t size @@ -70,13 +72,13 @@ RTEMS_INLINE_ROUTINE bool _Stack_Is_enough ( } /** - * This function returns the appropriate stack size given the requested - * size. If the requested size is below the minimum, then the minimum - * configured stack size is returned. + * This function returns the appropriate stack size given the requested + * size. If the requested size is below the minimum, then the minimum + * configured stack size is returned. * - * @param[in] size is the stack size to check + * @param[in] size is the stack size to check * - * @return This method returns the appropriate stack size. + * @return This method returns the appropriate stack size. */ RTEMS_INLINE_ROUTINE size_t _Stack_Ensure_minimum ( size_t size @@ -87,7 +89,7 @@ RTEMS_INLINE_ROUTINE size_t _Stack_Ensure_minimum ( return _Stack_Minimum(); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/states.inl b/cpukit/score/inline/rtems/score/states.inl index f5d816a8d3..5dfdc4230a 100644 --- a/cpukit/score/inline/rtems/score/states.inl +++ b/cpukit/score/inline/rtems/score/states.inl @@ -1,12 +1,14 @@ -/** - * @file rtems/score/states.inl +/** + * @file + * + * @brief Inlined Routines Associated with Thread State Information * - * This file contains the static inline implementation of the inlined - * routines associated with thread state information. + * This file contains the static inline implementation of the inlined + * routines associated with thread state information. */ /* - * COPYRIGHT (c) 1989-2009. + * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -24,18 +26,18 @@ #include <rtems/score/basedefs.h> /* RTEMS_INLINE_ROUTINE */ /** - * @addtogroup ScoreStates - * @{ + * @addtogroup ScoreStates */ +/**@{**/ /** - * This function sets the given states_to_set into the current_state - * passed in. The result is returned to the user in current_state. + * This function sets the given states_to_set into the current_state + * passed in. The result is returned to the user in current_state. * - * @param[in] states_to_set is the state bits to set - * @param[in] current_state is the state set to add them to + * @param[in] states_to_set is the state bits to set + * @param[in] current_state is the state set to add them to * - * @return This method returns the updated states value. + * @return This method returns the updated states value. */ RTEMS_INLINE_ROUTINE States_Control _States_Set ( States_Control states_to_set, @@ -46,13 +48,13 @@ RTEMS_INLINE_ROUTINE States_Control _States_Set ( } /** - * This function clears the given states_to_clear into the current_state - * passed in. The result is returned to the user in current_state. + * This function clears the given states_to_clear into the current_state + * passed in. The result is returned to the user in current_state. * - * @param[in] states_to_set is the state bits to clean - * @param[in] current_state is the state set to remove them from + * @param[in] states_to_clear is the state bits to clean + * @param[in] current_state is the state set to remove them from * - * @return This method returns the updated states value. + * @return This method returns the updated states value. */ RTEMS_INLINE_ROUTINE States_Control _States_Clear ( States_Control states_to_clear, @@ -63,12 +65,12 @@ RTEMS_INLINE_ROUTINE States_Control _States_Clear ( } /** - * This function returns true if the_states indicates that the - * state is READY, and false otherwise. + * This function returns true if the_states indicates that the + * state is READY, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_ready ( States_Control the_states @@ -78,12 +80,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_ready ( } /** - * This function returns true if the DORMANT state is the ONLY state - * set in the_states, and false otherwise. + * This function returns true if the DORMANT state is the ONLY state + * set in the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_only_dormant ( States_Control the_states @@ -93,12 +95,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_only_dormant ( } /** - * This function returns true if the DORMANT state is set in - * the_states, and false otherwise. + * This function returns true if the DORMANT state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_dormant ( States_Control the_states @@ -108,12 +110,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_dormant ( } /** - * This function returns true if the SUSPENDED state is set in - * the_states, and false otherwise. + * This function returns true if the SUSPENDED state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_suspended ( States_Control the_states @@ -123,12 +125,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_suspended ( } /** - * This function returns true if the TRANSIENT state is set in - * the_states, and false otherwise. + * This function returns true if the TRANSIENT state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_transient ( States_Control the_states @@ -138,12 +140,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_transient ( } /** - * This function returns true if the DELAYING state is set in - * the_states, and false otherwise. + * This function returns true if the DELAYING state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_delaying ( States_Control the_states @@ -153,12 +155,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_delaying ( } /** - * This function returns true if the WAITING_FOR_BUFFER state is set in - * the_states, and false otherwise. + * This function returns true if the WAITING_FOR_BUFFER state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_buffer ( States_Control the_states @@ -168,12 +170,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_buffer ( } /** - * This function returns true if the WAITING_FOR_SEGMENT state is set in - * the_states, and false otherwise. + * This function returns true if the WAITING_FOR_SEGMENT state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_segment ( States_Control the_states @@ -183,12 +185,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_segment ( } /** - * This function returns true if the WAITING_FOR_MESSAGE state is set in - * the_states, and false otherwise. + * This function returns true if the WAITING_FOR_MESSAGE state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_message ( States_Control the_states @@ -198,12 +200,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_message ( } /** - * This function returns true if the WAITING_FOR_EVENT state is set in - * the_states, and false otherwise. + * This function returns true if the WAITING_FOR_EVENT state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event ( States_Control the_states @@ -213,12 +215,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event ( } /** - * This function returns true if the WAITING_FOR_SYSTEM_EVENT state is set in - * the_states, and false otherwise. + * This function returns true if the WAITING_FOR_SYSTEM_EVENT state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_system_event ( States_Control the_states @@ -228,12 +230,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_system_event ( } /** - * This function returns true if the WAITING_FOR_MUTEX state - * is set in the_states, and false otherwise. + * This function returns true if the WAITING_FOR_MUTEX state + * is set in the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_mutex ( States_Control the_states @@ -243,12 +245,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_mutex ( } /** - * This function returns true if the WAITING_FOR_SEMAPHORE state - * is set in the_states, and false otherwise. + * This function returns true if the WAITING_FOR_SEMAPHORE state + * is set in the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_semaphore ( States_Control the_states @@ -258,12 +260,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_semaphore ( } /** - * This function returns true if the WAITING_FOR_TIME state is set in - * the_states, and false otherwise. + * This function returns true if the WAITING_FOR_TIME state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_time ( States_Control the_states @@ -273,12 +275,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_time ( } /** - * This function returns true if the WAITING_FOR_TIME state is set in - * the_states, and false otherwise. + * This function returns true if the WAITING_FOR_TIME state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_rpc_reply ( States_Control the_states @@ -288,12 +290,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_rpc_reply ( } /** - * This function returns true if the WAITING_FOR_PERIOD state is set in - * the_states, and false otherwise. + * This function returns true if the WAITING_FOR_PERIOD state is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period ( States_Control the_states @@ -303,12 +305,12 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period ( } /** - * This function returns true if the task's state is set in - * way that allows it to be interrupted by a signal. + * This function returns true if the task's state is set in + * way that allows it to be interrupted by a signal. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_interruptible_by_signal ( States_Control the_states @@ -318,13 +320,13 @@ RTEMS_INLINE_ROUTINE bool _States_Is_interruptible_by_signal ( } /** - * This function returns true if one of the states which indicates - * that a task is blocked waiting for a local resource is set in - * the_states, and false otherwise. + * This function returns true if one of the states which indicates + * that a task is blocked waiting for a local resource is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the desired state condition is set. + * @return This method returns true if the desired state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Is_locally_blocked ( @@ -335,14 +337,14 @@ RTEMS_INLINE_ROUTINE bool _States_Is_locally_blocked ( } /** - * This function returns true if one of the states which indicates - * that a task is blocked waiting for a local resource is set in - * the_states, and false otherwise. + * This function returns true if one of the states which indicates + * that a task is blocked waiting for a local resource is set in + * the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the state indicates that the - * assocated thread is waiting on a thread queue. + * @return This method returns true if the state indicates that the + * assocated thread is waiting on a thread queue. */ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( States_Control the_states @@ -352,13 +354,13 @@ RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue ( } /** - * This function returns true if one of the states which indicates - * that a task is blocked is set in the_states, and false otherwise. + * This function returns true if one of the states which indicates + * that a task is blocked is set in the_states, and false otherwise. * - * @param[in] the_states is the task state set to test + * @param[in] the_states is the task state set to test * - * @return This method returns true if the state indicates that the - * assocated thread is blocked. + * @return This method returns true if the state indicates that the + * assocated thread is blocked. */ RTEMS_INLINE_ROUTINE bool _States_Is_blocked ( States_Control the_states @@ -368,13 +370,13 @@ RTEMS_INLINE_ROUTINE bool _States_Is_blocked ( } /** - * This function returns true if any of the states in the mask - * are set in the_states, and false otherwise. + * This function returns true if any of the states in the mask + * are set in the_states, and false otherwise. * - * @param[in] the_states is the task state set to test - * @param[in] mask is the state bits to test for + * @param[in] the_states is the task state set to test + * @param[in] mask is the state bits to test for * - * @return This method returns true if the indicates state condition is set. + * @return This method returns true if the indicates state condition is set. */ RTEMS_INLINE_ROUTINE bool _States_Are_set ( States_Control the_states, @@ -384,7 +386,7 @@ RTEMS_INLINE_ROUTINE bool _States_Are_set ( return ( (the_states & mask) != STATES_READY); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/sysstate.inl b/cpukit/score/inline/rtems/score/sysstate.inl index 02d2598690..3fa534ce17 100644 --- a/cpukit/score/inline/rtems/score/sysstate.inl +++ b/cpukit/score/inline/rtems/score/sysstate.inl @@ -1,9 +1,7 @@ -/** +/** * @file * - * @ingroup ScoreSysState - * - * @brief System State Handler API. + * @brief System State Handler API */ /* @@ -23,10 +21,9 @@ #define _RTEMS_SCORE_SYSSTATE_INL /** - * @addtogroup ScoreSysState - * - * @{ + * @addtogroup ScoreSysState */ +/**@{**/ RTEMS_INLINE_ROUTINE void _System_state_Set ( System_state_Codes state @@ -34,7 +31,7 @@ RTEMS_INLINE_ROUTINE void _System_state_Set ( { _System_state_Current = state; } - + RTEMS_INLINE_ROUTINE void _System_state_Handler_initialization ( #if defined(RTEMS_MULTIPROCESSING) bool is_multiprocessing @@ -96,7 +93,7 @@ RTEMS_INLINE_ROUTINE bool _System_state_Is_failed ( return (state == SYSTEM_STATE_FAILED); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/thread.inl b/cpukit/score/inline/rtems/score/thread.inl index 272c14fdf2..681cfcc3df 100644 --- a/cpukit/score/inline/rtems/score/thread.inl +++ b/cpukit/score/inline/rtems/score/thread.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/thread.inl +/** + * @file + * + * @brief Inlined Routines from the Thread Handler * - * This file contains the macro implementation of the inlined - * routines from the Thread handler. + * This file contains the macro implementation of the inlined + * routines from the Thread handler. */ /* @@ -25,9 +27,9 @@ #include <rtems/score/context.h> /** - * @addtogroup ScoreThread - * @{ + * @addtogroup ScoreThread */ +/**@{**/ #if defined(RTEMS_SMP) @@ -37,8 +39,9 @@ #else - /** @brief _Thread_Dispatch_in_critical_section - * + /** + * @brief _Thread_Dispatch_in_critical_section + * * This routine returns true if thread dispatch indicates * that we are in a critical section. */ @@ -50,8 +53,9 @@ return true; } - /** @brief _Thread_Dispatch_get_disable_level - * + /** + * @brief Get thread dispatch disable level. + * * This routine returns value of the the thread dispatch level. */ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_get_disable_level(void) @@ -59,9 +63,10 @@ return _Thread_Dispatch_disable_level; } - /** @brief _Thread_Dispatch_set_disable_level - * - * This routine sets thread dispatch level to the + /** + * @brief Set thread dispatch disable level. + * + * This routine sets thread dispatch level to the * value passed in. */ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_set_disable_level(uint32_t value) @@ -70,8 +75,9 @@ return value; } - /** @brief _Thread_Dispatch_increment_disable_level - * + /** + * @brief Increase thread dispatch disable level. + * * This rountine increments the thread dispatch level */ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void) @@ -84,8 +90,9 @@ return level; } - /** @brief _Thread_Dispatch_decrement_disable_level - * + /** + * @brief Decrease thread dispatch disable level. + * * This routine decrements the thread dispatch level. */ RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void) @@ -98,9 +105,10 @@ return level; } - /** @brief _Thread_Dispatch_initialization - * - * This routine initializes the thread dispatching subsystem. + /** + * @brief Thread dispatch initialization. + * + * This routine initializes the thread dispatching subsystem. */ RTEMS_INLINE_ROUTINE void _Thread_Dispatch_initialization( void ) { @@ -110,9 +118,9 @@ #endif /** - * This routine halts multitasking and returns control to - * the "thread" (i.e. the BSP) which initially invoked the - * routine which initialized the system. + * This routine halts multitasking and returns control to + * the "thread" (i.e. the BSP) which initially invoked the + * routine which initialized the system. */ RTEMS_INLINE_ROUTINE void _Thread_Stop_multitasking( void ) @@ -140,8 +148,8 @@ RTEMS_INLINE_ROUTINE void _Thread_Stop_multitasking( void ) } /** - * This function returns true if the_thread is the currently executing - * thread, and false otherwise. + * This function returns true if the_thread is the currently executing + * thread, and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_executing ( @@ -152,8 +160,8 @@ RTEMS_INLINE_ROUTINE bool _Thread_Is_executing ( } /** - * This function returns true if the_thread is the heir - * thread, and false otherwise. + * This function returns true if the_thread is the heir + * thread, and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_heir ( @@ -164,8 +172,8 @@ RTEMS_INLINE_ROUTINE bool _Thread_Is_heir ( } /** - * This function returns true if the currently executing thread - * is also the heir thread, and false otherwise. + * This function returns true if the currently executing thread + * is also the heir thread, and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void ) @@ -174,9 +182,9 @@ RTEMS_INLINE_ROUTINE bool _Thread_Is_executing_also_the_heir( void ) } /** - * This routine clears any blocking state for the_thread. It performs - * any necessary scheduling operations including the selection of - * a new heir thread. + * This routine clears any blocking state for the_thread. It performs + * any necessary scheduling operations including the selection of + * a new heir thread. */ RTEMS_INLINE_ROUTINE void _Thread_Unblock ( @@ -187,8 +195,8 @@ RTEMS_INLINE_ROUTINE void _Thread_Unblock ( } /** - * This routine resets the current context of the calling thread - * to that of its initial state. + * This routine resets the current context of the calling thread + * to that of its initial state. */ RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void ) @@ -202,9 +210,9 @@ RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void ) } /** - * This function returns true if the floating point context of - * the_thread is currently loaded in the floating point unit, and - * false otherwise. + * This function returns true if the floating point context of + * the_thread is currently loaded in the floating point unit, and + * false otherwise. */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) @@ -217,8 +225,8 @@ RTEMS_INLINE_ROUTINE bool _Thread_Is_allocated_fp ( #endif /** - * This routine is invoked when the currently loaded floating - * point context is now longer associated with an active thread. + * This routine is invoked when the currently loaded floating + * point context is now longer associated with an active thread. */ #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) @@ -229,7 +237,7 @@ RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void ) #endif /** - * This routine prevents dispatching. + * This routine prevents dispatching. */ #if defined ( __THREAD_DO_NOT_INLINE_DISABLE_DISPATCH__ ) @@ -243,10 +251,10 @@ RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void ) #endif /** - * This routine allows dispatching to occur again. If this is - * the outer most dispatching critical section, then a dispatching - * operation will be performed and, if necessary, control of the - * processor will be transferred to the heir thread. + * This routine allows dispatching to occur again. If this is + * the outer most dispatching critical section, then a dispatching + * operation will be performed and, if necessary, control of the + * processor will be transferred to the heir thread. */ #if defined ( __THREAD_DO_NOT_INLINE_ENABLE_DISPATCH__ ) @@ -262,9 +270,9 @@ RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void ) #endif /** - * This routine allows dispatching to occur again. However, - * no dispatching operation is performed even if this is the outer - * most dispatching critical section. + * This routine allows dispatching to occur again. However, + * no dispatching operation is performed even if this is the outer + * most dispatching critical section. */ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) @@ -274,8 +282,8 @@ RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) } /** - * This function returns true if dispatching is disabled, and false - * otherwise. + * This function returns true if dispatching is disabled, and false + * otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void ) @@ -284,8 +292,8 @@ RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void ) } /** - * This function returns true if dispatching is disabled, and false - * otherwise. + * This function returns true if dispatching is disabled, and false + * otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_context_switch_necessary( void ) @@ -294,7 +302,7 @@ RTEMS_INLINE_ROUTINE bool _Thread_Is_context_switch_necessary( void ) } /** - * This function returns true if the_thread is NULL and false otherwise. + * This function returns true if the_thread is NULL and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_null ( @@ -304,9 +312,10 @@ RTEMS_INLINE_ROUTINE bool _Thread_Is_null ( return ( the_thread == NULL ); } -/** @brief _Thread_Is_proxy_blocking +/** + * @brief Is proxy blocking. * - * status which indicates that a proxy is blocking, and false otherwise. + * status which indicates that a proxy is blocking, and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Thread_Is_proxy_blocking ( uint32_t code @@ -316,18 +325,18 @@ RTEMS_INLINE_ROUTINE bool _Thread_Is_proxy_blocking ( } /** - * This routine allocates an internal thread. + * This routine allocates an internal thread. */ - + RTEMS_INLINE_ROUTINE Thread_Control *_Thread_Internal_allocate( void ) { return (Thread_Control *) _Objects_Allocate( &_Thread_Internal_information ); } - + /** - * This routine frees an internal thread. + * This routine frees an internal thread. */ - + RTEMS_INLINE_ROUTINE void _Thread_Internal_free ( Thread_Control *the_task ) @@ -336,18 +345,18 @@ RTEMS_INLINE_ROUTINE void _Thread_Internal_free ( } /** - * This routine returns the C library re-enterant pointer. + * This routine returns the C library re-enterant pointer. */ - + RTEMS_INLINE_ROUTINE struct _reent **_Thread_Get_libc_reent( void ) { return _Thread_libc_reent; } /** - * This routine set the C library re-enterant pointer. + * This routine set the C library re-enterant pointer. */ - + RTEMS_INLINE_ROUTINE void _Thread_Set_libc_reent ( struct _reent **libc_reent ) @@ -356,13 +365,13 @@ RTEMS_INLINE_ROUTINE void _Thread_Set_libc_reent ( } /** - * This routine evaluates the current scheduling information for the - * system and determines if a context switch is required. This - * is usually called after changing an execution mode such as preemptability - * for a thread. + * This routine evaluates the current scheduling information for the + * system and determines if a context switch is required. This + * is usually called after changing an execution mode such as preemptability + * for a thread. * - * @param[in] are_signals_pending specifies whether or not the API - * level signals are pending and a dispatch is needed. + * @param[in] are_signals_pending specifies whether or not the API + * level signals are pending and a dispatch is needed. */ RTEMS_INLINE_ROUTINE bool _Thread_Evaluate_is_dispatch_needed( bool are_signals_pending @@ -381,7 +390,7 @@ RTEMS_INLINE_ROUTINE bool _Thread_Evaluate_is_dispatch_needed( return false; } -/**@}*/ +/** @}*/ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/threadmp.inl b/cpukit/score/inline/rtems/score/threadmp.inl index 81ecb6dcc6..85088d1b73 100644 --- a/cpukit/score/inline/rtems/score/threadmp.inl +++ b/cpukit/score/inline/rtems/score/threadmp.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/threadmp.inl +/** + * @file + * + * @brief Inlined Routines for the Multiprocessing part of Thread Package * - * This include file contains the bodies of all inlined routines - * for the multiprocessing part of thread package. + * This include file contains the bodies of all inlined routines + * for the multiprocessing part of thread package. */ /* @@ -24,23 +26,23 @@ #define _RTEMS_SCORE_THREADMP_INL /** - * @addtogroup ScoreThreadMP - * @{ + * @addtogroup ScoreThreadMP */ +/**@{**/ /** - * This function returns true if the thread in question is the - * multiprocessing receive thread. + * This function returns true if the thread in question is the + * multiprocessing receive thread. * - * @note This is a macro to avoid needing a prototype for - * _MPCI_Receive_server_tcb until it is used. + * @note This is a macro to avoid needing a prototype for + * _MPCI_Receive_server_tcb until it is used. */ #define _Thread_MP_Is_receive(_the_thread) \ ((_the_thread) == _MPCI_Receive_server_tcb) /** - * This routine frees a proxy control block to the - * inactive chain of free proxy control blocks. + * This routine frees a proxy control block to the + * inactive chain of free proxy control blocks. */ RTEMS_INLINE_ROUTINE void _Thread_MP_Free_proxy ( @@ -56,7 +58,7 @@ RTEMS_INLINE_ROUTINE void _Thread_MP_Free_proxy ( _Chain_Append( &_Thread_MP_Inactive_proxies, &the_thread->Object.Node ); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/threadq.inl b/cpukit/score/inline/rtems/score/threadq.inl index d16013d19f..d64638908a 100644 --- a/cpukit/score/inline/rtems/score/threadq.inl +++ b/cpukit/score/inline/rtems/score/threadq.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/threadq.inl +/** + * @file + * + * @brief Inlined Routines Associated with the Manipulation of Thread Queues * - * This inline file contains all of the inlined routines associated with - * the manipulation of thread queues. + * This inline file contains all of the inlined routines associated with + * the manipulation of thread queues. */ /* @@ -24,11 +26,11 @@ #include <rtems/score/thread.h> /** - * @addtogroup ScoreThreadQ - * @{ + * @addtogroup ScoreThreadQ */ +/**@{**/ -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/tod.inl b/cpukit/score/inline/rtems/score/tod.inl index d8a8bb7f20..89b2634d95 100644 --- a/cpukit/score/inline/rtems/score/tod.inl +++ b/cpukit/score/inline/rtems/score/tod.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/tod.inl +/** + * @file + * + * @brief Inlined Routines from the Time of Day Handle * - * This file contains the static inline implementation of the inlined routines - * from the Time of Day Handler. + * This file contains the static inline implementation of the inlined routines + * from the Time of Day Handler. */ /* @@ -26,12 +28,12 @@ #include <rtems/score/isr.h> /** - * @addtogroup ScoreTOD - * @{ + * @addtogroup ScoreTOD */ +/**@{**/ /** - * This routine deactivates updating of the current time of day. + * This routine deactivates updating of the current time of day. */ RTEMS_INLINE_ROUTINE void _TOD_Deactivate( void ) @@ -40,7 +42,7 @@ RTEMS_INLINE_ROUTINE void _TOD_Deactivate( void ) } /** - * This routine activates updating of the current time of day. + * This routine activates updating of the current time of day. */ RTEMS_INLINE_ROUTINE void _TOD_Activate( void ) @@ -49,7 +51,7 @@ RTEMS_INLINE_ROUTINE void _TOD_Activate( void ) } /** - * This routine returns a timeval based upon the internal timespec format TOD. + * This routine returns a timeval based upon the internal timespec format TOD. */ RTEMS_INLINE_ROUTINE void _TOD_Get_timeval( @@ -64,7 +66,7 @@ RTEMS_INLINE_ROUTINE void _TOD_Get_timeval( _Timestamp_To_timeval( snapshot_as_timestamp_ptr, time ); } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/tqdata.inl b/cpukit/score/inline/rtems/score/tqdata.inl index aa7aaf4dc7..c5b85d2786 100644 --- a/cpukit/score/inline/rtems/score/tqdata.inl +++ b/cpukit/score/inline/rtems/score/tqdata.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/tqdata.inl +/** + * @file + * + * @brief Inlined Routines Needed to Support the Thread Queue Data * - * This file contains the static inline implementation of the inlined - * routines needed to support the Thread Queue Data. + * This file contains the static inline implementation of the inlined + * routines needed to support the Thread Queue Data. */ /* @@ -22,13 +24,13 @@ #define _RTEMS_SCORE_TQDATA_INL /** - * @addtogroup ScoreThreadQ - * @{ + * @addtogroup ScoreThreadQ */ +/**@{**/ /** - * This function returns the index of the priority chain on which - * a thread of the_priority should be placed. + * This function returns the index of the priority chain on which + * a thread of the_priority should be placed. */ RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number ( @@ -39,9 +41,9 @@ RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number ( } /** - * This function returns true if the_priority indicates that the - * enqueue search should start at the front of this priority - * group chain, and false if the search should start at the rear. + * This function returns true if the_priority indicates that the + * enqueue search should start at the front of this priority + * group chain, and false if the search should start at the rear. */ RTEMS_INLINE_ROUTINE bool _Thread_queue_Is_reverse_search ( @@ -52,10 +54,10 @@ RTEMS_INLINE_ROUTINE bool _Thread_queue_Is_reverse_search ( } /** - * This routine is invoked to indicate that the specified thread queue is - * entering a critical section. + * This routine is invoked to indicate that the specified thread queue is + * entering a critical section. */ - + RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control *the_thread_queue ) @@ -63,9 +65,7 @@ RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; } -/** - * @} - */ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/watchdog.inl b/cpukit/score/inline/rtems/score/watchdog.inl index e73a419e32..cfee466df2 100644 --- a/cpukit/score/inline/rtems/score/watchdog.inl +++ b/cpukit/score/inline/rtems/score/watchdog.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/watchdog.inl +/** + * @file + * + * @brief Inlined Routines in the Watchdog Handler * - * This file contains the static inline implementation of all inlined - * routines in the Watchdog Handler. + * This file contains the static inline implementation of all inlined + * routines in the Watchdog Handler. */ /* @@ -22,14 +24,14 @@ #define _RTEMS_SCORE_WATCHDOG_INL /** - * @addtogroup ScoreWatchdog + * @addtogroup ScoreWatchdog * @{ */ /** - * This routine initializes the specified watchdog. The watchdog is - * made inactive, the watchdog id and handler routine are set to the - * specified values. + * This routine initializes the specified watchdog. The watchdog is + * made inactive, the watchdog id and handler routine are set to the + * specified values. */ RTEMS_INLINE_ROUTINE void _Watchdog_Initialize( @@ -46,8 +48,8 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Initialize( } /** - * This routine returns true if the watchdog timer is in the ACTIVE - * state, and false otherwise. + * This routine returns true if the watchdog timer is in the ACTIVE + * state, and false otherwise. */ RTEMS_INLINE_ROUTINE bool _Watchdog_Is_active( @@ -60,8 +62,8 @@ RTEMS_INLINE_ROUTINE bool _Watchdog_Is_active( } /** - * This routine activates THE_WATCHDOG timer which is already - * on a watchdog chain. + * This routine activates THE_WATCHDOG timer which is already + * on a watchdog chain. */ RTEMS_INLINE_ROUTINE void _Watchdog_Activate( @@ -74,8 +76,8 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Activate( } /** - * This routine deactivates THE_WATCHDOG timer which will remain - * on a watchdog chain. + * This routine deactivates THE_WATCHDOG timer which will remain + * on a watchdog chain. */ RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( @@ -88,8 +90,8 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate( } /** - * This routine is invoked at each clock tick to update the ticks - * watchdog chain. + * This routine is invoked at each clock tick to update the ticks + * watchdog chain. */ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void ) @@ -100,8 +102,8 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void ) } /** - * This routine is invoked at each clock tick to update the seconds - * watchdog chain. + * This routine is invoked at each clock tick to update the seconds + * watchdog chain. */ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void ) @@ -112,10 +114,10 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void ) } /** - * This routine inserts THE_WATCHDOG into the ticks watchdog chain - * for a time of UNITS ticks. The INSERT_MODE indicates whether - * THE_WATCHDOG is to be activated automatically or later, explicitly - * by the caller. + * This routine inserts THE_WATCHDOG into the ticks watchdog chain + * for a time of UNITS ticks. The INSERT_MODE indicates whether + * THE_WATCHDOG is to be activated automatically or later, explicitly + * by the caller. */ RTEMS_INLINE_ROUTINE void _Watchdog_Insert_ticks( @@ -131,10 +133,10 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Insert_ticks( } /** - * This routine inserts THE_WATCHDOG into the seconds watchdog chain - * for a time of UNITS seconds. The INSERT_MODE indicates whether - * THE_WATCHDOG is to be activated automatically or later, explicitly - * by the caller. + * This routine inserts THE_WATCHDOG into the seconds watchdog chain + * for a time of UNITS seconds. The INSERT_MODE indicates whether + * THE_WATCHDOG is to be activated automatically or later, explicitly + * by the caller. */ RTEMS_INLINE_ROUTINE void _Watchdog_Insert_seconds( @@ -150,9 +152,9 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Insert_seconds( } /** - * This routine adjusts the seconds watchdog chain in the forward - * or backward DIRECTION for UNITS seconds. This is invoked when the - * current time of day is changed. + * This routine adjusts the seconds watchdog chain in the forward + * or backward DIRECTION for UNITS seconds. This is invoked when the + * current time of day is changed. */ RTEMS_INLINE_ROUTINE void _Watchdog_Adjust_seconds( @@ -166,8 +168,8 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Adjust_seconds( } /** - * This routine adjusts the ticks watchdog chain in the forward - * or backward DIRECTION for UNITS ticks. + * This routine adjusts the ticks watchdog chain in the forward + * or backward DIRECTION for UNITS ticks. */ RTEMS_INLINE_ROUTINE void _Watchdog_Adjust_ticks( @@ -181,10 +183,10 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Adjust_ticks( } /** - * This routine resets THE_WATCHDOG timer to its state at INSERT - * time. This routine is valid only on interval watchdog timers - * and is used to make an interval watchdog timer fire "every" so - * many ticks. + * This routine resets THE_WATCHDOG timer to its state at INSERT + * time. This routine is valid only on interval watchdog timers + * and is used to make an interval watchdog timer fire "every" so + * many ticks. */ RTEMS_INLINE_ROUTINE void _Watchdog_Reset( @@ -199,8 +201,8 @@ RTEMS_INLINE_ROUTINE void _Watchdog_Reset( } /** - * This routine returns a pointer to the watchdog timer following - * THE_WATCHDOG on the watchdog chain. + * This routine returns a pointer to the watchdog timer following + * THE_WATCHDOG on the watchdog chain. */ RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Next( @@ -213,8 +215,8 @@ RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Next( } /** - * This routine returns a pointer to the watchdog timer preceding - * THE_WATCHDOG on the watchdog chain. + * This routine returns a pointer to the watchdog timer preceding + * THE_WATCHDOG on the watchdog chain. */ RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Previous( @@ -227,8 +229,8 @@ RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Previous( } /** - * This routine returns a pointer to the first watchdog timer - * on the watchdog chain HEADER. + * This routine returns a pointer to the first watchdog timer + * on the watchdog chain HEADER. */ RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First( @@ -241,8 +243,8 @@ RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First( } /** - * This routine returns a pointer to the last watchdog timer - * on the watchdog chain HEADER. + * This routine returns a pointer to the last watchdog timer + * on the watchdog chain HEADER. */ RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Last( @@ -254,7 +256,7 @@ RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Last( } -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/inline/rtems/score/wkspace.inl b/cpukit/score/inline/rtems/score/wkspace.inl index 5d3748a7a5..16679c8ff3 100644 --- a/cpukit/score/inline/rtems/score/wkspace.inl +++ b/cpukit/score/inline/rtems/score/wkspace.inl @@ -1,8 +1,10 @@ -/** - * @file rtems/score/wkspace.inl +/** + * @file + * + * @brief Inlined Routines Associated with the RAM Workspace * - * This include file contains the bodies of the routines which contains - * information related to the RAM Workspace. + * This include file contains the bodies of the routines which contains + * information related to the RAM Workspace. */ /* @@ -22,11 +24,12 @@ #define _RTEMS_SCORE_WKSPACE_INL /** - * @addtogroup ScoreWorkspace + * @addtogroup ScoreWorkspace + * * @{ */ -/**@}*/ +/** @} */ #endif /* end of include file */ diff --git a/cpukit/score/src/objectshrinkinformation.c b/cpukit/score/src/objectshrinkinformation.c index de32f24d8d..466a85df74 100644 --- a/cpukit/score/src/objectshrinkinformation.c +++ b/cpukit/score/src/objectshrinkinformation.c @@ -34,12 +34,9 @@ void _Objects_Shrink_information( Objects_Information *information ) { - Objects_Control *the_object; - Objects_Control *extract_me; uint32_t block_count; uint32_t block; uint32_t index_base; - uint32_t index; /* * Search the list to find block or chunk with all objects inactive. @@ -52,25 +49,24 @@ void _Objects_Shrink_information( for ( block = 0; block < block_count; block++ ) { if ( information->inactive_per_block[ block ] == information->allocation_size ) { + Chain_Node *node = _Chain_First( &information->Inactive ); + const Chain_Node *tail = _Chain_Immutable_tail( &information->Inactive ); + uint32_t index_end = index_base + information->allocation_size; - /* - * Assume the Inactive chain is never empty at this point - */ - the_object = (Objects_Control *) _Chain_First( &information->Inactive ); + while ( node != tail ) { + Objects_Control *object = (Objects_Control *) node; + uint32_t index = _Objects_Get_index( object->id ); + + /* + * Get the next node before the node is extracted + */ + node = _Chain_Next( node ); + + if ( index >= index_base && index < index_end ) { + _Chain_Extract( &object->Node ); + } + } - do { - index = _Objects_Get_index( the_object->id ); - /* - * Get the next node before the node is extracted - */ - extract_me = the_object; - the_object = (Objects_Control *) the_object->Node.next; - if ((index >= index_base) && - (index < (index_base + information->allocation_size))) { - _Chain_Extract( &extract_me->Node ); - } - } - while ( the_object ); /* * Free the memory and reset the structures in the object' information */ diff --git a/cpukit/score/src/rbtreefind.c b/cpukit/score/src/rbtreefind.c index 2e8cdc3bff..2eb92a5ac5 100644 --- a/cpukit/score/src/rbtreefind.c +++ b/cpukit/score/src/rbtreefind.c @@ -23,8 +23,8 @@ #include <rtems/score/isr.h> RBTree_Node *_RBTree_Find( - RBTree_Control *the_rbtree, - RBTree_Node *search_node + const RBTree_Control *the_rbtree, + const RBTree_Node *search_node ) { ISR_Level level; @@ -36,3 +36,27 @@ RBTree_Node *_RBTree_Find( _ISR_Enable( level ); return return_node; } + +RBTree_Node *_RBTree_Find_unprotected( + const RBTree_Control *the_rbtree, + const RBTree_Node *the_node +) +{ + RBTree_Node* iter_node = the_rbtree->root; + RBTree_Node* found = NULL; + int compare_result; + while (iter_node) { + compare_result = the_rbtree->compare_function(the_node, iter_node); + if ( _RBTree_Is_equal( compare_result ) ) { + found = iter_node; + if ( the_rbtree->is_unique ) + break; + } + + RBTree_Direction dir = + (RBTree_Direction) _RBTree_Is_greater( compare_result ); + iter_node = iter_node->child[dir]; + } /* while(iter_node) */ + + return found; +} diff --git a/doc/user/fatal.t b/doc/user/fatal.t index 1b725e89f4..20faa642ba 100644 --- a/doc/user/fatal.t +++ b/doc/user/fatal.t @@ -230,6 +230,33 @@ Prints the exception frame via printk(). @c @c @page +@subsection FATAL_SOURCE_DESCRIPTION - Returns a description for a fatal source + +@cindex fatal error + +@subheading CALLING SEQUENCE: + +@ifset is-C +@findex rtems_fatal_source_description +@example +const char *rtems_fatal_source_description( + rtems_fatal_source source +); +@end example +@end ifset + +@subheading DIRECTIVE STATUS CODES + +The fatal source description or "?" in case the passed fatal source is invalid. + +@subheading DESCRIPTION: + +Returns a description for a fatal source. + +@c +@c +@c +@page @subsection INTERNAL_ERROR_DESCRIPTION - Returns a description for an internal error code @cindex fatal error diff --git a/testsuites/fstests/fsrdwr/init.c b/testsuites/fstests/fsrdwr/init.c index 1ab9ccbb6b..2bdaeaa197 100644 --- a/testsuites/fstests/fsrdwr/init.c +++ b/testsuites/fstests/fsrdwr/init.c @@ -291,6 +291,8 @@ truncate_test03 (void) */ status = chdir (".."); rtems_test_assert (status == 0); + + free(readbuf); } static void @@ -518,6 +520,8 @@ lseek_test (void) rtems_test_assert (status == 0); test_case_leave (); + + free(readbuf); } static void diff --git a/testsuites/fstests/imfs_fserror/imfs_fserror.scn b/testsuites/fstests/imfs_fserror/imfs_fserror.scn new file mode 100644 index 0000000000..040ea13041 --- /dev/null +++ b/testsuites/fstests/imfs_fserror/imfs_fserror.scn @@ -0,0 +1,94 @@ +*** FILE SYSTEM TEST ( IMFS ) *** +Initializing filesystem IMFS + + +*** ERROR TEST *** +Testing open with arguments: "name01, O_CREAT | O_EXCL" EXPECT "EEXIST" +PASS +Testing mkdir with arguments: "name01, mode" EXPECT "EEXIST" +PASS +Testing open with arguments: "name02, O_WRONLY" EXPECT "EISDIR" +PASS +Testing open with arguments: "name02, O_RDWR" EXPECT "EISDIR" +PASS +Testing open with arguments: "name, O_WRONLY" EXPECT "ENOENT" +PASS +Testing open with arguments: "\"\", O_WRONLY" EXPECT "ENOENT" +PASS +Testing open with arguments: "name03, O_WRONLY" EXPECT "ENOENT" +PASS +Testing mkdir with arguments: "name, mode" EXPECT "ENOENT" +PASS +Testing mkdir with arguments: "\"\", mode" EXPECT "ENOENT" +PASS +Testing open with arguments: "name, O_WRONLY" EXPECT "ENOTDIR" +PASS +Testing mkdir with arguments: "name, mode" EXPECT "ENOTDIR" +PASS +Testing close with arguments: "-1" EXPECT "EBADF" +PASS +Testing close with arguments: "100" EXPECT "EBADF" +PASS +Testing rename with arguments: "name01, name" EXPECT "EINVAL" +FAIL ../../../../../../../rtems/c/src/../../testsuites/fstests/imfs_fserror/../fserror/test.c: 156 +Testing rename with arguments: "name03, name02" EXPECT "EISDIR" +FAIL ../../../../../../../rtems/c/src/../../testsuites/fstests/imfs_fserror/../fserror/test.c: 164 +Testing rename with arguments: "nonexistence, name01" EXPECT "ENOENT" +FAIL ../../../../../../../rtems/c/src/../../testsuites/fstests/imfs_fserror/../fserror/test.c: 171 +Testing rename with arguments: "\"\", name01" EXPECT "ENOENT" +FAIL ../../../../../../../rtems/c/src/../../testsuites/fstests/imfs_fserror/../fserror/test.c: 172 +Testing rename with arguments: "name01, \"\"" EXPECT "ENOENT" +PASS +Testing rename with arguments: "name, name03" EXPECT "ENOTDIR" +FAIL ../../../../../../../rtems/c/src/../../testsuites/fstests/imfs_fserror/../fserror/test.c: 182 +Testing rename with arguments: "name03, name" EXPECT "ENOTDIR" +PASS +Testing rename with arguments: "name02, name03" EXPECT "ENOTDIR" +FAIL ../../../../../../../rtems/c/src/../../testsuites/fstests/imfs_fserror/../fserror/test.c: 184 +Testing truncate with arguments: "file, -1" EXPECT "EINVAL" +PASS +Testing rmdir with arguments: "\"..\"" EXPECT "ENOTEMPTY" +PASS +Testing rmdir with arguments: "\"tmp\"" EXPECT "ENOTEMPTY" +PASS +Testing rmdir with arguments: "\".\"" EXPECT "EINVAL" +PASS +Testing rmdir with arguments: "\"tmp/.\"" EXPECT "EINVAL" +PASS +Testing rmdir with arguments: "\"\"" EXPECT "ENOENT" +PASS +Testing rmdir with arguments: "nonexistence" EXPECT "ENOENT" +PASS +Testing unlink with arguments: "\"\"" EXPECT "ENOENT" +PASS +Testing unlink with arguments: "nonexistence" EXPECT "ENOENT" +PASS +Testing rmdir with arguments: "\"tmp/file\"" EXPECT "ENOTDIR" +PASS +Testing unlink with arguments: "\"tmp/file/dir\"" EXPECT "ENOTDIR" +PASS +Testing read with arguments: "fd, readbuf, 10" EXPECT "EBADF" +PASS +Testing read with arguments: "100, readbuf, 10" EXPECT "EBADF" +PASS +Testing write with arguments: "fd, databuf, 10" EXPECT "EBADF" +PASS +Testing write with arguments: "fd, readbuf, 10" EXPECT "EBADF" +PASS +Testing lseek with arguments: "fd, -100, SEEK_END" EXPECT "EINVAL" +PASS +Testing lseek with arguments: "fd, -100, SEEK_CUR" EXPECT "EINVAL" +PASS +Testing lseek with arguments: "fd, -100, SEEK_SET" EXPECT "EINVAL" +PASS +Testing lseek with arguments: "fd, huge, SEEK_END" EXPECT "EOVERFLOW" +PASS +Testing lseek with arguments: "fd, huge, SEEK_CUR" EXPECT "EOVERFLOW" +PASS +Testing lseek with arguments: "fd, 0, SEEK_SET" EXPECT "EBADF" +PASS +*** END OF ERROR TEST *** + + +Shutting down filesystem IMFS +*** END OF FILE SYSTEM TEST ( IMFS ) *** diff --git a/testsuites/fstests/imfs_fslink/imfs_fslink.scn b/testsuites/fstests/imfs_fslink/imfs_fslink.scn new file mode 100644 index 0000000000..7850d63b59 --- /dev/null +++ b/testsuites/fstests/imfs_fslink/imfs_fslink.scn @@ -0,0 +1,15 @@ +*** FILE SYSTEM TEST ( IMFS ) *** +Initializing filesystem IMFS + + +*** LINK TEST *** +link creates hardlinks +test if the stat is the same +chmod and chown +unlink then stat the file +*** END OF LINK TEST *** + + +Shutting down filesystem IMFS +*** END OF FILE SYSTEM TEST ( IMFS ) *** + diff --git a/testsuites/fstests/imfs_fspatheval/imfs_fspathenval.scn b/testsuites/fstests/imfs_fspatheval/imfs_fspathenval.scn new file mode 100644 index 0000000000..1fb40cefff --- /dev/null +++ b/testsuites/fstests/imfs_fspatheval/imfs_fspathenval.scn @@ -0,0 +1,81 @@ +*** FILE SYSTEM TEST ( IMFS ) *** +Initializing filesystem IMFS + + +*** PATH EVALUATION TEST *** +Making directory /test1/ +Making directory tets2 +Making directory ///test3 +Making directory test4//// +Making directory ../../test5 +Making directory /test1/../test6 +Making directory ./test7/ +Making directory .././test8 +Making directory test8/./../test9 +Making directory ///test9/../test10 + +Making directory !#$%&()-@^_`{}~' +Making directory 0_1_A +Making directory aaa bbb +Making directory ccc....ddd +Making directory fff + +Removing directory test10 +Removing directory test9 +Removing directory test8 +Removing directory test7 +Removing directory test6 +Removing directory test5 +Removing directory test4 +Removing directory test3 +Removing directory tets2 +Removing directory test1 + +Removing directory fff +Removing directory ccc....ddd +Removing directory aaa bbb +Removing directory 0_1_A +Removing directory !#$%&()-@^_`{}~' + +Create file /test1 +Create file tets2 +Create file ///test3 +Create file test4 +Create file ../../test5 +Create file /../test6 +Create file ./test7 +Create file .././test8 +Create file /./../test9 +Create file //../test10 + +Create file !#$%&()-@^_`{}~' +Create file 0_1_A +Create file aaa bbb +Create file ccc....ddd +Create file fff + +Removing file test10 +Removing file test9 +Removing file test8 +Removing file test7 +Removing file test6 +Removing file test5 +Removing file test4 +Removing file test3 +Removing file tets2 +Removing file test1 + +Removing file fff +Removing file ccc....ddd +Removing file aaa bbb +Removing file 0_1_A +Removing file !#$%&()-@^_`{}~' + +mkdir /tmp/a/b +cd /tmp +*** END OF PATH EVALUATION TEST *** + + +Shutting down filesystem IMFS +*** END OF FILE SYSTEM TEST ( IMFS ) *** + diff --git a/testsuites/fstests/imfs_fspermission/imfs_fspermission.scn b/testsuites/fstests/imfs_fspermission/imfs_fspermission.scn new file mode 100644 index 0000000000..87120ea5f7 --- /dev/null +++ b/testsuites/fstests/imfs_fspermission/imfs_fspermission.scn @@ -0,0 +1,52 @@ +*** FILE SYSTEM TEST ( IMFS ) *** +Initializing filesystem IMFS + + +*** PERMISSION TEST *** +The previous cmask is 022 +The file mode of file01 is 755 +The file mode of file02 is 755 +The file mode of dir01 is 755 +The previous cmask is 321 +The file mode of file01 is 456 +The file mode of file02 is 456 +The file mode of dir01 is 456 +The file mode of file01 is 777 +The file mode of file02 is 240 +The file mode of dir01 is 340 +Testing open with arguments: "file02,O_RDONLY" EXPECT "EACCES" +PASS +Testing open with arguments: "file02,O_RDWR" EXPECT "EACCES" +PASS +Change euid and check +Testing open with arguments: "file02,O_WRONLY" EXPECT "EACCES" +PASS +Testing open with arguments: "file02,O_RDWR" EXPECT "EACCES" +PASS +Testing creat with arguments: "path,mode" EXPECT "EACCES" +PASS +Testing rename with arguments: "path,\"test\"" EXPECT "EACCES" +PASS +Testing truncate with arguments: "path,0" EXPECT "EACCES" +PASS +Testing link with arguments: "path,\"test\"" EXPECT "EACCES" +PASS +Testing unlink with arguments: "path" EXPECT "EACCES" +PASS +Change egid and check +Testing open with arguments: "file02,O_WRONLY" EXPECT "EACCES" +PASS +Testing open with arguments: "file02,O_RDONLY" EXPECT "EACCES" +PASS +Testing open with arguments: "file02,O_RDWR" EXPECT "EACCES" +PASS +Testing creat with arguments: "path,mode" EXPECT "EACCES" +PASS +The directory file mode is 777 +The directory file mode is 321 +*** END OF PERMISSION TEST *** + + +Shutting down filesystem IMFS +*** END OF FILE SYSTEM TEST ( IMFS ) *** + diff --git a/testsuites/fstests/imfs_fsrdwr/imfs_fsrdwr.scn b/testsuites/fstests/imfs_fsrdwr/imfs_fsrdwr.scn new file mode 100644 index 0000000000..d0bef8e204 --- /dev/null +++ b/testsuites/fstests/imfs_fsrdwr/imfs_fsrdwr.scn @@ -0,0 +1,22 @@ +*** FILE SYSTEM TEST ( IMFS ) *** +Initializing filesystem IMFS +test case: read_write_test +test case: lseek_test +Create a new file +Writing 2430 bytes to file +Successfully wrote 2430 +Check the current position +2431 +test case: truncate_test03 +test case: truncate_to_zero +test case: block_read_and_write +test case: block_rw_case_0 +test case: block_rw_case_1 +test case: block_rw_case_2 +test case: block_rw_case_3 +test case: block_rw_case_4 + + +Shutting down filesystem IMFS +*** END OF FILE SYSTEM TEST ( IMFS ) *** + diff --git a/testsuites/fstests/imfs_fstime/imfs_fstime.scn b/testsuites/fstests/imfs_fstime/imfs_fstime.scn new file mode 100644 index 0000000000..845df58044 --- /dev/null +++ b/testsuites/fstests/imfs_fstime/imfs_fstime.scn @@ -0,0 +1,12 @@ +*** FILE SYSTEM TEST ( IMFS ) *** +Initializing filesystem IMFS + + +*** TIME TEST *** +Sleep a few seconds +*** END OF TIME TEST *** + + +Shutting down filesystem IMFS +*** END OF FILE SYSTEM TEST ( IMFS ) *** + diff --git a/testsuites/fstests/mdosfs_support/fs_support.c b/testsuites/fstests/mdosfs_support/fs_support.c index 62370c9a9b..27882b8216 100644 --- a/testsuites/fstests/mdosfs_support/fs_support.c +++ b/testsuites/fstests/mdosfs_support/fs_support.c @@ -18,6 +18,7 @@ #include <rtems/libio.h> #include <rtems/dosfs.h> +#include <rtems/libcsupport.h> #include "ramdisk_support.h" #include "fstest.h" @@ -25,18 +26,20 @@ #define BLOCK_SIZE 512 -msdos_format_request_param_t rqdata = { - OEMName: "RTEMS", - VolLabel: "RTEMSDisk", - sectors_per_cluster: 2, - fat_num: 0, - files_per_root_dir: 0, - media: 0, - quick_format: FALSE, - skip_alignment: 0, - info_level: 0 +static const msdos_format_request_param_t rqdata = { + .OEMName = "RTEMS", + .VolLabel = "RTEMSDisk", + .sectors_per_cluster = 2, + .fat_num = 0, + .files_per_root_dir = 0, + .media = 0, + .quick_format = true, + .skip_alignment = 0, + .info_level = 0 }; +static rtems_resource_snapshot before_mount; + void test_initialize_filesystem(void) { int rc=0; @@ -48,6 +51,8 @@ void test_initialize_filesystem(void) rc=msdos_format(RAMDISK_PATH,&rqdata); rtems_test_assert(rc==0); + rtems_resource_snapshot_take(&before_mount); + rc=mount(RAMDISK_PATH, BASE_FOR_TEST, "dosfs", @@ -62,6 +67,7 @@ void test_shutdown_filesystem(void) int rc=0; rc=unmount(BASE_FOR_TEST) ; rtems_test_assert(rc==0); + rtems_test_assert(rtems_resource_snapshot_check(&before_mount)); del_ramdisk(); } diff --git a/testsuites/fstests/mimfs_fslink/mimfs_fslink.scn b/testsuites/fstests/mimfs_fslink/mimfs_fslink.scn new file mode 100644 index 0000000000..d0a6f1e395 --- /dev/null +++ b/testsuites/fstests/mimfs_fslink/mimfs_fslink.scn @@ -0,0 +1,10 @@ +*** FILE SYSTEM TEST ( MOUNTED IMFS ) *** +Initializing filesystem MOUNTED IMFS + + +*** LINK TEST *** +link creates hardlinks +test if the stat is the same +chmod and chown +unlink then stat the file +*** END OF LINK TEST *** diff --git a/testsuites/fstests/mimfs_fspatheval/mimfs_fspatheval.scn b/testsuites/fstests/mimfs_fspatheval/mimfs_fspatheval.scn new file mode 100644 index 0000000000..c81e4950aa --- /dev/null +++ b/testsuites/fstests/mimfs_fspatheval/mimfs_fspatheval.scn @@ -0,0 +1,76 @@ +*** FILE SYSTEM TEST ( MOUNTED IMFS ) *** +Initializing filesystem MOUNTED IMFS + + +*** PATH EVALUATION TEST *** +Making directory /test1/ +Making directory tets2 +Making directory ///test3 +Making directory test4//// +Making directory ../../test5 +Making directory /test1/../test6 +Making directory ./test7/ +Making directory .././test8 +Making directory test8/./../test9 +Making directory ///test9/../test10 + +Making directory !#$%&()-@^_`{}~' +Making directory 0_1_A +Making directory aaa bbb +Making directory ccc....ddd +Making directory fff + +Removing directory test10 +Removing directory test9 +Removing directory test8 +Removing directory test7 +Removing directory test6 +Removing directory test5 +Removing directory test4 +Removing directory test3 +Removing directory tets2 +Removing directory test1 + +Removing directory fff +Removing directory ccc....ddd +Removing directory aaa bbb +Removing directory 0_1_A +Removing directory !#$%&()-@^_`{}~' + +Create file /test1 +Create file tets2 +Create file ///test3 +Create file test4 +Create file ../../test5 +Create file /../test6 +Create file ./test7 +Create file .././test8 +Create file /./../test9 +Create file //../test10 + +Create file !#$%&()-@^_`{}~' +Create file 0_1_A +Create file aaa bbb +Create file ccc....ddd +Create file fff + +Removing file test10 +Removing file test9 +Removing file test8 +Removing file test7 +Removing file test6 +Removing file test5 +Removing file test4 +Removing file test3 +Removing file tets2 +Removing file test1 + +Removing file fff +Removing file ccc....ddd +Removing file aaa bbb +Removing file 0_1_A +Removing file !#$%&()-@^_`{}~' + +mkdir /tmp/a/b +cd /tmp +*** END OF PATH EVALUATION TEST *** diff --git a/testsuites/fstests/mimfs_fspermission/mimfs_fspermission-interupted.scn b/testsuites/fstests/mimfs_fspermission/mimfs_fspermission-interupted.scn new file mode 100644 index 0000000000..e425aa7b07 --- /dev/null +++ b/testsuites/fstests/mimfs_fspermission/mimfs_fspermission-interupted.scn @@ -0,0 +1,47 @@ +*** FILE SYSTEM TEST ( MOUNTED IMFS ) *** +Initializing filesystem MOUNTED IMFS + + +*** PERMISSION TEST *** +The previous cmask is 022 +The file mode of file01 is 755 +The file mode of file02 is 755 +The file mode of dir01 is 755 +The previous cmask is 321 +The file mode of file01 is 456 +The file mode of file02 is 456 +The file mode of dir01 is 456 +The file mode of file01 is 777 +The file mode of file02 is 240 +The file mode of dir01 is 340 +Testing open with arguments: "file02,O_RDONLY" EXPECT "EACCES" +PASS +Testing open with arguments: "file02,O_RDWR" EXPECT "EACCES" +PASS +Change euid and check +Testing open with arguments: "file02,O_WRONLY" EXPECT "EACCES" +PASS +Testing open with arguments: "file02,O_RDWR" EXPECT "EACCES" +PASS +Testing creat with arguments: "path,mode" EXPECT "EACCES" +PASS +Testing rename with arguments: "path,\"test\"" EXPECT "EACCES" +PASS +Testing truncate with arguments: "path,0" EXPECT "EACCES" +PASS +Testing link with arguments: "path,\"test\"" EXPECT "EACCES" +PASS +Testing unlink with arguments: "path" EXPECT "EACCES" +PASS +Change egid and check +Testing open with arguments: "file02,O_WRONLY" EXPECT "EACCES" +PASS +Testing open with arguments: "file02,O_RDONLY" EXPECT "EACCES" +PASS +Testing open with arguments: "file02,O_RDWR" EXPECT "EACCES" +PASS +Testing creat with arguments: "path,mode" EXPECT "EACCES" +PASS +The directory file mode is 777 +The directory file mode is 321 +*** END OF PERMISSION TEST *** diff --git a/testsuites/fstests/mimfs_fsrdwr/mimfs_fsrdwr.scn b/testsuites/fstests/mimfs_fsrdwr/mimfs_fsrdwr.scn new file mode 100644 index 0000000000..37ea03cfa6 --- /dev/null +++ b/testsuites/fstests/mimfs_fsrdwr/mimfs_fsrdwr.scn @@ -0,0 +1,21 @@ +*** FILE SYSTEM TEST ( MOUNTED IMFS ) *** +Initializing filesystem MOUNTED IMFS +test case: read_write_test +test case: lseek_test +Create a new file +Writing 2430 bytes to file +Successfully wrote 2430 +Check the current position +2431 +test case: truncate_test03 +test case: truncate_to_zero +test case: block_read_and_write +test case: block_rw_case_0 +test case: block_rw_case_1 +test case: block_rw_case_2 +test case: block_rw_case_3 +test case: block_rw_case_4 + + +Shutting down filesystem MOUNTED IMFS +*** END OF FILE SYSTEM TEST ( MOUNTED IMFS ) *** diff --git a/testsuites/fstests/mimfs_fssymlink/mimfs_fssymlink.scn b/testsuites/fstests/mimfs_fssymlink/mimfs_fssymlink.scn new file mode 100644 index 0000000000..c18037dacf --- /dev/null +++ b/testsuites/fstests/mimfs_fssymlink/mimfs_fssymlink.scn @@ -0,0 +1,31 @@ +*** FILE SYSTEM TEST ( MOUNTED IMFS ) *** +Initializing filesystem MOUNTED IMFS + + +*** SYMLINK TEST *** +Create a file named file +Create a symlink named symlink to file +call readlink +file +Unlink the file +call readlink +Create a dir named file +Create a symlink named symlink to file +call readlink +rmdir the dir +symlink loop erro test +Testing creat with arguments: "path,mode" EXPECT "ELOOP" +PASS +Testing open with arguments: "path,O_CREAT|O_WRONLY,mode" EXPECT "ELOOP" +PASS +Testing truncate with arguments: "path,0" EXPECT "ELOOP" +PASS +Testing rename with arguments: "path,file04" EXPECT "ELOOP" +FAIL ../../../../../../../rtems/c/src/../../testsuites/fstests/mimfs_fssymlink/../fssymlink/test.c: 151 +Testing unlink with arguments: "path" EXPECT "ELOOP" +PASS +Testing mkdir with arguments: "path,mode" EXPECT "ELOOP" +PASS +Testing rmdir with arguments: "path" EXPECT "ELOOP" +PASS +*** END OF SYMLINK TEST *** diff --git a/testsuites/fstests/mimfs_fstime/mimfs_fstime.scn b/testsuites/fstests/mimfs_fstime/mimfs_fstime.scn new file mode 100644 index 0000000000..74a503935b --- /dev/null +++ b/testsuites/fstests/mimfs_fstime/mimfs_fstime.scn @@ -0,0 +1,7 @@ +*** FILE SYSTEM TEST ( MOUNTED IMFS ) *** +Initializing filesystem MOUNTED IMFS + + +*** TIME TEST *** +Sleep a few seconds +*** END OF TIME TEST *** diff --git a/testsuites/fstests/support/fstest_support.c b/testsuites/fstests/support/fstest_support.c index 51f19c1105..cbd832687a 100644 --- a/testsuites/fstests/support/fstest_support.c +++ b/testsuites/fstests/support/fstest_support.c @@ -16,11 +16,12 @@ #include <fcntl.h> #include <string.h> #include <unistd.h> -#include <stdlib.h> /* exit */ +#include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> -#include "rtems.h" +#include <rtems.h> +#include <rtems/userenv.h> #include "fstest_support.h" #include "fs_config.h" @@ -31,7 +32,17 @@ /* Break out of a chroot() environment in C */ static void break_out_of_chroot(void) { - chroot("/"); + int rv; + struct stat st; + + rtems_libio_use_global_env(); + + /* Perform deferred global location releases */ + rv = stat(".", &st); + rtems_test_assert(rv == 0); + + /* Perform deferred memory frees */ + free(malloc(1)); } /* diff --git a/testsuites/fstests/support/ramdisk_support.c b/testsuites/fstests/support/ramdisk_support.c index 339c63a6cb..17dbb67820 100644 --- a/testsuites/fstests/support/ramdisk_support.c +++ b/testsuites/fstests/support/ramdisk_support.c @@ -11,6 +11,9 @@ #include "config.h" #endif +#include <sys/stat.h> +#include <fcntl.h> + #include <rtems/ramdisk.h> #include <rtems/blkdev.h> #include <rtems/libio.h> @@ -25,6 +28,20 @@ dev_t dev = 0; +static void initialize_swapout_task(void) +{ + int fd = open(RAMDISK_PATH, O_RDONLY); + int rv = 0; + + rtems_test_assert(fd >= 0); + + rv = rtems_disk_fd_sync(fd); + rtems_test_assert(rv == 0); + + rv = close(fd); + rtems_test_assert(rv == 0); +} + void init_ramdisk (void) { @@ -36,6 +53,8 @@ init_ramdisk (void) false, RAMDISK_PATH, &dev); rtems_test_assert (rc == 0); + + initialize_swapout_task(); } void diff --git a/testsuites/libtests/ftp01/ftp01.scn b/testsuites/libtests/ftp01/ftp01.scn index a3292961c8..a27da4b698 100644 --- a/testsuites/libtests/ftp01/ftp01.scn +++ b/testsuites/libtests/ftp01/ftp01.scn @@ -17,6 +17,8 @@ USER anonymous 230 User logged in. TYPE I 200 Type set to I. +SIZE a.txt +213 1102 PASV 227 Entering passive mode (127,0,0,1,4,4). RETR a.txt @@ -41,6 +43,8 @@ USER anonymous 230 User logged in. TYPE I 200 Type set to I. +SIZE b.txt +213 1102 PASV 227 Entering passive mode (127,0,0,1,4,10). RETR b.txt diff --git a/testsuites/libtests/ftp01/init.c b/testsuites/libtests/ftp01/init.c index 354c0f045a..369aebe92a 100644 --- a/testsuites/libtests/ftp01/init.c +++ b/testsuites/libtests/ftp01/init.c @@ -104,7 +104,7 @@ static void change_self_priority(void) rtems_test_assert(sc == RTEMS_SUCCESSFUL); } -static void create_file(const char *path) +static void create_file(const char *path, const void *begin, size_t size) { int rv = 0; int fd = open(path, O_WRONLY); @@ -112,8 +112,8 @@ static void create_file(const char *path) rtems_test_assert(fd >= 0); - n = write(fd, &content [0], sizeof(content)); - rtems_test_assert(n == (ssize_t) sizeof(content)); + n = write(fd, begin, size); + rtems_test_assert(n == (ssize_t) size); rv = close(fd); rtems_test_assert(rv == 0); @@ -126,15 +126,33 @@ static void copy_file(const char *src_path, const char *dest_path) int out = open(dest_path, O_WRONLY); ssize_t n_in = 0; char buf [64]; + struct stat st_in; + struct stat st_out; + + memset(&st_in, 0xff, sizeof(st_in)); + memset(&st_out, 0xff, sizeof(st_out)); rtems_test_assert(in >= 0); rtems_test_assert(out >= 0); + rv = fstat(out, &st_out); + rtems_test_assert(rv == 0); + + rtems_test_assert(st_out.st_size == 0); + while ((n_in = read(in, buf, sizeof(buf))) > 0) { ssize_t n_out = write(out, buf, (size_t) n_in); rtems_test_assert(n_out == n_in); } + rv = fstat(out, &st_out); + rtems_test_assert(rv == 0); + + rv = fstat(in, &st_in); + rtems_test_assert(rv == 0); + + rtems_test_assert(st_in.st_size == st_out.st_size); + rv = close(out); rtems_test_assert(rv == 0); @@ -189,7 +207,7 @@ static void test(void) initialize_ftpfs(); change_self_priority(); - create_file(file_a); + create_file(file_a, &content [0], sizeof(content)); copy_file(file_a, file_b); check_file(file_b); check_file_size(file_a, sizeof(content)); diff --git a/testsuites/libtests/stackchk/init.c b/testsuites/libtests/stackchk/init.c index 1551eecb37..772b039592 100644 --- a/testsuites/libtests/stackchk/init.c +++ b/testsuites/libtests/stackchk/init.c @@ -86,7 +86,11 @@ rtems_task Init( directive_failed( status, "rtems_task_delete of RTEMS_SELF" ); } -void Fatal_extension( uint32_t source, bool is_internal, uint32_t error ) +void Fatal_extension( + rtems_fatal_source source, + bool is_internal, + rtems_fatal_code error +) { if ( source != RTEMS_FATAL_SOURCE_STACK_CHECKER ) { printk( "unexpected fatal source\n" ); diff --git a/testsuites/libtests/stackchk/system.h b/testsuites/libtests/stackchk/system.h index 95babb8a0c..16b623ae2d 100644 --- a/testsuites/libtests/stackchk/system.h +++ b/testsuites/libtests/stackchk/system.h @@ -41,7 +41,11 @@ void blow_stack( void ); #define CONFIGURE_STACK_CHECKER_ENABLED -void Fatal_extension( uint32_t source, bool is_internal, uint32_t error ); +void Fatal_extension( + rtems_fatal_source source, + bool is_internal, + rtems_fatal_code error +); #define CONFIGURE_INITIAL_EXTENSIONS \ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, Fatal_extension } diff --git a/testsuites/psxtests/psxbarrier01/psxtmbarrier01.scn b/testsuites/psxtests/psxbarrier01/psxtmbarrier01.scn new file mode 100644 index 0000000000..cbae9a718c --- /dev/null +++ b/testsuites/psxtests/psxbarrier01/psxtmbarrier01.scn @@ -0,0 +1,5 @@ +*** POSIX TIME TEST PSXTMBARRIER 01 *** +pthread_barrier_init 20 +pthread_barrier_destroy 21 +*** END OF POSIX TIME TEST PSXTMBARRIER 01 *** + diff --git a/testsuites/psxtests/psxfatal_support/init.c b/testsuites/psxtests/psxfatal_support/init.c index ee1e33e708..93645e61ca 100644 --- a/testsuites/psxtests/psxfatal_support/init.c +++ b/testsuites/psxtests/psxfatal_support/init.c @@ -34,12 +34,6 @@ void *POSIX_Init( rtems_test_exit(0); } -char *Sources[] = { - "INTERNAL_ERROR_CORE", - "INTERNAL_ERROR_RTEMS_API", - "INTERNAL_ERROR_POSIX_API", -}; - char *Errors_Rtems[] = { "RTEMS_SUCCESSFUL", /* successful completion */ "RTEMS_TASK_EXITTED", /* returned from a task */ @@ -84,19 +78,15 @@ void Put_Error( uint32_t source, uint32_t error ) } } -void Put_Source( uint32_t source ) +void Put_Source( rtems_fatal_source source ) { - if ( source > INTERNAL_ERROR_POSIX_API ) - printk("Unknown Source (%d)", source); - else - printk( Sources[ source ] ); + printk( "%s", rtems_fatal_source_description( source ) ); } - void Fatal_extension( - uint32_t source, - bool is_internal, - uint32_t error + rtems_fatal_source source, + bool is_internal, + rtems_fatal_code error ) { print_test_begin_message(); diff --git a/testsuites/psxtests/psxfatal_support/system.h b/testsuites/psxtests/psxfatal_support/system.h index d791b19a89..e7ba4b12f7 100644 --- a/testsuites/psxtests/psxfatal_support/system.h +++ b/testsuites/psxtests/psxfatal_support/system.h @@ -24,7 +24,7 @@ /* functions */ void force_error(void); -void Put_Source(uint32_t source); +void Put_Source( rtems_fatal_source source ); void Put_Error( uint32_t source, @@ -36,9 +36,9 @@ void *POSIX_Init( ); void Fatal_extension( - uint32_t source, - bool is_internal, - uint32_t error + rtems_fatal_source source, + bool is_internal, + rtems_fatal_code error ); /* need prototypes */ diff --git a/testsuites/psxtmtests/Makefile.am b/testsuites/psxtmtests/Makefile.am index 72340ab0c7..be21fa286b 100644 --- a/testsuites/psxtmtests/Makefile.am +++ b/testsuites/psxtmtests/Makefile.am @@ -6,6 +6,13 @@ if HAS_POSIX SUBDIRS += psxtmbarrier01 SUBDIRS += psxtmbarrier02 SUBDIRS += psxtmbarrier03 +SUBDIRS += psxtmcond01 +SUBDIRS += psxtmcond02 +SUBDIRS += psxtmcond03 +SUBDIRS += psxtmcond05 +SUBDIRS += psxtmcond08 +SUBDIRS += psxtmcond09 +SUBDIRS += psxtmcond10 SUBDIRS += psxtmkey01 SUBDIRS += psxtmkey02 SUBDIRS += psxtmmq01 @@ -33,6 +40,7 @@ SUBDIRS += psxtmsem05 SUBDIRS += psxtmsleep01 SUBDIRS += psxtmsleep02 SUBDIRS += psxtmthread01 +SUBDIRS += psxtmthread02 SUBDIRS += psxtmthread03 endif diff --git a/testsuites/psxtmtests/configure.ac b/testsuites/psxtmtests/configure.ac index 9e59681a7f..9eedb89fa1 100644 --- a/testsuites/psxtmtests/configure.ac +++ b/testsuites/psxtmtests/configure.ac @@ -80,6 +80,13 @@ AC_CONFIG_FILES([Makefile psxtmbarrier01/Makefile psxtmbarrier02/Makefile psxtmbarrier03/Makefile +psxtmcond01/Makefile +psxtmcond02/Makefile +psxtmcond03/Makefile +psxtmcond05/Makefile +psxtmcond08/Makefile +psxtmcond09/Makefile +psxtmcond10/Makefile psxtmkey01/Makefile psxtmkey02/Makefile psxtmmq01/Makefile @@ -107,6 +114,7 @@ psxtmsem05/Makefile psxtmsleep01/Makefile psxtmsleep02/Makefile psxtmthread01/Makefile +psxtmthread02/Makefile psxtmthread03/Makefile ]) AC_OUTPUT diff --git a/testsuites/psxtmtests/psxtmbarrier02/psxtmbarrier02.scn b/testsuites/psxtmtests/psxtmbarrier02/psxtmbarrier02.scn new file mode 100644 index 0000000000..09b010d387 --- /dev/null +++ b/testsuites/psxtmtests/psxtmbarrier02/psxtmbarrier02.scn @@ -0,0 +1,3 @@ +*** POSIX TIME PSXTMBARRIER 02 *** +pthread_barrier_wait – blocking 95 +*** END OF POSIX TIME PSXTMBARRIER 02 *** diff --git a/testsuites/psxtmtests/psxtmbarrier03/psxtmbarrier03.scn b/testsuites/psxtmtests/psxtmbarrier03/psxtmbarrier03.scn new file mode 100644 index 0000000000..f1b1d8921d --- /dev/null +++ b/testsuites/psxtmtests/psxtmbarrier03/psxtmbarrier03.scn @@ -0,0 +1,3 @@ +*** POSIX TIME TEST PSXTMBARRIER 03 *** +pthread_barrier_wait – releasing, no preempt 50 +*** END OF POSIX TIME TEST PSXTMBARRIER 03 *** diff --git a/testsuites/psxtmtests/psxtmcond01/Makefile.am b/testsuites/psxtmtests/psxtmcond01/Makefile.am new file mode 100644 index 0000000000..29fa1ceb42 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond01/Makefile.am @@ -0,0 +1,28 @@ +MANAGERS = all + +rtems_tests_PROGRAMS = psxtmcond01 +psxtmcond01_SOURCES = init.c +psxtmcond01_SOURCES += ../../tmtests/include/timesys.h +psxtmcond01_SOURCES += ../../support/src/tmtests_empty_function.c +psxtmcond01_SOURCES += ../../support/src/tmtests_support.c + +dist_rtems_tests_DATA = psxtmcond01.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +OPERATION_COUNT = @OPERATION_COUNT@ +AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include +AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT) +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(psxtmcond01_OBJECTS) $(psxtmcond01_LDADD) +LINK_LIBS = $(psxtmcond01_LDLIBS) + +psxtmcond01$(EXEEXT): $(psxtmcond01_OBJECTS) $(psxtmcond01_DEPENDENCIES) + @rm -f psxtmcond01$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am + diff --git a/testsuites/psxtmtests/psxtmcond01/init.c b/testsuites/psxtmtests/psxtmcond01/init.c new file mode 100644 index 0000000000..bbfaa894f1 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond01/init.c @@ -0,0 +1,94 @@ +/* + * COPYRIGHT (c) 1989-2012. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <coverhd.h> +#include <tmacros.h> +#include <timesys.h> +#include "test_support.h" +#include <pthread.h> +#include <sched.h> +#include <rtems/timerdrv.h> + +/* forward declarations to avoid warnings */ +void *POSIX_Init(void *argument); +void benchmark_create_cond_var(void); +void benchmark_destroy_cond_var(void); + +pthread_cond_t mycondvar; + +void benchmark_create_cond_var(void) +{ + long end_time; + int status; + + benchmark_timer_initialize(); + status = pthread_cond_init(&mycondvar, NULL); + end_time = benchmark_timer_read(); + rtems_test_assert( status == 0 ); + + put_time( + "pthread_cond_init (single invocation)", + end_time, + 1, + 0, + 0 + ); +} + +void benchmark_destroy_cond_var(void) +{ + long end_time; + int status; + + benchmark_timer_initialize(); + status = pthread_cond_destroy(&mycondvar); + end_time = benchmark_timer_read(); + rtems_test_assert( status == 0 ); + + put_time( + "pthread_cond_destroy (single invocation)", + end_time, + 1, + 0, + 0 + ); +} + +void *POSIX_Init( + void *argument +) +{ + puts( "\n\n*** POSIX TIME TEST PSXTMCOND01 ***" ); + + benchmark_create_cond_var(); + benchmark_destroy_cond_var(); + + puts( "*** END OF POSIX TIME TEST PSXTMCOND01 ***" ); + rtems_test_exit(0); +} + +/* configuration information */ + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER + +/* configure an instance of the condition variable created and destroyed */ +#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 1 + +#define CONFIGURE_MAXIMUM_POSIX_THREADS 1 +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> +/* end of file */ diff --git a/testsuites/psxtmtests/psxtmcond01/psxtmcond01.doc b/testsuites/psxtmtests/psxtmcond01/psxtmcond01.doc new file mode 100644 index 0000000000..9ea2348c7d --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond01/psxtmcond01.doc @@ -0,0 +1,6 @@ +This test benchmarks the following cases: + ++ single invocation of creating a POSIX condition variable + (e.g pthread_cond_init) ++ single invocation of deleting a POSIX condition variable + (e.g pthread_cond_destroy) diff --git a/testsuites/psxtmtests/psxtmcond02/Makefile.am b/testsuites/psxtmtests/psxtmcond02/Makefile.am new file mode 100644 index 0000000000..73ea6d6907 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond02/Makefile.am @@ -0,0 +1,27 @@ +MANAGERS = all + +rtems_tests_PROGRAMS = psxtmcond02 +psxtmcond02_SOURCES = init.c +psxtmcond02_SOURCES += ../../tmtests/include/timesys.h +psxtmcond02_SOURCES += ../../support/src/tmtests_empty_function.c +psxtmcond02_SOURCES += ../../support/src/tmtests_support.c + +dist_rtems_tests_DATA = psxtmcond02.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +OPERATION_COUNT = @OPERATION_COUNT@ +AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include +AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT) +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(psxtmcond02_OBJECTS) $(psxtmcond02_LDADD) +LINK_LIBS = $(psxtmcond02_LDLIBS) + +psxtmcond02$(EXEEXT): $(psxtmcond02_OBJECTS) $(psxtmcond02_DEPENDENCIES) + @rm -f psxtmcond02$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtmtests/psxtmcond02/init.c b/testsuites/psxtmtests/psxtmcond02/init.c new file mode 100644 index 0000000000..26c36b35f3 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond02/init.c @@ -0,0 +1,73 @@ +/* + * COPYRIGHT (c) 1989-2012. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <timesys.h> +#include <pthread.h> +#include <rtems/timerdrv.h> +#include "test_support.h" + +/* forward declarations to avoid warnings */ +void *POSIX_Init(void *argument); +void benchmark_signal(void); + +pthread_cond_t CondID; + +void benchmark_signal(void) +{ + long end_time; + int status; + + benchmark_timer_initialize(); + + status = pthread_cond_signal(&CondID); + + end_time = benchmark_timer_read(); + rtems_test_assert( status == 0 ); + + put_time( + "pthread_cond_signal - no threads waiting", + end_time, + 1, /* Only executed once */ + 0, + 0 + ); + +} + +void *POSIX_Init( + void *argument +) +{ + puts( "\n\n*** POSIX TIME TEST PSXTMCOND02 ***" ); + + pthread_cond_init(&CondID, NULL); + + benchmark_signal(); + + puts( "*** END OF POSIX TIME TEST PSXTMCOND02 ***" ); + rtems_test_exit(0); +} + +/* configuration information */ + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER + +#define CONFIGURE_MAXIMUM_POSIX_THREADS 1 +#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 2 +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> +/* end of file */ diff --git a/testsuites/psxtmtests/psxtmcond02/psxtmcond02.doc b/testsuites/psxtmtests/psxtmcond02/psxtmcond02.doc new file mode 100644 index 0000000000..865fc07091 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond02/psxtmcond02.doc @@ -0,0 +1,11 @@ +# COPYRIGHT (c) 1989-2011. +# On-Line Applications Research Corporation (OAR). +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.com/license/LICENSE. +# + +This test benchmarks the following operations: + ++ diff --git a/testsuites/psxtmtests/psxtmcond03/Makefile.am b/testsuites/psxtmtests/psxtmcond03/Makefile.am new file mode 100644 index 0000000000..5c09759ac8 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond03/Makefile.am @@ -0,0 +1,27 @@ +MANAGERS = all + +rtems_tests_PROGRAMS = psxtmcond03 +psxtmcond03_SOURCES = init.c +psxtmcond03_SOURCES += ../../tmtests/include/timesys.h +psxtmcond03_SOURCES += ../../support/src/tmtests_empty_function.c +psxtmcond03_SOURCES += ../../support/src/tmtests_support.c + +dist_rtems_tests_DATA = psxtmcond03.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +OPERATION_COUNT = @OPERATION_COUNT@ +AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include +AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT) +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(psxtmcond03_OBJECTS) $(psxtmcond03_LDADD) +LINK_LIBS = $(psxtmcond03_LDLIBS) + +psxtmcond03$(EXEEXT): $(psxtmcond03_OBJECTS) $(psxtmcond03_DEPENDENCIES) + @rm -f psxtmcond03$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtmtests/psxtmcond03/init.c b/testsuites/psxtmtests/psxtmcond03/init.c new file mode 100644 index 0000000000..4c1b9ad6d3 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond03/init.c @@ -0,0 +1,104 @@ +/* + * COPYRIGHT (c) 1989-2012. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <coverhd.h> +#include <tmacros.h> +#include <timesys.h> +#include "test_support.h" +#include <pthread.h> +#include <sched.h> +#include <rtems/timerdrv.h> + +/* forward declarations to avoid warnings */ +void *POSIX_Init(void *argument); +void *Blocker(void *argument); + +pthread_mutex_t MutexID; +pthread_cond_t CondID; + +void *Blocker( + void *argument +) +{ + pthread_cond_wait(&CondID,&MutexID); + /* should never return */ + rtems_test_assert( FALSE ); + + return NULL; +} + +void *POSIX_Init( + void *argument +) +{ + int status; + pthread_t threadId; + long end_time; + + puts( "\n\n*** POSIX TIME TEST PSXTMCOND03 ***" ); + + status = pthread_create( &threadId, NULL, Blocker, NULL ); + rtems_test_assert( status == 0 ); + + status = pthread_mutex_init(&MutexID, NULL); + rtems_test_assert( status == 0 ); + + status = pthread_cond_init(&CondID, NULL); /* Create condition variable */ + rtems_test_assert( status == 0 ); + + /* + * Ensure the mutex is unavailable so the other threads block. + */ + status = pthread_mutex_lock(&MutexID); + rtems_test_assert( status == 0 ); + + /* + * Let the other thread start so the thread startup overhead, + * is accounted for. When we return, we can start the benchmark. + */ + sched_yield(); + /* let other thread run */ + + benchmark_timer_initialize(); + status = pthread_cond_signal(&CondID); + end_time = benchmark_timer_read(); + rtems_test_assert( status == 0 ); + + put_time( + "pthread_cond_signal - thread waiting, no preempt", + end_time, + 1, + 0, + 0 + ); + + puts( "*** END OF POSIX TIME TEST PSXTMCOND03 ***" ); + rtems_test_exit( 0 ); + + return NULL; +} + +/* configuration information */ + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER + +#define CONFIGURE_MAXIMUM_POSIX_THREADS 2 +#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 2 +#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 2 +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> + /* end of file */ diff --git a/testsuites/psxtmtests/psxtmcond03/psxtmcond03.doc b/testsuites/psxtmtests/psxtmcond03/psxtmcond03.doc new file mode 100644 index 0000000000..865fc07091 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond03/psxtmcond03.doc @@ -0,0 +1,11 @@ +# COPYRIGHT (c) 1989-2011. +# On-Line Applications Research Corporation (OAR). +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.com/license/LICENSE. +# + +This test benchmarks the following operations: + ++ diff --git a/testsuites/psxtmtests/psxtmcond05/Makefile.am b/testsuites/psxtmtests/psxtmcond05/Makefile.am new file mode 100644 index 0000000000..9904655c42 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond05/Makefile.am @@ -0,0 +1,27 @@ +MANAGERS = all + +rtems_tests_PROGRAMS = psxtmcond05 +psxtmcond05_SOURCES = init.c +psxtmcond05_SOURCES += ../../tmtests/include/timesys.h +psxtmcond05_SOURCES += ../../support/src/tmtests_empty_function.c +psxtmcond05_SOURCES += ../../support/src/tmtests_support.c + +dist_rtems_tests_DATA = psxtmcond05.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +OPERATION_COUNT = @OPERATION_COUNT@ +AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include +AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT) +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(psxtmcond05_OBJECTS) $(psxtmcond05_LDADD) +LINK_LIBS = $(psxtmcond05_LDLIBS) + +psxtmcond05$(EXEEXT): $(psxtmcond05_OBJECTS) $(psxtmcond05_DEPENDENCIES) + @rm -f psxtmcond05$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtmtests/psxtmcond05/init.c b/testsuites/psxtmtests/psxtmcond05/init.c new file mode 100644 index 0000000000..bf4de19b09 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond05/init.c @@ -0,0 +1,71 @@ +/* + * COPYRIGHT (c) 1989-2012. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <timesys.h> +#include <rtems/timerdrv.h> +#include "test_support.h" + +/* forward declarations to avoid warnings */ +void *POSIX_Init(void *argument); +void benchmark_broadcast(void); + +pthread_cond_t CondID; + +void benchmark_broadcast(void) +{ + long end_time; + int status; + + benchmark_timer_initialize(); + status = pthread_cond_broadcast(&CondID); + end_time = benchmark_timer_read(); + rtems_test_assert( status == 0 ); + + put_time( + "pthread_cond_broadcast - no threads waiting", + end_time, + 1, /* Only executed once */ + 0, + 0 + ); + +} + +void *POSIX_Init( + void *argument +) +{ + + puts( "\n\n*** POSIX TIME TEST PSXTMCOND05 ***" ); + + pthread_cond_init(&CondID, NULL); + + benchmark_broadcast(); + + puts( "*** END OF POSIX TIME TEST PSXTMCOND05 ***" ); + rtems_test_exit(0); +} + +/* configuration information */ + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER + +#define CONFIGURE_MAXIMUM_POSIX_THREADS 1 +#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 2 +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> +/* end of file */ diff --git a/testsuites/psxtmtests/psxtmcond05/psxtmcond05.doc b/testsuites/psxtmtests/psxtmcond05/psxtmcond05.doc new file mode 100644 index 0000000000..865fc07091 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond05/psxtmcond05.doc @@ -0,0 +1,11 @@ +# COPYRIGHT (c) 1989-2011. +# On-Line Applications Research Corporation (OAR). +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.com/license/LICENSE. +# + +This test benchmarks the following operations: + ++ diff --git a/testsuites/psxtmtests/psxtmcond08/Makefile.am b/testsuites/psxtmtests/psxtmcond08/Makefile.am new file mode 100644 index 0000000000..6207972fa9 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond08/Makefile.am @@ -0,0 +1,28 @@ +MANAGERS = all + +rtems_tests_PROGRAMS = psxtmcond08 +psxtmcond08_SOURCES = init.c +psxtmcond08_SOURCES += ../../tmtests/include/timesys.h +psxtmcond08_SOURCES += ../../support/src/tmtests_empty_function.c +psxtmcond08_SOURCES += ../../support/src/tmtests_support.c + +dist_rtems_tests_DATA = psxtmcond08.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +OPERATION_COUNT = @OPERATION_COUNT@ +AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include +AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT) +AM_CPPFLAGS += -I$(top_srcdir)/../support/include +AM_CPPFLAGS += -DUSE_WAIT + +LINK_OBJS = $(psxtmcond08_OBJECTS) $(psxtmcond08_LDADD) +LINK_LIBS = $(psxtmcond08_LDLIBS) + +psxtmcond08$(EXEEXT): $(psxtmcond08_OBJECTS) $(psxtmcond08_DEPENDENCIES) + @rm -f psxtmcond08$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtmtests/psxtmcond08/init.c b/testsuites/psxtmtests/psxtmcond08/init.c new file mode 100644 index 0000000000..af970361b3 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond08/init.c @@ -0,0 +1,178 @@ +/* + * COPYRIGHT (c) 1989-2012. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#if defined(USE_WAIT) + #define TEST_NUMBER "08" + #define TEST_CASE "pthread_cond_wait - blocking" +#elif defined(USE_TIMEDWAIT_WITH_VALUE) + #define TEST_NUMBER "09" + #define TEST_CASE "pthread_cond_timedwait - blocking" +#elif defined(USE_TIMEDWAIT_WAIT_VALUE_IN_PAST) + #define TEST_NUMBER "10" + #define TEST_CASE "pthread_cond_timedwait - time in past error" +#else + #error "How am I being compiled?" +#endif + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#include <time.h> +#include <errno.h> +#include <timesys.h> +#include <tmacros.h> +#include <rtems/timerdrv.h> +#include "test_support.h" + +#include <pthread.h> + +/* forward declarations to avoid warnings */ +void *POSIX_Init(void *argument); +void *Middle(void *argument); +void *Low(void *argument); + +pthread_cond_t CondID; +pthread_mutex_t MutexID; +struct timespec sleepTime; + +void *Low( + void *argument +) +{ + long end_time; + + end_time = benchmark_timer_read(); + + put_time( + TEST_CASE, + end_time, + OPERATION_COUNT, + 0, + 0 + ); + + puts( "*** END OF POSIX TIME TEST PSXTMCOND" TEST_NUMBER " ***" ); + + rtems_test_exit( 0 ); + return NULL; +} + +void *Middle( + void *argument +) +{ + int rc; + + + rc = pthread_mutex_lock(&MutexID); + rtems_test_assert( rc == 0 ); + + /* block and switch to another task here */ + + #if defined(USE_WAIT) + rc = pthread_cond_wait( &CondID, &MutexID ); + rtems_test_assert( rc == 0 ); + + #elif defined(USE_TIMEDWAIT_WITH_VALUE) + + rc = pthread_cond_timedwait( &CondID, &MutexID, &sleepTime ); + rtems_test_assert( rc == 0 ); + + #elif defined(USE_TIMEDWAIT_WAIT_VALUE_IN_PAST) + { + long end_time; + + /* override sleepTime with something obviously in the past */ + sleepTime.tv_sec = 0; + sleepTime.tv_nsec = 5; + + /* this does all the work of timedwait but immediately returns */ + rc = pthread_cond_timedwait( &CondID, &MutexID, &sleepTime ); + end_time = benchmark_timer_read(); + rtems_test_assert(rc == ETIMEDOUT); + } + #endif + + pthread_mutex_unlock(&MutexID); + #if defined(USE_TIMEDWAIT_WAIT_VALUE_IN_PAST) + /* + * In this case, unlock does not switch to another thread. so we need + * to explicitly yield. If we do not yield, then we will measure the + * time required to do an implicit pthread_exit() which is undesirable + * from a measurement viewpoint. + */ + sched_yield(); + #endif + return NULL; +} + +void *POSIX_Init( + void *argument +) +{ + int i; + int status; + pthread_t threadId; + int rc; + struct timeval tp; + + puts( "\n\n*** POSIX TIME TEST PSXTMCOND" TEST_NUMBER " ***" ); + + rc = gettimeofday(&tp, NULL); + rtems_test_assert( rc == 0 ); + + /* Convert from timeval to timespec */ + sleepTime.tv_sec = tp.tv_sec; + sleepTime.tv_nsec = tp.tv_usec * 1000; + sleepTime.tv_nsec += 1; + + rc = pthread_cond_init(&CondID, NULL); + rtems_test_assert( rc == 0 ); + + rc = pthread_mutex_init(&MutexID, NULL); + rtems_test_assert( rc == 0 ); + + rc = pthread_mutex_lock(&MutexID); + rtems_test_assert( rc == 0 ); + + for ( i=0 ; i < OPERATION_COUNT - 1 ; i++ ) { + status = pthread_create( &threadId, NULL, Middle, NULL ); + rtems_test_assert( !status ); + } + + status = pthread_create( &threadId, NULL, Low, NULL ); + rtems_test_assert( !status ); + + /* start the timer and switch through all the other tasks */ + benchmark_timer_initialize(); + + rc = pthread_mutex_unlock(&MutexID); + rtems_test_assert( rc == 0 ); + + /* Should never return. */ + return NULL; +} + +/* configuration information */ + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER + +#define CONFIGURE_MAXIMUM_POSIX_THREADS OPERATION_COUNT + 2 +#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 2 +#define CONFIGURE_POSIX_INIT_THREAD_TABLE +#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 2 +#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 2 + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> + /* end of file */ diff --git a/testsuites/psxtmtests/psxtmcond08/psxtmcond08.doc b/testsuites/psxtmtests/psxtmcond08/psxtmcond08.doc new file mode 100644 index 0000000000..865fc07091 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond08/psxtmcond08.doc @@ -0,0 +1,11 @@ +# COPYRIGHT (c) 1989-2011. +# On-Line Applications Research Corporation (OAR). +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.com/license/LICENSE. +# + +This test benchmarks the following operations: + ++ diff --git a/testsuites/psxtmtests/psxtmcond09/Makefile.am b/testsuites/psxtmtests/psxtmcond09/Makefile.am new file mode 100644 index 0000000000..c5b4eddd0d --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond09/Makefile.am @@ -0,0 +1,28 @@ +MANAGERS = all + +rtems_tests_PROGRAMS = psxtmcond09 +psxtmcond09_SOURCES = ../psxtmcond08/init.c +psxtmcond09_SOURCES += ../../tmtests/include/timesys.h +psxtmcond09_SOURCES += ../../support/src/tmtests_empty_function.c +psxtmcond09_SOURCES += ../../support/src/tmtests_support.c + +dist_rtems_tests_DATA = psxtmcond09.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +OPERATION_COUNT = @OPERATION_COUNT@ +AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include +AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT) +AM_CPPFLAGS += -I$(top_srcdir)/../support/include +AM_CPPFLAGS += -DUSE_TIMEDWAIT_WITH_VALUE + +LINK_OBJS = $(psxtmcond09_OBJECTS) $(psxtmcond09_LDADD) +LINK_LIBS = $(psxtmcond09_LDLIBS) + +psxtmcond09$(EXEEXT): $(psxtmcond09_OBJECTS) $(psxtmcond09_DEPENDENCIES) + @rm -f psxtmcond09$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtmtests/psxtmcond09/psxtmcond09.doc b/testsuites/psxtmtests/psxtmcond09/psxtmcond09.doc new file mode 100644 index 0000000000..865fc07091 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond09/psxtmcond09.doc @@ -0,0 +1,11 @@ +# COPYRIGHT (c) 1989-2011. +# On-Line Applications Research Corporation (OAR). +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.com/license/LICENSE. +# + +This test benchmarks the following operations: + ++ diff --git a/testsuites/psxtmtests/psxtmcond10/Makefile.am b/testsuites/psxtmtests/psxtmcond10/Makefile.am new file mode 100644 index 0000000000..19222c8d5c --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond10/Makefile.am @@ -0,0 +1,28 @@ +MANAGERS = all + +rtems_tests_PROGRAMS = psxtmcond10 +psxtmcond10_SOURCES = ../psxtmcond08/init.c +psxtmcond10_SOURCES += ../../tmtests/include/timesys.h +psxtmcond10_SOURCES += ../../support/src/tmtests_empty_function.c +psxtmcond10_SOURCES += ../../support/src/tmtests_support.c + +dist_rtems_tests_DATA = psxtmcond10.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +OPERATION_COUNT = @OPERATION_COUNT@ +AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include +AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT) +AM_CPPFLAGS += -I$(top_srcdir)/../support/include +AM_CPPFLAGS += -DUSE_TIMEDWAIT_WAIT_VALUE_IN_PAST + +LINK_OBJS = $(psxtmcond10_OBJECTS) $(psxtmcond10_LDADD) +LINK_LIBS = $(psxtmcond10_LDLIBS) + +psxtmcond10$(EXEEXT): $(psxtmcond10_OBJECTS) $(psxtmcond10_DEPENDENCIES) + @rm -f psxtmcond10$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtmtests/psxtmcond10/psxtmcond10.doc b/testsuites/psxtmtests/psxtmcond10/psxtmcond10.doc new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testsuites/psxtmtests/psxtmcond10/psxtmcond10.doc diff --git a/testsuites/psxtmtests/psxtmkey01/psxtmkey01.scn b/testsuites/psxtmtests/psxtmkey01/psxtmkey01.scn new file mode 100644 index 0000000000..24f5841cbb --- /dev/null +++ b/testsuites/psxtmtests/psxtmkey01/psxtmkey01.scn @@ -0,0 +1,4 @@ +*** POSIX TIME TEST PSXTMKEY01 *** +pthread_key_create 86 +pthread_key_delete 79 +*** END OF POSIX TIME TEST PSXTMKEY01 *** diff --git a/testsuites/psxtmtests/psxtmkey02/psxtmkey02.scn b/testsuites/psxtmtests/psxtmkey02/psxtmkey02.scn new file mode 100644 index 0000000000..a81aa96eef --- /dev/null +++ b/testsuites/psxtmtests/psxtmkey02/psxtmkey02.scn @@ -0,0 +1,5 @@ +*** POSIX TIME TEST PSXTMKEY02 *** +pthread_getspecific 11 +pthread_setspecific 11 +pthread_getspecific 11 +*** END OF POSIX TIME TEST PSXTMKEY02 *** diff --git a/testsuites/psxtmtests/psxtmmq01/psxtmmq01.scn b/testsuites/psxtmtests/psxtmmq01/psxtmmq01.scn new file mode 100644 index 0000000000..585a0b7b9c --- /dev/null +++ b/testsuites/psxtmtests/psxtmmq01/psxtmmq01.scn @@ -0,0 +1,12 @@ +*** POSIX TIME TEST PSXTMMQ01 *** +mq_open (first open) 106 +mq_send - no threads waiting 44 +mq_open (second open) 38 +mq_receive - available 41 +mq_unlink 46 +mq_timedsend - no threads waiting 92 +mq_timedreceive - available 91 +mq_notify 13 +mq_close (close of second) 21 +mq_close (close of first) 21 +*** END OF POSIX TIME TEST PSXTMMQ01 *** diff --git a/testsuites/psxtmtests/psxtmmutex01/psxtmmutex01.scn b/testsuites/psxtmtests/psxtmmutex01/psxtmmutex01.scn new file mode 100644 index 0000000000..a1b10c7ae7 --- /dev/null +++ b/testsuites/psxtmtests/psxtmmutex01/psxtmmutex01.scn @@ -0,0 +1,4 @@ +*** POSIX TIME TEST PSXTMMUTEX01 *** +pthread_mutex_init 28 +pthread_mutex_destroy 32 +*** END OF POSIX TIME TEST PSXTMMUTEX01 *** diff --git a/testsuites/psxtmtests/psxtmmutex02/psxtmmutex02.scn b/testsuites/psxtmtests/psxtmmutex02/psxtmmutex02.scn new file mode 100644 index 0000000000..2f4dada073 --- /dev/null +++ b/testsuites/psxtmtests/psxtmmutex02/psxtmmutex02.scn @@ -0,0 +1,3 @@ +*** POSIX TIME TEST PSXTMMUTEX02 *** +pthread_mutex_lock - unavailable, block 98 +*** END OF POSIX TIME TEST PSXTMMUTEX02 *** diff --git a/testsuites/psxtmtests/psxtmmutex03/psxtmmutex03.scn b/testsuites/psxtmtests/psxtmmutex03/psxtmmutex03.scn new file mode 100644 index 0000000000..7892cea985 --- /dev/null +++ b/testsuites/psxtmtests/psxtmmutex03/psxtmmutex03.scn @@ -0,0 +1,9 @@ +*** POSIX TIME TEST PSXTMMUTEX03 *** +pthread_mutex_lock - available 12 +pthread_mutex_unlock - no threads waiting 26 +pthread_mutex_trylock - available 12 +pthread_mutex_trylock - not available 12 +pthread_mutex_unlock - no threads waiting 27 +pthread_mutex_timedlock - available 14 +pthread_mutex_unlock - no threads waiting 26 +*** END OF POSIX TIME TEST PSXTMMUTEX03 *** diff --git a/testsuites/psxtmtests/psxtmmutex04/psxtmmutex04.scn b/testsuites/psxtmtests/psxtmmutex04/psxtmmutex04.scn new file mode 100644 index 0000000000..279bf0e4cd --- /dev/null +++ b/testsuites/psxtmtests/psxtmmutex04/psxtmmutex04.scn @@ -0,0 +1,3 @@ +*** POSIX TIME TEST PSXTMMUTEX04 *** +pthread_mutex_timedlock - not available, block 98 +*** END OF POSIX TIME TEST PSXTMMUTEX04 *** diff --git a/testsuites/psxtmtests/psxtmmutex05/psxtmmutex05.scn b/testsuites/psxtmtests/psxtmmutex05/psxtmmutex05.scn new file mode 100644 index 0000000000..89ad03dbe0 --- /dev/null +++ b/testsuites/psxtmtests/psxtmmutex05/psxtmmutex05.scn @@ -0,0 +1,3 @@ +*** POSIX TIME TEST PSXTMMUTEX05 *** +pthread_mutex_unlock - unblocking, no preemption 37 +*** END OF POSIX TIME TEST PSXTMMUTEX05 *** diff --git a/testsuites/psxtmtests/psxtmmutex06/psxtmmutex06.scn b/testsuites/psxtmtests/psxtmmutex06/psxtmmutex06.scn new file mode 100644 index 0000000000..214bf5a0fe --- /dev/null +++ b/testsuites/psxtmtests/psxtmmutex06/psxtmmutex06.scn @@ -0,0 +1,3 @@ +*** POSIX TIME TEST PSXTMMUTEX02 *** +pthread_mutex_unlock - unblocking, preempt 96 +*** END OF POSIX TIME TEST PSXTMMUTEX07 *** diff --git a/testsuites/psxtmtests/psxtmmutex07/psxtmmutex07.scn b/testsuites/psxtmtests/psxtmmutex07/psxtmmutex07.scn new file mode 100644 index 0000000000..cbf46ac8b6 --- /dev/null +++ b/testsuites/psxtmtests/psxtmmutex07/psxtmmutex07.scn @@ -0,0 +1,5 @@ +*** POSIX TIME TEST PSXTMMUTEX07 *** +pthread_mutex_getprioceiling 11 +pthread_mutex_setprioceiling 40 +pthread_mutex_getprioceiling 12 +*** END OF POSIX TIME TEST PSXTMMUTEX07 *** diff --git a/testsuites/psxtmtests/psxtmtests_plan.csv b/testsuites/psxtmtests/psxtmtests_plan.csv index 12018650c4..ff0e0aeb21 100644 --- a/testsuites/psxtmtests/psxtmtests_plan.csv +++ b/testsuites/psxtmtests/psxtmtests_plan.csv @@ -21,8 +21,10 @@ "pthread_cond_broadcast - no threads waiting","psxtmcond05","psxtmtest_single", "pthread_cond_broadcast - threads waiting, no preempt","psxtmcond06","psxtmtest_unblocking_nopreempt", "pthread_cond_broadcast - threads waiting, preempt","psxtmcond07","psxtmtest_unblocking_preempt", -"pthread_cond_wait - blocks","psxtmcond08","psxtmtest_blocking", -"pthread_cond_timedwait - blocks","psxtmcond09","psxtmtest_blocking", + +"pthread_cond_wait - blocks (mutex+condvar pattern)","psxtmcond08","psxtmtest_blocking", +"pthread_cond_timedwait(&time) - blocks (mutex+condvar pattern)","psxtmcond09","psxtmtest_blocking", +"pthread_cond_timedwait(&time) - time in past error","psxtmcond10","psxtmtest_blocking", ,,, "pthread_create - no preempt","psxtmthread01","psxtmtest_single","Yes" "pthread_create - preempt","psxtmthread02","psxtmtest_single", diff --git a/testsuites/psxtmtests/psxtmthread02/Makefile.am b/testsuites/psxtmtests/psxtmthread02/Makefile.am new file mode 100644 index 0000000000..c39e2c0aa5 --- /dev/null +++ b/testsuites/psxtmtests/psxtmthread02/Makefile.am @@ -0,0 +1,27 @@ +MANAGERS = all + +rtems_tests_PROGRAMS = psxtmthread02 +psxtmthread02_SOURCES = init.c +psxtmthread02_SOURCES += ../../tmtests/include/timesys.h +psxtmthread02_SOURCES += ../../support/src/tmtests_empty_function.c +psxtmthread02_SOURCES += ../../support/src/tmtests_support.c + +dist_rtems_tests_DATA = psxtmthread02.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +OPERATION_COUNT = @OPERATION_COUNT@ +AM_CPPFLAGS += -I$(top_srcdir)/../tmtests/include +AM_CPPFLAGS += -DOPERATION_COUNT=$(OPERATION_COUNT) +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(psxtmthread02_OBJECTS) $(psxtmthread02_LDADD) +LINK_LIBS = $(psxtmthread02_LDLIBS) + +psxtmthread02$(EXEEXT): $(psxtmthread02_OBJECTS) $(psxtmthread02_DEPENDENCIES) + @rm -f psxtmthread02$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/psxtmtests/psxtmthread02/init.c b/testsuites/psxtmtests/psxtmthread02/init.c new file mode 100644 index 0000000000..41fb17f462 --- /dev/null +++ b/testsuites/psxtmtests/psxtmthread02/init.c @@ -0,0 +1,80 @@ +/* + * COPYRIGHT (c) 1989-2012. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <timesys.h> +#include <pthread.h> +#include <rtems/timerdrv.h> +#include "test_support.h" + +/* forward declarations to avoid warnings */ +void *POSIX_Init(void *argument); +void benchmark_pthread_create(void); +void thread(void *argument); + +void benchmark_pthread_create(void) +{ + long end_time; + int status; + pthread_t thread_ID; + + benchmark_timer_initialize(); + + status = pthread_create(&thread_ID, NULL, thread, NULL); + rtems_test_assert( status == 0 ); + + end_time = benchmark_timer_read(); + + rtems_test_assert( status == 0 ); + + put_time( + "pthread_create - preempt", + end_time, + 1, /* Only executed once */ + 0, + 0 + ); + +} + +void thread( + void *argument +) +{ + //Empty thread used in pthread_create(). +} + +void *POSIX_Init( + void *argument +) +{ + + puts( "\n\n*** POSIX TIME TEST PSXTMTHREAD02 ***" ); + + benchmark_pthread_create(); + + puts( "*** END OF POSIX TIME TEST PSXTMTHREAD02 ***" ); + rtems_test_exit(0); +} + +/* configuration information */ + +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER + +#define CONFIGURE_MAXIMUM_POSIX_THREADS 2 +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> +/* end of file */ diff --git a/testsuites/psxtmtests/psxtmthread02/psxtmthread02.doc b/testsuites/psxtmtests/psxtmthread02/psxtmthread02.doc new file mode 100644 index 0000000000..865fc07091 --- /dev/null +++ b/testsuites/psxtmtests/psxtmthread02/psxtmthread02.doc @@ -0,0 +1,11 @@ +# COPYRIGHT (c) 1989-2011. +# On-Line Applications Research Corporation (OAR). +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.rtems.com/license/LICENSE. +# + +This test benchmarks the following operations: + ++ diff --git a/testsuites/sptests/spfatal_support/init.c b/testsuites/sptests/spfatal_support/init.c index 5554e88762..eb7a167361 100644 --- a/testsuites/sptests/spfatal_support/init.c +++ b/testsuites/sptests/spfatal_support/init.c @@ -34,13 +34,6 @@ rtems_task Init( rtems_test_exit(0); } -char *Sources[] = { - "INTERNAL_ERROR_CORE", - "INTERNAL_ERROR_RTEMS_API", - "INTERNAL_ERROR_POSIX_API", -}; - - char *Errors_Rtems[] = { "RTEMS_SUCCESSFUL", /* successful completion */ "RTEMS_TASK_EXITTED", /* returned from a task */ @@ -82,19 +75,15 @@ void Put_Error( uint32_t source, uint32_t error ) } } -void Put_Source( uint32_t source ) +void Put_Source( rtems_fatal_source source ) { - if ( source > INTERNAL_ERROR_POSIX_API ) - printk("Unknown Source (%d)", source); - else - printk( Sources[ source ] ); + printk( "%s", rtems_fatal_source_description( source ) ); } - void Fatal_extension( - uint32_t source, - bool is_internal, - uint32_t error + rtems_fatal_source source, + bool is_internal, + rtems_fatal_code error ) { print_test_begin_message(); diff --git a/testsuites/sptests/spfatal_support/system.h b/testsuites/sptests/spfatal_support/system.h index 2be14593de..69f917f972 100644 --- a/testsuites/sptests/spfatal_support/system.h +++ b/testsuites/sptests/spfatal_support/system.h @@ -25,9 +25,9 @@ rtems_task Init( ); void Fatal_extension( - uint32_t source, - bool is_internal, - uint32_t error + rtems_fatal_source source, + bool is_internal, + rtems_fatal_code error ); void Put_Error( @@ -35,9 +35,7 @@ void Put_Error( uint32_t error ); -void Put_Source( - uint32_t source -); +void Put_Source( rtems_fatal_source source ); void force_error(void); diff --git a/testsuites/sptests/spinternalerror02/init.c b/testsuites/sptests/spinternalerror02/init.c index 79b36ca89c..8bfb6503e9 100644 --- a/testsuites/sptests/spinternalerror02/init.c +++ b/testsuites/sptests/spinternalerror02/init.c @@ -20,7 +20,7 @@ #include <rtems.h> -static void test(void) +static void test_internal_error_description(void) { rtems_fatal_code error = 0; const char *desc_last = NULL; @@ -36,11 +36,28 @@ static void test(void) rtems_test_assert( error - 3 == INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR ); } +static void test_fatal_source_description(void) +{ + rtems_fatal_source source = 0; + const char *desc_last = NULL; + const char *desc; + + do { + desc_last = desc; + desc = rtems_fatal_source_description( source ); + ++source; + puts( desc ); + } while ( desc != desc_last ); + + rtems_test_assert( source - 3 == RTEMS_FATAL_SOURCE_EXCEPTION ); +} + static void Init(rtems_task_argument arg) { puts("\n\n*** TEST SPINTERNALERROR 2 ***"); - test(); + test_internal_error_description(); + test_fatal_source_description(); puts("*** END OF TEST SPINTERNALERROR 2 ***"); diff --git a/testsuites/sptests/spinternalerror02/spinternalerror02.scn b/testsuites/sptests/spinternalerror02/spinternalerror02.scn index 6fdbed6083..9d7a722751 100644 --- a/testsuites/sptests/spinternalerror02/spinternalerror02.scn +++ b/testsuites/sptests/spinternalerror02/spinternalerror02.scn @@ -26,4 +26,17 @@ INTERNAL_ERROR_NO_MEMORY_FOR_HEAP INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR ? ? +INTERNAL_ERROR_CORE +INTERNAL_ERROR_RTEMS_API +INTERNAL_ERROR_POSIX_API +RTEMS_FATAL_SOURCE_BDBUF +RTEMS_FATAL_SOURCE_APPLICATION +RTEMS_FATAL_SOURCE_EXIT +RTEMS_FATAL_SOURCE_BSP_GENERIC +RTEMS_FATAL_SOURCE_BSP_SPECIFIC +RTEMS_FATAL_SOURCE_ASSERT +RTEMS_FATAL_SOURCE_STACK_CHECKER +RTEMS_FATAL_SOURCE_EXCEPTION +? +? *** END OF TEST SPINTERNALERROR 2 *** diff --git a/testsuites/sptests/spintrcritical10/init.c b/testsuites/sptests/spintrcritical10/init.c index 66306cd966..f284780546 100644 --- a/testsuites/sptests/spintrcritical10/init.c +++ b/testsuites/sptests/spintrcritical10/init.c @@ -2,49 +2,316 @@ * COPYRIGHT (c) 1989-2012. * On-Line Applications Research Corporation (OAR). * + * Copyright (c) 2013 embedded brains GmbH. + * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ #ifdef HAVE_CONFIG_H -#include "config.h" + #include "config.h" #endif #define __RTEMS_VIOLATE_KERNEL_VISIBILITY__ 1 #include <tmacros.h> #include <intrcritical.h> -/* forward declarations to avoid warnings */ -rtems_task Init(rtems_task_argument argument); +#define GREEN RTEMS_EVENT_0 -rtems_id Main_task; +#define RED RTEMS_EVENT_1 -rtems_task Init( - rtems_task_argument ignored -) +#define EVENTS (GREEN | RED) + +#define DEADBEEF 0xdeadbeef + +typedef struct { + rtems_id timer; + Thread_Control *thread; + bool hit; +} test_context; + +static void any_satisfy_before_timeout(rtems_id timer, void *arg) { - rtems_status_code sc; - rtems_event_set out; - int resets; + rtems_status_code sc; + test_context *ctx = arg; + const Thread_Control *thread = ctx->thread; - puts( "\n\n*** TEST INTERRUPT CRITICAL SECTION 10 ***" ); + if (thread->Wait.count != 0) { + ctx->hit = _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; + + rtems_test_assert(thread->Wait.count == EVENTS); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL); + + sc = rtems_event_send(thread->Object.id, GREEN); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(thread->Wait.count == 0); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == GREEN + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL); + + sc = rtems_event_send(thread->Object.id, RED); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(thread->Wait.count == 0); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == GREEN + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL); + + _Event_Timeout(thread->Object.id, &_Event_Sync_state); + + rtems_test_assert(thread->Wait.count == 0); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == GREEN + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL); + + if (ctx->hit) { + rtems_test_assert( + _Event_Sync_state == THREAD_BLOCKING_OPERATION_SATISFIED + ); + } + } + + sc = rtems_timer_reset(timer); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); +} + +static void test_any_satisfy_before_timeout(test_context *ctx) +{ + rtems_status_code sc; + int resets = 0; + + puts( + "Init - Trying to generate any satisfied before timeout " + "while blocking on event" + ); + + ctx->hit = false; + + interrupt_critical_section_test_support_initialize(NULL); + + sc = rtems_timer_fire_after(ctx->timer, 1, any_satisfy_before_timeout, ctx); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + while (!ctx->hit && resets < 2) { + rtems_event_set out; + + if (interrupt_critical_section_test_support_delay()) + resets++; + + out = DEADBEEF; + sc = rtems_event_receive(EVENTS, RTEMS_EVENT_ANY | RTEMS_WAIT, 1, &out); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + rtems_test_assert(out == GREEN); + + out = DEADBEEF; + sc = rtems_event_receive(EVENTS, RTEMS_EVENT_ANY | RTEMS_NO_WAIT, 0, &out); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + rtems_test_assert(out == RED); + } + + sc = rtems_timer_cancel(ctx->timer); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(ctx->hit); +} + +static void all_satisfy_before_timeout(rtems_id timer, void *arg) +{ + rtems_status_code sc; + test_context *ctx = arg; + const Thread_Control *thread = ctx->thread; + + if (thread->Wait.count != 0) { + ctx->hit = _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; + + rtems_test_assert(thread->Wait.count == EVENTS); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL); + + sc = rtems_event_send(thread->Object.id, GREEN); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(thread->Wait.count == EVENTS); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL); + + sc = rtems_event_send(thread->Object.id, RED); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(thread->Wait.count == 0); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == EVENTS + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL); + + _Event_Timeout(thread->Object.id, &_Event_Sync_state); + + rtems_test_assert(thread->Wait.count == 0); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == EVENTS + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL); + + if (ctx->hit) { + rtems_test_assert( + _Event_Sync_state == THREAD_BLOCKING_OPERATION_SATISFIED + ); + } + } - puts( "Init - Test may not be able to detect case is hit reliably" ); - puts( "Init - Trying to generate timeout while blocking on event" ); + sc = rtems_timer_reset(timer); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); +} + +static void test_all_satisfy_before_timeout(test_context *ctx) +{ + rtems_status_code sc; + int resets = 0; + + puts( + "Init - Trying to generate all satisfied before timeout " + "while blocking on event" + ); + + ctx->hit = false; + + interrupt_critical_section_test_support_initialize(NULL); - Main_task = rtems_task_self(); + sc = rtems_timer_fire_after(ctx->timer, 1, all_satisfy_before_timeout, ctx); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); - interrupt_critical_section_test_support_initialize( NULL ); + while (!ctx->hit && resets < 2) { + rtems_event_set out; - for (resets=0 ; resets< 2 ;) { - if ( interrupt_critical_section_test_support_delay() ) + if (interrupt_critical_section_test_support_delay()) resets++; - sc = rtems_event_receive( 0x01, RTEMS_DEFAULT_OPTIONS, 1, &out ); - fatal_directive_status( sc, RTEMS_TIMEOUT, "event_receive timeout" ); + out = DEADBEEF; + sc = rtems_event_receive(EVENTS, RTEMS_EVENT_ALL | RTEMS_WAIT, 1, &out); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + rtems_test_assert(out == EVENTS); } + sc = rtems_timer_cancel(ctx->timer); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(ctx->hit); +} + +static void timeout_before_satisfied(rtems_id timer, void *arg) +{ + rtems_status_code sc; + test_context *ctx = arg; + const Thread_Control *thread = ctx->thread; + + if (thread->Wait.count != 0) { + ctx->hit = + _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED; + + rtems_test_assert(thread->Wait.count == EVENTS); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_SUCCESSFUL); + + _Event_Timeout(thread->Object.id, &_Event_Sync_state); + + rtems_test_assert(thread->Wait.count == 0); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_TIMEOUT); + + sc = rtems_event_send(thread->Object.id, EVENTS); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(thread->Wait.count == 0); + rtems_test_assert( + *(rtems_event_set *) thread->Wait.return_argument == DEADBEEF + ); + rtems_test_assert(thread->Wait.return_code == RTEMS_TIMEOUT); + + if (ctx->hit) { + rtems_test_assert( + _Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT + ); + } + } + + sc = rtems_timer_reset(timer); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); +} + +static void test_timeout_before_all_satisfy(test_context *ctx) +{ + rtems_status_code sc; + int resets = 0; + + puts( + "Init - Trying to generate timeout before all satisfied " + "while blocking on event" + ); + + ctx->hit = false; + + interrupt_critical_section_test_support_initialize(NULL); + + sc = rtems_timer_fire_after(ctx->timer, 1, timeout_before_satisfied, ctx); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + while (!ctx->hit && resets < 2) { + rtems_event_set out; + + if (interrupt_critical_section_test_support_delay()) + resets++; + + out = DEADBEEF; + sc = rtems_event_receive(EVENTS, RTEMS_EVENT_ALL | RTEMS_WAIT, 1, &out); + rtems_test_assert(sc == RTEMS_TIMEOUT); + rtems_test_assert(out == DEADBEEF); + + out = DEADBEEF; + sc = rtems_event_receive(EVENTS, RTEMS_EVENT_ALL | RTEMS_NO_WAIT, 0, &out); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + rtems_test_assert(out == EVENTS); + } + + sc = rtems_timer_cancel(ctx->timer); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(ctx->hit); +} + +static rtems_task Init( + rtems_task_argument ignored +) +{ + rtems_status_code sc; + test_context ctx = { + .thread = _Thread_Executing + }; + + puts( "\n\n*** TEST INTERRUPT CRITICAL SECTION 10 ***" ); + + sc = rtems_timer_create(rtems_build_name('T', 'I', 'M', 'R'), &ctx.timer); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + test_any_satisfy_before_timeout(&ctx); + test_all_satisfy_before_timeout(&ctx); + test_timeout_before_all_satisfy(&ctx); + puts( "*** END OF TEST INTERRUPT CRITICAL SECTION 10 ***" ); rtems_test_exit(0); } @@ -61,5 +328,3 @@ rtems_task Init( #define CONFIGURE_INIT #include <rtems/confdefs.h> - -/* global variables */ diff --git a/testsuites/sptests/spintrcritical10/spintrcritical10.scn b/testsuites/sptests/spintrcritical10/spintrcritical10.scn index 9f59c0ea4d..e8db0c576a 100644 --- a/testsuites/sptests/spintrcritical10/spintrcritical10.scn +++ b/testsuites/sptests/spintrcritical10/spintrcritical10.scn @@ -1,4 +1,5 @@ *** TEST INTERRUPT CRITICAL SECTION 10 *** -Init - Test may not be able to detect case is hit reliably -Init - Trying to generate timeout while blocking on event +Init - Trying to generate any satisfied before timeout while blocking on event +Init - Trying to generate all satisfied before timeout while blocking on event +Init - Trying to generate timeout before all satisfied while blocking on event *** END OF TEST INTERRUPT CRITICAL SECTION 10 *** diff --git a/testsuites/sptests/spintrcritical16/init.c b/testsuites/sptests/spintrcritical16/init.c index 396445509d..4d551bae79 100644 --- a/testsuites/sptests/spintrcritical16/init.c +++ b/testsuites/sptests/spintrcritical16/init.c @@ -52,7 +52,10 @@ rtems_timer_service_routine test_release_from_isr( case_hit = true; (void) rtems_semaphore_release( Semaphore ); } - _Thread_queue_Process_timeout( Main_TCB ); + + if ( Main_TCB->Wait.queue != NULL ) { + _Thread_queue_Process_timeout( Main_TCB ); + } } rtems_task Init( diff --git a/testsuites/tmtests/tmoverhd/tmoverhd.doc b/testsuites/tmtests/tmoverhd/tmoverhd.doc index a2dcbde8b6..3900c4006a 100644 --- a/testsuites/tmtests/tmoverhd/tmoverhd.doc +++ b/testsuites/tmtests/tmoverhd/tmoverhd.doc @@ -6,4 +6,79 @@ # http://www.rtems.com/license/LICENSE. # +directives: ++ rtems shutdown executive ++ rtems task create ++ rtems task ident ++ rtems task start ++ rtems task restart ++ rtems task delete ++ rtems task suspend ++ rtems task resume ++ rtems task set priority ++ rtems task mode ++ rtems task get note ++ rtems task set note ++ rtems task wake when ++ rtems task wake after ++ rtems interrupt catch ++ rtems clock get ++ rtems clock set ++ rtems clock tick ++ rtems timer create ++ rtems timer delete ++ rtems timer ident ++ rtems timer fire after ++ rtems timer fire when ++ rtems timer reset ++ rtems timer cancel ++ rtems semaphore create ++ rtems semaphore delete ++ rtems semaphore ident ++ rtems semaphore obtain ++ rtems semaphore release ++ rtems message queue create ++ rtems message queue ident ++ rtems message queue delete ++ rtems message queue send ++ rtems message queue urgent ++ rtems message queue broadcast ++ rtems message queue receive ++ rtems message queue flush ++ rtems event send ++ rtems event receive ++ rtems signal catch ++ rtems signal send ++ rtems partition create ++ rtems partition ident ++ rtems partition delete ++ rtems partition get buffer ++ rtems partition return buffer ++ rtems region create ++ rtems region ident ++ rtems region delete ++ rtems region get segment ++ rtems region return segment ++ rtems port create ++ rtems port ident ++ rtems port delete ++ rtems port external to internal ++ rtems port internal to external ++ rtems io initialize ++ rtems io open ++ rtems io close ++ rtems io read ++ rtems io write ++ rtems io control ++ rtems fatal error occurred ++ rtems rate monotonic create ++ rtems rate monotonic ident ++ rtems rate monotonic delete ++ rtems rate monotonic cancel ++ rtems rate monotonic period ++ rtems multiprocessing announce + +concepts: + ++ Test the overhead of various classic RTEMS directives. |