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 + #include #include #include @@ -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 + +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 @@ -22,16 +23,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 */ 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 @@ -27,6 +27,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) @@ -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 + #include #include #include @@ -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 #include #include @@ -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 +#include #include #include @@ -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 + #include #include #include @@ -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 -#include -#include - -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. - * - * Input parameters: NONE - * - * Output parameters: NONE - * - * Return values: NONE */ + +/* + * 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. + * + * Modifications of respective RTEMS files: + * Copyright (c) 1998, National Research Council of Canada + */ + +#include +#include +#include + +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 #include -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 #include +#include #include #include -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 + * init I2C buses */ - /* - * I2C1 is clocked with TSEC 1 - */ - 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; + (*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); } - 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; - } - 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 + * + * + * 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 +#include + +#include + +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 #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 #include -#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 #include 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 #include -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 + #include #include #include @@ -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 + #include #include #include @@ -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 + #include #include #include @@ -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 + #include #include #include @@ -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 + #include #include #include @@ -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 + * + * + * 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 + +#include + +#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 + * + * + * 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 + +#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; + rv = chroot_made ? chdir("/") : -1; + errno = 0; - send_reply(info, 220, FTPD_SERVER_MESSAGE); - - 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 similarity index 100% rename from cpukit/libnetworking/memory.h rename to 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 + +#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 similarity index 71% rename from cpukit/libnetworking/sys/uio.h rename to 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 +#ifdef __rtems__ #include +#endif /* __rtems__ */ +#include +#include -/* - * 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" { * - Extended Boot Record * - Cylinder Head Sector * - Partition Types - * - * @{ */ +/**@{**/ /** * @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 + /** - * @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 - #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 * #include * 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 +/** + * @defgroup DevFsDeviceTable Device Only File System + * + * @ingroup FileSystemTypesAndMount + * + * @brief This structure defines the type of device table + */ +/**@{*/ + #ifdef __cplusplus extern "C" { #endif -/** - * @defgroup DevFsDeviceTable Define Device Table Type - * - * @ingroup DevFs - * - * @brief This structure defines the type of device table - * - * @{ - */ +/** + * @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 @@ +/** + * @file + * + * @brief Low-level Operations on a Volume with a DOSFS FAT filesystem + * @ingroup libfs + */ + /* - * fat.c - * - * Low-level operations on a volume with FAT filesystem - * * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints */ 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 * - * Constants/data structures/prototypes for low-level operations on a volume - * with FAT filesystem + * @brief Constants/Data Structures/Prototypes 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 @@ -23,6 +30,12 @@ #include #include +/** + * @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 @@ +/** + * @file + * + * @brief Constants/Data Structures/Prototypes for Files Allocation Table + * + * @ingroup libfs_ffo + * + * Constants/Data Structures/Prototypes for + * Operations on Files Allocation Table + */ + /* - * fat_fat_operations.h - * - * Constants/data structures/prototypes for operations on Files Allocation - * Table - * * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints * @@ -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) - { - rc = fat_file_truncate(fs_info, fat_fd, 0); - if ( rc != RC_OK ) - return rc; - - _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); - - free(fat_fd); } else { - if (fat_ino_is_unique(fs_info, fat_fd->ino)) + uint32_t key = fat_construct_key(fs_info, &fat_fd->dir_pos.sname); + + if (fat_fd->flags & FAT_FILE_REMOVED) { - fat_fd->links_num = 0; + 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); + + 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 @@ -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. * - * PARAMETERS: - * cl - cluster number - * ofs - offset inside cluster 'cl' - * fs_info - FS info + * 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) * - * RETURNS: - * constructed key + * @param[in] cl - cluster number + * @param[in] ofs - offset inside cluster 'cl' + * @param[in] fs_info - FS info + * + * @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 @@ +/** + * @file + * + * @brief The MSDOS Filesystem Constants/Data Structures/Prototypes + * + * @ingroup libfs_msdos + */ + /* - * msdos.h - * - * The MSDOS filesystem constants/data structures/prototypes - * * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints * @@ -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 * 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 * 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 /** - * @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 - +/** + * @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 - +/** + * @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, , 10/2002 */ +/** + * @file + * + * @brief Basic NFS Filesystem Utilities for Testing the NFS + * @ingroup libfs + */ /* + * Author: Till Straumann, , 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 2002-2003 */ +/** + * @file + * + * @brief Public Interface to the NFS Client Library for RTEMS + * + * @ingroup rtems-nfsclient + */ /* + * Author: Till Straumann 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 #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 #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. * - * RETURNS 0 on success, nonzero if the requested timeout is less than + * Set the timeout (initial default: 10s) for NFS and mount calls. + * + * @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 2002 */ +/** + * @file + * + * @brief NFS Client Implementation for RTEMS + * @ingroup libfs + * + * Hooks Into the RTEMS NFS Filesystem + */ /* + * Author: Till Straumann , 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; + } - /* hold the lock while cleaning up... */ + if (nfsGlob.bigPool != NULL) { + rpcUdpXactPoolDestroy(nfsGlob.bigPool); + nfsGlob.bigPool = NULL; + } - rpcUdpXactPoolDestroy(smallPool); - rpcUdpXactPoolDestroy(bigPool); - l = nfsGlob.llock; - rtems_io_unregister_driver(nfsGlob.nfs_major); + if (nfsGlob.nfs_major != 0xffffffff) { + rtems_io_unregister_driver(nfsGlob.nfs_major); + nfsGlob.nfs_major = 0xffffffff; + } + + 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 , 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 , 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 , 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 , 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, , 2002 */ +/** + * @file + * + * @brief A Multithreaded RPC/UDP Multiplexor + * + * @ingroup rtems-nfsclient + */ /* + * Author: Till Straumann, , 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 #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, * 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 , 10/2002 */ +/** + * @file + * + * @brief XDR Implementation Using mbuf Buffers + * @ingroup libfs + * + * xdr_mbuf is derived from xdr_mem + */ /* + * Author (mbuf specifica): Till Straumann , 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 +/** + * @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 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. + * @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. + * + * @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,3 +1,13 @@ +/** + * @file + * + * @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 * @@ -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 Buffer Routines for the RTEMS libblock BD buffer cache. - * - */ #if HAVE_CONFIG_H #include "config.h" 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 * @@ -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 * @@ -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 - * - * 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 + * + * 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 * @@ -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 * @@ -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 * @@ -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,3 +1,13 @@ +/** + * @file + * + * @ingroup rtems_rfs + * + * @brief RTEMS File System Format + * + * This function lets you format a disk in the RFS format. + */ + /* * COPYRIGHT (c) 2010 Chris Johns * @@ -5,15 +15,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File System Format. - * - * This function lets you format a disk in the RFS format. - */ #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,3 +1,13 @@ +/** + * @file + * + * @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 * @@ -5,16 +15,7 @@ * 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. - * - * These functions open and close a group as well as manage bit allocations - * within a group. - */ + #if HAVE_CONFIG_H #include "config.h" 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 #include #include @@ -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 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. + * @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. + * + * @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 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 mutex Reference to the mutex handle returned to the caller. - * @return int The error number (errno). No error if 0. + * @param[in] mutex Reference to the mutex handle returned to the caller. + * + * @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 mutex The mutex to unlock. - * @retval true The mutex is unlocked. - * @retval false The mutex could not be unlocked. + * @param[in] mutex is a pointer to the mutex to unlock. + * + * @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 * @@ -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 * @@ -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 * @@ -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,3 +1,13 @@ +/** + * @file + * + * @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 * @@ -5,15 +15,6 @@ * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. */ -/** - * @file - * - * @ingroup rtems-rfs - * - * RTEMS File System RTEMS Header file. - * - * This file is not to be installed. It binds the RFS file system to RTEMS. - */ #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 * @@ -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 * @@ -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 * @@ -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,3 +1,13 @@ +/** + * @file + * + * @brief RFS File system Initialization + * @ingroup rtems_rfs + * + * RTEMS File System + * + */ + /* * COPYRIGHT (c) 2010 Chris Johns * @@ -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 System - * - */ #if !defined(RTEMS_RFS_DEFINED) #define RTEMS_RFS_DEFINED @@ -20,9 +22,17 @@ #include #include +/** + * @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 + * @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. + * 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 + * @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. + * @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 + * @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. + * 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 + * @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. + * @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_device_driver */ +#include /** - * @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 - * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * * * 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 +/** + * @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 +/** + * @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 + * + * 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 /** - * @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 * - * This include file contains information necessary to utilize - * and install the stack checker mechanism. + * @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. */ /* @@ -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 /** - * @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, @@ -954,6 +1043,10 @@ static int rtems_ftpfs_open( eno = ENOTSUP; } + if (eno == 0) { + rtems_ftpfs_get_file_size(e, verbose); + } + if (eno == 0) { const char *file_command = e->write ? "STOR " : "RETR "; @@ -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 /** - * @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 /** - * @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 /** - * 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 ( + * @brief POSIX translate barrier return code. + * + * This routine translates SuperCore Barrier status codes into the + * corresponding POSIX ones. * - * 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 #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 /** - * 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 +/** + * @brief Implements wake up version of the "signal" operation. + * + * DESCRIPTION: * - * _POSIX_Condition_variables_Signal_support - * - * 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 +/** @} */ + #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 /** - * @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 +/** @} */ + #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.] + * 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. */ /* @@ -36,19 +38,16 @@ #include /** - * @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 +/** @} */ + #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 #include @@ -138,16 +142,28 @@ int _POSIX_Mutex_Lock_support( ); /** - * @brief POSIX Mutex Translate Core Mutex Return Code + * @brief Convert core mutex status codes into the appropriate POSIX status + * values. * - * DESCRIPTION: + * DESCRIPTION: * - * A support routine which converts core mutex status codes into the - * appropriate POSIX status values. + * 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 + * @param[in] the_mutex_status is the mutex status code to translate * - * @return the translated POSIX status code + * @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 /** - * @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 /** - * 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 +/** @} */ + #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 #include @@ -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 #include -/** - * @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 +/** @} */ + #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 #include /** - * 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 + * @brief POSIX RWLock manager initialization. * - * This routine performs the initialization necessary for this manager. - * - * @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 #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 POSIX + * @ingroup POSIXAPI + * + * This defines the internal implementation support for POSIX semaphores. */ /**@{*/ + #ifdef __cplusplus extern "C" { #endif -/** - * @ingroup POSIX_SEMAPHORE - */ - #include #include #include @@ -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 #include /** - * 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 + * @brief Translate core spinlock status code. * - * This routine translates SuperCore Spinlock status codes into the - * corresponding POSIX ones. + * 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 #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 /** - * @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 #include /** - * @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 /* 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 #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 /** - * @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 /** - * @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 /** - * @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 #include -/* - * _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 Provides the public interface to the RTEMS Classic API. + * @brief 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 + * @brief Obtain the System Uptime * - * This directive returns the system uptime. + * This directive returns the system uptime. * - * @param[in] uptime is a pointer to the time structure + * @param[in] uptime is a pointer to the time 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 uptime will be - * filled in. - * - * 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] Returns the system uptime. Pointer must not be NULL. + * @param[out] uptime is a pointer to a struct timeval structure. + * + * @retval This methods returns the system uptime. + * + * @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. + * @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. + * 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 + * @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 + * 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 + * @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. + * 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 + * @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 + * 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 + * @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 + * 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 + * @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. + * 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. + * 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. + * 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. + * 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. + * 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. + * @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. + * @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. + * @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. + * 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 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. + * 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 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. + * 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. + * 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. + * 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). + * @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. + * @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 + * @defgroup ClassicMessageQueue Message Queues * - * 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. + * @ingroup ClassicRTEMS + * @brief Message Queue Manager * - * Directives provided are: + * 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. * - * - 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 + * 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 + * @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. + * 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 + * @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. + * @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 + * @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. + * 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 + * @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 + * @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 + * @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. + * 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 + * @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. + * @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 * - * This encapsulates functionality which XXX + * @ingroup ClassicRTEMS + * + * 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 + * @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. + * 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 + * @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 + * @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 + * @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. + * 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 + * @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. + * @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 + * @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. + * 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 + * @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. + * @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. + * @brief Semaphore Manager * - * Directives provided are: + * @defgroup ClassicSem Semaphores * - * - create a semaphore - * - get an ID of a semaphore - * - delete a semaphore - * - acquire a semaphore - * - release a semaphore + * @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 + * @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. + * 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 + * @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 + * @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 + * @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. + * 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) + * @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. + * @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 * + * @defgroup ClassicRTEMSWorkspace Workspace + * * @ingroup ClassicRTEMS - * - * @ingroup ClassicRTEMSWorkspace - * * @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. + * @defgroup ClassicTasks Tasks * - * Directives provided are: + * @ingroup ClassicRTEMS + * @brief RTEMS Tasks * - * - 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 + * 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 + * @defgroup ClassicTimer Timers * - * 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. + * @ingroup ClassicRTEMS + * @brief Instantiate RTEMS Timer Data * - * Directives provided are: + * 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. * - * - 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 + * 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 + * @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. + * 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 + * @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. + * @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 + * @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. + * 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 + * @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. + * @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 + * @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. + * 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 + * @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. + * @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; + + /* + * At this point the event condition is a speculative quantity. Later state + * checks will show if the thread actually waits for an event. + */ event_condition = the_thread->Wait.count; seized_events = _Event_sets_Get( pending_events, event_condition ); - /* - * No events were seized in this operation - */ - if ( _Event_sets_Is_empty( seized_events ) ) { - _ISR_Enable( level ); - return; - } - - /* - * 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) ) { + 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 /** - * 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 @@ -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 #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 @@ -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 @@ -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 @@ -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 @@ -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 /** - * 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(). */ @@ -82,13 +75,23 @@ void rtems_fatal( rtems_fatal_code error ) 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 /* bool */ #include /* uint32_t */ @@ -42,11 +41,11 @@ extern "C" { #include +/** @} */ + #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 /** - * @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 + * @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. - * - * @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 /** - * @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 + * + * + * 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 + +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 similarity index 62% rename from cpukit/score/cpu/arm/armv7m-exception-frame-print.c rename to 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 +#include -#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 - -#ifdef ARM_MULTILIB_ARCH_V4 +#include 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 + * + * + * 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 +#include + +#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 +#include #include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 #include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 #include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 + * + * + * 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 + +#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 #include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 +#include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 +#include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 +#include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 +#include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 +#include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 #include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 #include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 +#include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 +#include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 #include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 +#include #ifdef ARM_MULTILIB_ARCH_V7M -#include - 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 + * + * + * 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 + +#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 -#include +#include #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,82 +490,46 @@ 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; +#endif /* defined(ARM_MULTILIB_ARCH_V4) */ - 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 ); - -/** @} */ - -/* 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; - -#endif /* !defined(ARM_MULTILIB_ARCH_V4) */ - void _CPU_Exception_frame_print( const CPU_Exception_frame *frame ); +void _ARM_Exception_default( CPU_Exception_frame *frame ); + +/** @} */ + #ifdef __cplusplus } #endif 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. +/** + * @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 + * #include + * #include + * + * 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: Bootloader Support Utilities - \code - #include - #include - \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 - #include - #include - - 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 #include @@ -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 . */ + USHRT_MAX is defined in . */ #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 after the individual + * device IO header files, and after + */ - 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 +/** + * @defgroup Avr_common Common Data + * + * @ingroup avr + */ +/**@{*/ + #include -/* -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 after the individual -device IO header files, and after - -*/ - /*------------ 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. +/** + * @file + * + * @brief Moved to + */ - 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) 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 ." #include +/**@}*/ #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. +/** + * @file + * + * @brief Moved to + */ - 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) 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 ." #include +/** @} */ #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. +/** + * @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. + */ - 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) 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 /* size_t */ #include -/** \defgroup avr_eeprom : EEPROM handling - \code #include \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 -mmcu= compiler + * command-line switch. This is done by diverting to the appropriate + * file <avr/ioXXXX.h> which should + * never be included directly. Some register names common to all + * AVR devices are defined directly within <avr/common.h>, + * which is included in <avr/io.h>, + * but most of the details come from the respective include file. + * + * Note that this file always includes the following files: + * \code + * #include + * #include + * #include + * #include + * \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 + *
+ * The last on-chip RAM address. + *
+ * - \b XRAMEND + *
+ * 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. + *
+ * - \b E2END + *
+ * The last EEPROM address. + *
+ * - \b FLASHEND + *
+ * The last byte address in the Flash program space. + *
+ * - \b SPM_PAGESIZE + *
+ * For devices with bootloader support, the flash pagesize + * (in bytes) to be used for the \c SPM instruction. + * - \b E2PAGESIZE + *
+ * 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 device-specific IO definitions - \code #include \endcode - - This header file includes the apropriate IO definitions for the - device that has been specified by the -mmcu= compiler - command-line switch. This is done by diverting to the appropriate - file <avr/ioXXXX.h> which should - never be included directly. Some register names common to all - AVR devices are defined directly within <avr/common.h>, - which is included in <avr/io.h>, - but most of the details come from the respective include file. - - Note that this file always includes the following files: - \code - #include - #include - #include - #include - \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 -
- The last on-chip RAM address. -
- - \b XRAMEND -
- 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. -
- - \b E2END -
- The last EEPROM address. -
- - \b FLASHEND -
- The last byte address in the Flash program space. -
- - \b SPM_PAGESIZE -
- For devices with bootloader support, the flash pagesize - (in bytes) to be used for the \c SPM instruction. - - \b E2PAGESIZE -
- 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 #if defined (__AVR_AT94K__) @@ -416,4 +425,5 @@ /* Include lock.h after individual IO header files. */ #include +/** @} */ #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. +/** + * @file avr/io1200.h + * + * @brief Definitions for AT90S1200 + * + * This file should only be included from , 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/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 , never directly. */ +/** + * @defgroup Avr_io1200 AT90S1200 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io1200.h" #else # error "Attempt to include more than one 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 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. +/** + * @file avr/io2343.h + * + * @brief Definitions for AT90S2343 + * + * This file should only be included from , 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/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 , never directly. */ +/** + * @defgroup Avr_io2343 AT90S2343 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io2343.h" #else # error "Attempt to include more than one 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 , 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 , never directly. */ +/** + * @defgroup Avr_io43u32x AT43USB32x Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io43u32x.h" #else # error "Attempt to include more than one 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 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 , never directly. + */ + /* Copyright (c) 2002, Marek Michalkiewicz All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one 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 , 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 , never directly. */ +/** + * @defgroup Avr_io4433 AT90S4433 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io4433.h" #else # error "Attempt to include more than one 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 , 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 , never directly. */ +/** + * @defgroup Avr_io4434 AT90S4434 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "io4434.h" #else # error "Attempt to include more than one 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 , never directly. + */ + /* Copyright (c) 2002, Marek Michalkiewicz All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one 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 , never directly. + */ + /* Copyright (c) 2002, Marek Michalkiewicz All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one 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 , 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 , never directly. */ - #ifndef _AVR_IO_H_ # error "Include instead of this file." #endif @@ -44,7 +49,15 @@ # define _AVR_IOXXX_H_ "io8535.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/io86r401.h + * + * @brief Definitions for AT86RF401 + * + * This file should only be included from , 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/io86r401.h - definitions for AT86RF401 */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_io86r401 AT86RF401 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include 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 , 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 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 , never directly. + */ + /* Copyright (c) 2007, Atmel Corporation All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one 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. +/** + * @file avr/io90pwm2b.h + * + * @brief Definitions for AT90PWM2B + * + * This file should only be included from , 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/io90pwm2b.h - definitions for AT90PWM2B */ - -/* This file should only be included from , 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 instead of this file." @@ -42,12 +46,20 @@ # define _AVR_IOXXX_H_ "io90pwm2b.h" #else # error "Attempt to include more than one 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 , 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 , never directly. + */ + /* Copyright (c) 2009 Atmel Corporation All rights reserved. @@ -43,6 +51,13 @@ # error "Attempt to include more than one 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 , never directly. + */ + /* Copyright (c) 2005, Andrey Pashchenko All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one 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. +/** + * @file avr/io90scr100.h + * + * @brief Definitions for AT90SCR100 + * + * This file should only be included from , 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/io90scr100.h - definitions for AT90SCR100 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "io90scr100.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/ioa6289.h + * + * @brief Definitions for ATA6289 + * + * This file should only be included from , 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/ioa6289.h - definitions for ATA6289 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,19 @@ # define _AVR_IOXXX_H_ "ioa6289.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/ioat94k.h + * + * @brief Definitions for AT94K Series FPSLIC(tm) + * + * This file should only be included from , 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/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 , never directly. */ - #ifndef _AVR_IO_H_ # error "Include instead of this file." #endif @@ -44,7 +49,14 @@ # define _AVR_IOXXX_H_ "ioat94k.h" #else # error "Attempt to include more than one 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 - All rights reserved. +/** + * @file iocan32.h + * + * @brief Definitions for CAN32 + * + * This file should only be included from , 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. */ - - -/* iocan32.h - definitions for CAN32 */ +/* + * Copyright (c) 2004,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_IOCAN32_H_ #define _AVR_IOCAN32_H_ 1 +/** + * @defgroup AvrDef_CAN32 CAN32 Defintions + * + * @ingroup avr + * + */ +/**@{**/ + #include /* 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 - All rights reserved. +/** + * @file iocanxx.h + * + * @brief Definitions for AT90CAN32, AT90CAN64 and AT90CAN128 + * + * This file should only be included from , never directly. + * + * This file is based largely on: + * - iom128.h by Peter Jansen (bit defines) + * - iom169.h by Juergen Schilling + * (register addresses) + * - AT90CAN128 Datasheet (bit defines and register addresses) + * - Appnote on Mega128 --> AT90Can128 Conversion (for what registers I need + * to change) + */ - 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 - (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 */ +/* + * Copyright (c) 2004,2005,2006 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_IOCANXX_H_ #define _AVR_IOCANXX_H_ 1 -/* This file should only be included from , never directly. */ +/** + * @defgroup Avr_iocanxx AT90CAN32, AT90CAN64, AT90CAN128 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -52,7 +64,7 @@ # define _AVR_IOXXX_H_ "iocanxx.h" #else # error "Attempt to include more than one 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 , 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 , never directly. */ - #ifndef _AVR_IO_H_ # error "Include instead of this file." #endif @@ -44,7 +49,15 @@ # define _AVR_IOXXX_H_ "iom103.h" #else # error "Attempt to include more than one 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 , 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 , never directly. */ +/** + * @defgroup Avr_iom128 ATmega128 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -48,7 +60,7 @@ # define _AVR_IOXXX_H_ "iom128.h" #else # error "Attempt to include more than one 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 +/** + * @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 + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: +/* + * 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. + */ - * 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 /* 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 , never directly. */ - -#ifndef _AVR_IO_H_ -# error "Include instead of this file." -#endif - -#ifndef _AVR_IOXXX_H_ -# define _AVR_IOXXX_H_ "iom1284p.h" -#else -# error "Attempt to include more than one 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 , 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 instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom1284p.h" +#else +# error "Attempt to include more than one 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. +/** + * @file avr/iom16.h + * + * @brief Definitions for ATmega16 + * + * This file should only be included from , 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/iom16.h - definitions for ATmega16 */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_iom16 ATmega16 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom16.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom161.h + * + * @brief Definitions for ATmega161 + * + * This file should only be included from , 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/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 , never directly. */ +/** + * @defgroup Avr_iom161 ATmega161 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom161.h" #else # error "Attempt to include more than one 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 - All rights reserved. +/** + * @file iom162.h + * + * @brief Definitions for ATmega162 + * + * This file should only be included from , 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. */ - - -/* iom162.h - definitions for ATmega162 */ +/* + * Copyright (c) 2002, Nils Kristian Strom + * 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 , never directly. */ +/** + * @defgroup Avr_iom162 ATmega162 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom162.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom163.h + * + * @brief Definitions for ATmega163 + * + * This file should only be included from , 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/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 , never directly. */ +/** + * @defgroup Avr_iom163 ATmega163 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom163.h" #else # error "Attempt to include more than one 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 +/** + * @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 , never directly. + */ + /* Copyright (c) 2004,2005,2006 Eric B. Weddington All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one 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 /* 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 , never directly. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: +/* + * 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. + */ - * 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 , never directly. */ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -42,12 +47,19 @@ # define _AVR_IOXXX_H_ "iom168p.h" #else # error "Attempt to include more than one 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 , never directly. + */ + /* Copyright (c) 2002, 2003, 2004, 2005 Juergen Schilling Eric B. Weddington @@ -50,6 +58,14 @@ # error "Attempt to include more than one 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 , never directly. + */ + /* Copyright (c) 2002, 2003, 2004, 2005, 2006 Juergen Schilling Eric B. Weddington @@ -49,6 +57,14 @@ # error "Attempt to include more than one 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. +/** + * @file avr/iom169pa.h + * + * @brief Definitions for ATmega169PA + * + * This file should only be included from , 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/iom169pa.h - definitions for ATmega169PA */ - -/* This file should only be included from , 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 instead of this file." @@ -41,8 +46,15 @@ # define _AVR_IOXXX_H_ "iom169pa.h" #else # error "Attempt to include more than one 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 +/** + * @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. +/** + * @file avr/iom16hva2.h + * + * @brief Definitions for ATmega16HVA2 + * + * This file should only be included from , 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/iom16hva2.h - definitions for ATmega16HVA2 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16hva2.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom16hvb.h + * + * @brief Definitions for ATmega16HVB + * + * This file should only be included from , 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/iom16hvb.h - definitions for ATmega16HVB */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16hvb.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom16m1.h + * + * @brief Definitions for ATmega16M1 + * + * This file should only be included from , 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/iom16m1.h - definitions for ATmega16M1 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16m1.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom16u2.h + * + * @brief Definitions for ATmega16U2 + * + * This file should only be included from , 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/iom16u2.h - definitions for ATmega16U2 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16u2.h" #else # error "Attempt to include more than one 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. +/** + * @file aavr/iom16u4.h + * + * @brief Definitions for ATmega16U4 + * + * This file should only be included from , 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/iom16u4.h - definitions for ATmega16U4 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom16u4.h" #else # error "Attempt to include more than one 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 -/* 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. +/** + * @file avr/iom32.h + * + * @brief Definitions for ATmega32 + * + * This file should only be included from , 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/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 , never directly. */ +/** + * @defgroup Avr_iom32 ATmega32 Definitons + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom32.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom323.h + * + * @brief Definitions for ATmega323 + * + * This file should only be included from , 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/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 , never directly. */ +/** + * @defgroup Avr_iom323 ATmega323 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom323.h" #else # error "Attempt to include more than one 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 /* 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 , 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 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 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 , 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 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. +/** + * @file avr/iom3290.h + * + * @brief Definitions for ATmega3290 and ATmega3290P + */ - 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. */ +/* + * 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 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. +/** + * @file avr/iom32c1.h + * + * @brief Definitions for ATmega32C1 + * + * This file should only be included from , 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/iom32c1.h - definitions for ATmega32C1 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,19 @@ # define _AVR_IOXXX_H_ "iom32c1.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom32m1.h + * + * @brief Definitions for ATmega32M1 + * + * This file should only be included from , 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/iom32m1.h - definitions for ATmega32M1 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,19 @@ # define _AVR_IOXXX_H_ "iom32m1.h" #else # error "Attempt to include more than one 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 , 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. +/** + * @file avr/iom32u6.h + * + * @brief Definitions for ATmega32U6 + * + * This file should only be included from , 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/iom32u6.h - definitions for ATmega32U6 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom32u6.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom406.h + * + * @brief Definitions for ATmega406 + * + * This file should only be included from , 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/iom406.h - definitions for ATmega406 */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_iom406 ATmega406 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom406.h" #else # error "Attempt to include more than one 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 /* 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. +/** + * @file avr/iom48p.h + * + * @brief Definitions for ATmega48P + * + * This file should only be included from , 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/iom48p.h - definitions for ATmega48P. */ - -/* This file should only be included from , 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 instead of this file." @@ -42,12 +46,19 @@ # define _AVR_IOXXX_H_ "iom48p.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom640.h + * + * @brief Definitions for ATmega640 + */ - 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 */ +/* + * 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 /* 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 +/** + * @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 -/* 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. +/** + * @file avr/iom644PA.h + * + * @brief Definitions for ATmega644PA + * + * This file should only be included from , 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/iom644PA.h - definitions for ATmega644PA */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom644PA.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom645.h + * + * @brief Definitions for ATmega645 + * + * This file should only be included from , 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/iom645.h - definitions for ATmega645 */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_iom645 ATmega645 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom645.h" #else # error "Attempt to include more than one 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 , never directly. + */ + /* Copyright (c) 2004,2005,2006 Eric B. Weddington All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one 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. +/** + * @file avr/iom649.h + * + * @brief Definitions for ATmega649 + * + * This file should only be included from , 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/iom649.h - definitions for ATmega649 */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_iom649 ATmega649 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +57,7 @@ # define _AVR_IOXXX_H_ "iom649.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iom6490.h + * + * @brief Definitions for ATmega6490 + * + * This file should only be included from , 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/iom6490.h - definitions for ATmega6490 */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_iom6490 ATmega6490 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +57,7 @@ # define _AVR_IOXXX_H_ "iom6490.h" #else # error "Attempt to include more than one 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 , 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. +/** + * @file avr/iom64hve.h + * + * @brief Definitions for ATmega64HVE + * + * This file should only be included from , 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/iom64hve.h - definitions for ATmega64HVE */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iom64hve.h" #else # error "Attempt to include more than one 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 , never directly. + */ + /* Copyright (c) 2002, Marek Michalkiewicz All rights reserved. @@ -46,6 +54,14 @@ # error "Attempt to include more than one 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 , 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 , never directly. */ +/** + * @defgroup Avr_iom8515 ATmega8515 Definitons + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iom8515.h" #else # error "Attempt to include more than one 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 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 /* 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. +/** + * @file avr/iom88p.h + * + * @brief Definitions for ATmega88P + * + * This file should only be included from , 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/iom88p.h - definitions for ATmega88P. */ - -/* This file should only be included from , 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 instead of this file." @@ -42,12 +46,19 @@ # define _AVR_IOXXX_H_ "iom88p.h" #else # error "Attempt to include more than one 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 +/** + * @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 , 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 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. +/** + * @file avr/iomxx0_1.h + * + * @brief Definitions for ATmega640/1280/1281/2560/2561 + * + * This file should only be included from , 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/iomxx0_1.h - definitions for ATmega640, Atmega1280, ATmega1281, - ATmega2560 and ATmega2561. */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_iomxx0_1 ATmega640/1280/1281/2560/2561 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -45,7 +56,7 @@ # define _AVR_IOXXX_H_ "iomxx0_1.h" #else # error "Attempt to include more than one 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 , 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 , never directly. */ +/** + * @defgroup AvrDef_iomXX4 ATmega164P/324P/644P , ATmega644 Defintions + * + * @ingroup avr + * + */ +/**@{**/ #ifndef _AVR_IO_H_ # error "Include 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. +/** + * @file iomxxhva.h + * + * @brief Definitions for ATmega8HVA and ATmega16HVA + * + * This file should only be included from , 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. */ - - -/* iomxxhva.h - definitions for ATmega8HVA and ATmega16HVA. */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_iomxxhva ATmega8HVA, ATmega16HVA Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iomxxhva.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotn11.h + * + * @brief Definitions for ATtiny10/11 + * + * This file should only be included from , 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/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 , never directly. */ +/** + * @defgroup Avr_iotn11 ATtiny10/11 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iotn11.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotn12.h + * + * @brief Definitions for ATtiny12 + * + * This file should only be included from , 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/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 , never directly. */ +/** + * @defgroup Avr_iotn12 ATtiny12 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iotn12.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotn13.h + * + * @brief Definitions for ATtiny13 + * + * Verified 5/20/04 by Bruce Graham + * + * This file should only be included from , 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/iotn13.h - definitions for ATtiny13 */ - -/* Verified 5/20/04 by Bruce Graham */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_iotn13 ATtiny13 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -46,7 +58,7 @@ # define _AVR_IOXXX_H_ "iotn13.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotn15.h + * + * @brief Definitions for ATtiny15 + * + * This file should only be included from , 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/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 , never directly. */ +/** + * @defgroup AvrDef_iotn15 ATtiny15 Definitions + * + * @ingroup avr + * + */ +/**@{**/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +57,7 @@ # define _AVR_IOXXX_H_ "iotn15.h" #else # error "Attempt to include more than one 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 , 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 , never directly. + */ + /* Copyright (c) 2004, 2005, 2006 Bob Paddock All rights reserved. @@ -71,6 +79,14 @@ # error "Attempt to include more than one 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. +/** + * @file avr/iotn2313a.h + * + * @brief Definitions for ATtiny2313A + * + * This file should only be included from , 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/iotn2313a.h - definitions for ATtiny2313A */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn2313a.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotn24.h + * + * @brief Definitions for ATtiny24 + */ - 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 */ +/* + * 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 #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. +/** + * @file avr/iotn24a.h + * + * @brief Definitions for ATtiny24A + * + * This file should only be included from , 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/iotn24a.h - definitions for ATtiny24A */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn24a.h" #else # error "Attempt to include more than one 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 , 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 #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. +/** + * @file avr/iotn261a.h + * + * @brief Definitions for ATtiny261A + * + * This file should only be included from , 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/iotn261a.h - definitions for ATtiny261A */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn261a.h" #else # error "Attempt to include more than one 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 , 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. +/** + * @file avr/iotn4313.h + * + * @brief Definitions for ATtiny4313 + * + * This file should only be included from , 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/iotn4313.h - definitions for ATtiny4313 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn4313.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotn43u.h + * + * @brief Definitions for ATtiny43U + * + * This file should only be included from , 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/iotn43u.h - definitions for ATtiny43U */ - -/* This file should only be included from , 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 instead of this file." @@ -42,12 +46,19 @@ # define _AVR_IOXXX_H_ "iotn43u.h" #else # error "Attempt to include more than one 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 + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: +/* + * 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. + */ - * 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 /* 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. +/** + * @file avr/iotn45.h + * + * @brief Definitions for ATtiny45 + */ - 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 */ +/* + * 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 /* 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 +/** + * @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. +/** + * @file avr/iotn461a.h + * + * @brief Definitions for ATtiny461A + * + * This file should only be included from , 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/iotn461a.h - definitions for ATtiny461A */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn461a.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotn48.h + * + * @brief Definitions for ATtiny48 + * + * This file should only be included from , 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/iotn48.h - definitions for ATtiny48 */ - -/* This file should only be included from , 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 instead of this file." @@ -42,12 +46,19 @@ # define _AVR_IOXXX_H_ "iotn48.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotn85.h + * + * @brief Definitions for ATtiny85 + */ - 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 */ +/* + * 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 /* 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 -/* 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. +/** + * @file avr/iotn861a.h + * + * @brief Definitions for ATtiny861A + * + * This file should only be included from , 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/iotn861a.h - definitions for ATtiny861A */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn861a.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotn87.h + * + * @brief Definitions for ATtiny87 + * + * This file should only be included from , 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/iotn87.h - definitions for ATtiny87 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iotn87.h" #else # error "Attempt to include more than one 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 , never directly. + */ + /* Copyright (c) 2007 Atmel Corporation All rights reserved. @@ -44,6 +52,13 @@ # error "Attempt to include more than one 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 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 ] */ /* 0x3F SREG [defined in ] */ -///--- +/** @} */ -/* 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. +/** + * @file avr/iotnx5.h + * + * @brief Definitions for ATtiny25, ATtiny45 and ATtiny85 + * + * This file should only be included from , 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/iotnx5.h - definitions for ATtiny25, ATtiny45 and ATtiny85 */ +/* + * 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 , never directly. */ +/** + * @defgroup Avr_iotnx5 ATtiny25, ATtiny45, ATtiny85 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +56,7 @@ # define _AVR_IOXXX_H_ "iotnx5.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iotnx61.h + * + * @brief Definitions for ATtiny261, ATtiny461 and ATtiny861 + * + * This file should only be included from , 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/iotnx61.h - definitions for ATtiny261, ATtiny461 and ATtiny861 */ - -/* This file should only be included from , 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 instead of this file." @@ -41,11 +46,19 @@ # define _AVR_IOXXX_H_ "iotnx61.h" #else # error "Attempt to include more than one 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. +/** + * @file avr/iousb1286.h + * + * @brief Definitions for AT90USB1286 + */ - 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 */ +/* + * 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 /* 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. +/** + * @file avr/iousb1287.h + * + * @brief Definitions for AT90USB1287 + */ - 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 */ +/* + * 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 /* 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 -/* 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. +/** + * @file avr/iousb646.h + * + * @brief Definitions for AT90USB646 + */ - 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 */ +/* + * 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 /* 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 +/** + * @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 +/** + * @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. +/** + * @file iousbxx2.h + * + * @brief Definitions for AT90USB82 and AT90USB162 + * + * This file should only be included from , 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. */ - - -/* iousbxx2.h - definitions for AT90USB82 and AT90USB162. */ +/* + * 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 , never directly. */ +/** + * @defgroup AvrDef_iousbxx2 AT90USB82, AT90USB162 Definitions + * + * @ingroup avr + * + */ +/**@{**/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -44,7 +57,7 @@ # define _AVR_IOXXX_H_ "iousbxx2.h" #else # error "Attempt to include more than one 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. +/** + * @file iousbxx6_7.h + * + * @brief Definitions for AT90USB646, AT90USB647, AT90USB1286, AT90USB1287 + * + * This file should only be included from , 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. */ - - -/* iousbxx6_7.h - definitions for AT90USB646, AT90USB647, AT90USB1286 - and 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_IOUSBXX6_7_H_ #define _AVR_IOUSBXX6_7_H_ 1 -/* This file should only be included from , never directly. */ +/** + * @defgroup Avr_iomxx0_1 AT90USB-646/647/1286/1287 Definitions + * + * @ingroup avr + */ +/**@{*/ #ifndef _AVR_IO_H_ # error "Include instead of this file." @@ -45,7 +56,7 @@ # define _AVR_IOXXX_H_ "iousbxx6_7.h" #else # error "Attempt to include more than one 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. */ +/* 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 -#define DMA_CH_TRNIF_bm 0x10 /* Transaction Complete Interrup Flag bit mask. */ -#define DMA_CH_TRNIF_bp 4 /* Transaction Complete Interrup Flag bit position. */ +/* Transaction Complete Interrup Flag bit mask. */ +#define DMA_CH_TRNIF_bm 0x10 +/* Transaction Complete Interrup Flag bit position. */ +#define DMA_CH_TRNIF_bp 4 -#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. */ +/* 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 -#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. */ +/* 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. */ +/* 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 -#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. */ +/* 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 -#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 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. */ +/* 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 -#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. */ +/* 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 -#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. */ +/* 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 -#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. */ +/* 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 -#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. */ +/* 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 -#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. */ +/* 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 -#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. */ +/* 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 -#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 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. */ +/* 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 -#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 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. */ +/* 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 -#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. */ +/* 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 -#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 - 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. */ +/* 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 -#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. */ +/* 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 -#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. */ +/* 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. */ +/* 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 -#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. */ +/* 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. */ +/* 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 -#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. */ +/* 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 -#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. */ +/* 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 -#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 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. */ +/* 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 -#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. */ +/* 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 -#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. */ +/* 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 -#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 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. */ +/* 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 -#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 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 , 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 , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox128a3.h" #else # error "Attempt to include more than one 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 , 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 , 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 instead of this file." @@ -41,8 +46,14 @@ # define _AVR_IOXXX_H_ "iox16a4.h" #else # error "Attempt to include more than one 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 , 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 , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox16d4.h" #else # error "Attempt to include more than one 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 , 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 , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox192a3.h" #else # error "Attempt to include more than one 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 , 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 , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox192d3.h" #else # error "Attempt to include more than one 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 , 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 , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox256a3b.h" #else # error "Attempt to include more than one 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 , 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 , 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 instead of this file." @@ -41,12 +46,19 @@ # define _AVR_IOXXX_H_ "iox256d3.h" #else # error "Attempt to include more than one 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 , 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 , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox32a4.h" #else # error "Attempt to include more than one 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 , 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 , 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 , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox64a1.h" #else # error "Attempt to include more than one 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 , 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 , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox64a3.h" #else # error "Attempt to include more than one 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 , 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 , 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 instead of this file." @@ -41,12 +46,18 @@ # define _AVR_IOXXX_H_ "iox64d3.h" #else # error "Attempt to include more than one 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. +/** + * @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 header file, which in turn + * automatically includes the individual I/O header file and the + * 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 + * + * 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 + * + * LOCKBITS = (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); + * + * int main(void) + * { + * return 0; + * } + * \endcode + * + * Or: + * + * \code + * #include + * + * 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 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=device 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 . + * + * 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 + * \endcode + */ - 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 */ +/* + * 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 : 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 header file, which in turn - automatically includes the individual I/O header file and the - 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 - - 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 - - LOCKBITS = (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); - - int main(void) - { - return 0; - } - \endcode - - Or: - - \code - #include - - 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 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=device 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 . - - 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 - \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. +/** + * @file + * + * @brief Koved to + */ - 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) 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 ." #include +/** @} */ #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. */ - - -/* - pgmspace.h - - Contributors: - Created by Marek Michalkiewicz - Eric B. Weddington - Wolfgang Haidinger (pgm_read_dword()) - Ivanov Anton (pgm_read_float()) +/** + * @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. + * All these functions will not work in that situation. + * + * Contributors: + * Created by Marek Michalkiewicz + * Eric B. Weddington + * Wolfgang Haidinger (pgm_read_dword()) + * Ivanov Anton (pgm_read_float()) */ -/** \file */ -/** \defgroup avr_pgmspace : Program Space Utilities - \code - #include - #include - \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. - All these functions will not work in that situation. -*/ +/* + * 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. + */ #ifndef __PGMSPACE_H_ #define __PGMSPACE_H_ 1 +/** + * @defgroup avr_pgmspace Program Space Utilities + * + * @ingroup avr + * + */ +/**@{**/ + #define __need_size_t #include #include @@ -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 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. +/** + * @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. + */ - 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) 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 #include - -/** \file */ -/** \defgroup avr_power : Power Reduction Management - -\code #include \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 - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Power MacroDescriptionApplicable for device
power_adc_enable()Enable the Analog to Digital Converter module.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
power_adc_disable()Disable the Analog to Digital Converter module.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
power_lcd_enable()Enable the LCD module.ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490
power_lcd_disable().Disable the LCD module.ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490
power_psc0_enable()Enable the Power Stage Controller 0 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc0_disable()Disable the Power Stage Controller 0 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc1_enable()Enable the Power Stage Controller 1 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc1_disable()Disable the Power Stage Controller 1 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc2_enable()Enable the Power Stage Controller 2 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc2_disable()Disable the Power Stage Controller 2 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_spi_enable()Enable the Serial Peripheral Interface module.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
power_spi_disable()Disable the Serial Peripheral Interface module.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
power_timer0_enable()Enable the Timer 0 module.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
power_timer0_disable()Disable the Timer 0 module.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
power_timer1_enable()Enable the Timer 1 module.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
power_timer1_disable()Disable the Timer 1 module.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
power_timer2_enable()Enable the Timer 2 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_timer2_disable()Disable the Timer 2 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_timer3_enable()Enable the Timer 3 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
power_timer3_disable()Disable the Timer 3 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
power_timer4_enable()Enable the Timer 4 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561
power_timer4_disable()Disable the Timer 4 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561
power_timer5_enable()Enable the Timer 5 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561
power_timer5_disable()Disable the Timer 5 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561
power_twi_enable()Enable the Two Wire Interface module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168
power_twi_disable()Disable the Two Wire Interface module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168
power_usart_enable()Enable the USART module.AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_usart_disable()Disable the USART module.AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_usart0_enable()Enable the USART 0 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_usart0_disable()Disable the USART 0 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_usart1_enable()Enable the USART 1 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P
power_usart1_disable()Disable the USART 1 module.ATmega640, ATmega1280, ATmega1281, ATmega128RFA1, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P
power_usart2_enable()Enable the USART 2 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_usart2_disable()Disable the USART 2 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_usart3_enable()Enable the USART 3 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_usart3_disable()Disable the USART 3 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_usb_enable()Enable the USB module.AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
power_usb_disable()Disable the USB module.AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
power_usi_enable()Enable the Universal Serial Interface module.ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_usi_disable()Disable the Universal Serial Interface module.ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_vadc_enable()Enable the Voltage ADC module.ATmega406
power_vadc_disable()Disable the Voltage ADC module.ATmega406
power_all_enable()Enable all modules.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
power_all_disable()Disable all modules.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
-
-
- -@} */ +/** + * @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 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 - \ingroup avr_sfr +/** + * @defgroup avr_sfr_notes Additional notes from + * + * @ingroup avr_sfr + * + * The @c file is included by all of the @c + * files, which use macros defined here to make the special function register + * definitions look like C variables or simple constants, depending on the + * _SFR_ASM_COMPAT define. Some examples from @c 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 + * PORTA 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 + * __SFR_OFFSET definition is no longer necessary and can be removed. - The \c file is included by all of the \c - files, which use macros defined here to make the special function register - definitions look like C variables or simple constants, depending on the - _SFR_ASM_COMPAT define. Some examples from \c 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 - PORTA 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 - __SFR_OFFSET 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 -: #define SPMCR _SFR_IO8(0x37) -: #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 - _SFR_IO_REG_P 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 __SFR_OFFSET != 0x20, so use a different macro - (defined only if __SFR_OFFSET == 0x20) for safety: - -\code - sts _SFR_ADDR(SPMCR), r24 -\endcode - - In C programs, all 3 combinations of \c _SFR_ASM_COMPAT and - __SFR_OFFSET 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). */ + * Real example - this code could be used in a boot loader that is portable + * between devices with @c SPMCR at different addresses. + * + * @verbatim + * : #define SPMCR _SFR_IO8(0x37) + * : #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 + * _SFR_IO_REG_P 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 __SFR_OFFSET != 0x20, so use a different macro + * (defined only if __SFR_OFFSET == 0x20) for safety: + * + * @code + * sts _SFR_ADDR(SPMCR), r24 + * @endcode + * + * In C programs, all 3 combinations of @c _SFR_ASM_COMPAT and + * __SFR_OFFSET 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 */ +/** + * @name Bit Manipulation + */ +/**@{**/ -/*@{*/ -/** \def _BV - \ingroup avr_sfr - - \code #include \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(). */ - +/** + * @code #include @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 \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 @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 \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 @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 \endcode - - Wait until bit \c bit in IO register \c sfr is set. */ - +/** + * @code #include @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 \endcode - - Wait until bit \c bit in IO register \c sfr is clear. */ - +/** + * @code #include @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. +/** + * @file + * + * @brief Use + */ - 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) 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 ." #include +/**@}*/ #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 : Signature Support - - \par Introduction - - The 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 - \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 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 + * @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 #include - -/** \file */ - -/** \defgroup avr_sleep : Power Management and Sleep Modes - - \code #include \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 - - ... - set_sleep_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 - #include - - ... - set_sleep_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 - #include - - ... - set_sleep_mode(); - cli(); - if (some_condition) - { - sleep_enable(); - sleep_bod_disable(); - sei(); - sleep_cpu(); - sleep_disable(); - } - sei(); - \endcode -*/ +/** + * @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 + * + * ... + * set_sleep_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 + * #include * + * + * ... + * set_sleep_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 + * #include * + * + * ... + * set_sleep_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. */ +/* + * 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. +/** + * @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 . That way, + * portable tests can be implemented using \c 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. + */ - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: +/* + * 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. + */ - * 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-libc version macros - \code #include \endcode - - 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 . That way, - portable tests can be implemented using \c 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 #include -/** \file */ -/** \defgroup avr_watchdog : Watchdog timer handling - \code #include \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 - #include - - 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 + * #include + * + * 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 @@ -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 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 * and Antonio Giovanini 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 @@ -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: + * @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 + * - 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. + * 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. + * @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: + * Port Specific Information: * - * See implementation in cpu.c + * 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. + * 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. + * 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. + * -# 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. + * 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. + * 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: + * 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 * and Antonio Giovanini 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 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 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: + * @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 + * - 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. + * 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. + * @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: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * 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. + * 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. + * 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. + * -# 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. + * 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. + * 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: + * 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. + * 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 "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? + * 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 __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. + * 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 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 + * @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 ) \ 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: + * @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 + * - 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. + * 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. + * @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: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * 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. + * @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 ) \ { \ @@ -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. + * 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. + * 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. + * -# 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. + * 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. + * 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: + * 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 @@ +/** + * @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. + */ + /* - -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. - -*/ - -/* 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 * - * @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: + * @brief Intel M32R CPU Dependent Source * - * + Anywhere there is an XXX, it should be replaced - * with information about the CPU family being ported to. + * This include file contains information pertaining to the XXX + * processor. * - * + 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 + * 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. + * + * + 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: + * @brief Initialize CPU 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 + * @ingroup CPUContext + * Initialize the context to a state suitable for starting a + * task after a context restore operation. Generally, this + * involves: * - * 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. + * - 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 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. + * 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. * - * Port Specific Information: + * @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. * - * XXX document implementation including references if appropriate + * 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. + * 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. + * 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. + * -# 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. + * 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. + * 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: + * 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 - - -/* -** iregdef.h - IDT R3000 register structure header file -** -** Copyright 1989 Integrated Device Technology, Inc -** All Rights Reserved -** -*/ -#ifndef _RTEMS_MIPS_IREGDEF_H -#define _RTEMS_MIPS_IREGDEF_H - -/* +/** + * @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. */ + /* -** register names -*/ + * 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 + +/** + * @defgroup MipsSet_iregdef Register Structure + * + * @ingroup MIPS + * + */ +/**@{*/ + +/* 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 and * Joel Sherrill . @@ -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 #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 - * - * 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. + * @defgroup CPUEndian Processor Dependent Endianness Support * - * @note @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the - * same values. + * This group assists in issues related to processor endianness. + * + */ +/**@{**/ + +/** + * Define what is required to specify how the network to host conversion + * routines are handled. * - * @see CPU_LITTLE_ENDIAN + * NOTE: @a CPU_BIG_ENDIAN and @a CPU_LITTLE_ENDIAN should NOT have the + * same values. * - * Port Specific Information: + * @see CPU_LITTLE_ENDIAN * - * XXX document implementation including references if appropriate + * Port Specific Information: + * + * 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: + * + * 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 * - * 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. + * 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. + * @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: + * Port Specific Information: * - * XXX document implementation including references if appropriate + * 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. + * @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 ) \ { \ @@ -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. + * 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. + * 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. + * -# 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. + * 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. + * 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: + * 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 * * 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 * * 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 * - * 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 + * Generally there are 2 types of context to save. + * + Interrupt registers to save + * + Task level registers to save * - * 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. + * 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. */ +/**@{**/ #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 + * @brief SPARC basic context. * - * @ingroup Contexts - * - * 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. + * 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. + * 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. + * 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. + * 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. + * 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: * - * The v850 is a RISC CPU which typically has enough memory to justify - * the unrolling of this method. + * 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 + * @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: * - * 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. + * 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 - * - * 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. - * - * Port Specific Information: - * - * 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. + * @defgroup CPUInterrupt Processor Dependent Interrupt Management * - * Port Specific Information: + * 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. * - * The v850 does not need a floating point context but this needs to be - * defined so confdefs.h. + * @note These two variables are required if the macro + * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. + * + * Port Specific Information: + * + * 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. + * + * Port Specific Information: + * + * 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. + * 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: * - * 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_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. * - * 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: - * - * On the v850, level 0 is enabled. Non-zero is disabled. + * 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: + * @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 + * - 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. + * 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. + * @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: + * Port Specific Information: * - * This method is implemented in C on the v850. + * 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. + * 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: * - * On the v850, we require a special entry point to restart a task. + * 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. + * @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) ) ) @@ -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. + * 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: + * 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. + * 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. + * 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. + * 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. + * -# 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. + * 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. + * 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: + * 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 +/** + * @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 #include @@ -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 #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 /** - * @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 /** - * @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 /** - * @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 /** @@ -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 +/** + * @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 * - * This include file contains the bodies of the routines - * about addresses which are inlined. + * @brief Inlined Routines Associated with Addresses + * + * This include file contains the bodies of the routines + * about addresses which are inlined. */ /* @@ -24,20 +26,21 @@ #include /** - * @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_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 * - * This include file contains all of the inlined routines associated - * with the SuperCore barrier. + * @brief 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 #include /** - * 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 - * @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_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 * - * This include file contains the static inline implementation of all - * inlined routines in the Core Message Handler. + * @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. */ /* @@ -22,14 +24,14 @@ #define _RTEMS_SCORE_COREMSG_INL /** - * @addtogroup ScoreMessageQueue - * @{ + * @addtogroup ScoreMessageQueue */ +/**@{**/ #include /* 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 * - * This include file contains all of the inlined routines associated - * with the CORE mutexes. + * @brief 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 * - * This include file contains all of the inlined routines associated - * with the SuperCore RWLock. + * @brief 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 #include /** + * 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 * - * This include file contains all of the inlined routines associated - * with the SuperCore semaphore. + * @brief 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 #include /** - * 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 - * @return the current count of this semaphore + * @param[in] the_semaphore is the semaphore to obtain the count of + * + * @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 * - * This include file contains all of the inlined routines associated - * with the SuperCore spinlock. + * @brief 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 * - * This include file contains the static implementation of all - * inlined routines in the Interrupt Handler. + * @brief 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 * - * This package is the implementation of the Packet Handler - * routines which are inlined. + * @brief Inlined Routines from the Packet Handler + * + * 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 * - * This include file contains the bodies of all inlined routines - * which deal with global objects. + * @brief Inlined Routines Associated 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 * - * This file contains the static inline implementation of all inlined - * routines in the Priority Handler bit map implementation + * @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 */ /* @@ -22,14 +24,14 @@ #define _RTEMS_SCORE_PRIORITYBITMAP_INL /** - * @addtogroup ScorePriority - * @{ + * @addtogroup ScorePriority */ +/**@{**/ #include /** - * 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 * - * This inline file contains all of the inlined routines associated with - * the manipulation of the scheduler. + * @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. */ /* @@ -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 * - * This inline file contains all of the inlined routines associated with - * the manipulation of the priority-based scheduling structures. + * @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. */ /* @@ -24,13 +27,14 @@ #include /** - * @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. - * - * @param[in] the_thread - pointer to thread + * This routine puts @a the_thread on to the priority-based ready queue. + * + * @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. - * - * @param[in] the_thread - pointer to thread + * 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 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 + * @brief Scheduling decision logic. * - * This kernel routine implements scheduling decision logic - * for priority-based scheduling. - * - * @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 * - * This inline file contains all of the inlined routines associated with - * the manipulation of the priority-based scheduling structures. + * @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. */ /* @@ -23,15 +26,15 @@ #include /** - * @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 * - * This file contains the static inline implementation of the inlined - * routines from the Stack Handler. + * @brief 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_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 * - * This file contains the static inline implementation of the inlined - * routines associated with thread state information. + * @brief 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_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 * - * This file contains the macro implementation of the inlined - * routines from the Thread handler. + * @brief 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 /** - * @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 * - * This include file contains the bodies of all inlined routines - * for the multiprocessing part of thread package. + * @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. */ /* @@ -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 * - * This inline file contains all of the inlined routines associated with - * the manipulation of thread queues. + * @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. */ /* @@ -24,11 +26,11 @@ #include /** - * @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 * - * This file contains the static inline implementation of the inlined routines - * from the Time of Day Handler. + * @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. */ /* @@ -26,12 +28,12 @@ #include /** - * @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 * - * This file contains the static inline implementation of the inlined - * routines needed to support the Thread Queue Data. + * @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. */ /* @@ -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 * - * This file contains the static inline implementation of all inlined - * routines in the Watchdog Handler. + * @brief 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 * - * This include file contains the bodies of the routines which contains - * information related to the RAM Workspace. + * @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. */ /* @@ -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 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 @@ -226,6 +226,33 @@ NONE Prints the exception frame via printk(). +@c +@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 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 #include +#include #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 #include #include -#include /* exit */ +#include #include #include -#include "rtems.h" +#include +#include #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 +#include + #include #include #include @@ -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 +#include +#include +#include "test_support.h" +#include +#include +#include + +/* 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 +/* 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 +#include +#include +#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 +/* 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 +#include +#include +#include "test_support.h" +#include +#include +#include + +/* 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 + /* 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 +#include +#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 +/* 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 +#include +#include +#include +#include +#include +#include "test_support.h" + +#include + +/* 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 + /* 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 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 +#include +#include +#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 +/* 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 -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,48 +2,315 @@ * 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 #include -/* 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( +#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; + 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 == 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 + ); + } + } + + 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); + + sc = rtems_timer_fire_after(ctx->timer, 1, all_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_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; - rtems_event_set out; - int resets; + rtems_status_code sc; + test_context ctx = { + .thread = _Thread_Executing + }; puts( "\n\n*** TEST INTERRUPT CRITICAL SECTION 10 ***" ); - 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_create(rtems_build_name('T', 'I', 'M', 'R'), &ctx.timer); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); - Main_task = rtems_task_self(); - - interrupt_critical_section_test_support_initialize( NULL ); - - for (resets=0 ; resets< 2 ;) { - 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" ); - } + 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 - -/* 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.