ChangeLog formatting was Re: change log for rtems (2011-03-03)
Joel Sherrill
joel.sherrill at OARcorp.com
Thu Mar 3 14:15:55 UTC 2011
Hi,
Just a reminder to please put the PR information on a
line by itself like this:
+ PR 1749/filesystem
+ * libcsupport/src/mknod.c, libfs/src/rfs/rtems-rfs-inode.c:
+ Fix the incorrect handling of the file type in the mode value
+ to reject invalid types as per the standard.
When it comes time to make a release, I use that as the
"trusted" source for knowing what PRs are in the release.
--joel
On 03/03/2011 08:10 AM, rtems-vc at rtems.org wrote:
> *joel* /(on branch rtems-4-10-branch)/
> Formatting.
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2759&r2=text&tr2=1.2760&diff_format=h>
> 1.2760 cpukit/ChangeLog
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2346.2.79&r2=text&tr2=1.2346.2.80&diff_format=h>
> 1.2346.2.80 cpukit/ChangeLog
>
> diff -u rtems/cpukit/ChangeLog:1.2759 rtems/cpukit/ChangeLog:1.2760
> --- rtems/cpukit/ChangeLog:1.2759 Thu Mar 3 00:22:47 2011
> +++ rtems/cpukit/ChangeLog Thu Mar 3 07:34:45 2011
> @@ -1,8 +1,9 @@
> 2011-03-03 Chris Johns<chrisj at rtems.org>
>
> - * libcsupport/src/mknod.c, libfs/src/rfs/rtems-rfs-inode.c: PR
> - 1749. Fix the incorrect handling of the file type in the mode
> - value to reject invalid types as per the standard.
> + PR 1749/filesystem
> + * libcsupport/src/mknod.c, libfs/src/rfs/rtems-rfs-inode.c:
> + Fix the incorrect handling of the file type in the mode value
> + to reject invalid types as per the standard.
>
> 2011-03-02 Ralf Corsépius<ralf.corsepius at rtems.org>
>
>
> diff -u rtems/cpukit/ChangeLog:1.2346.2.79 rtems/cpukit/ChangeLog:1.2346.2.80
> --- rtems/cpukit/ChangeLog:1.2346.2.79 Thu Mar 3 00:33:14 2011
> +++ rtems/cpukit/ChangeLog Thu Mar 3 07:34:34 2011
> @@ -1,8 +1,9 @@
> 2011-03-03 Chris Johns<chrisj at rtems.org>
>
> - * libcsupport/src/mknod.c, libfs/src/rfs/rtems-rfs-inode.c: PR
> - 1749. Fix the incorrect handling of the file type in the mode
> - value to reject invalid types as per the standard.
> + PR 1749/filesystem
> + * libcsupport/src/mknod.c, libfs/src/rfs/rtems-rfs-inode.c:
> + Fix the incorrect handling of the file type in the mode value
> + to reject invalid types as per the standard.
>
> 2011-02-08 Brett Swimley<bswimley at advanced.pro>
>
>
> *joel* /(on branch rtems-4-9-branch)/
> 2011-03-03 Chris Johns<chrisj at rtems.org>
>
> PR 1749/filesystem
> * libcsupport/src/mknod.c: Fix the incorrect handling of the file type
> in the mode value o reject invalid types as per the standard.
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.1539.2.70&r2=text&tr2=1.1539.2.71&diff_format=h>
> 1.1539.2.71 cpukit/ChangeLog
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libcsupport/src/mknod.c.diff?r1=text&tr1=1.13&r2=text&tr2=1.13.6.1&diff_format=h>
> 1.13.6.1 cpukit/libcsupport/src/mknod.c
>
> diff -u rtems/cpukit/ChangeLog:1.1539.2.70 rtems/cpukit/ChangeLog:1.1539.2.71
> --- rtems/cpukit/ChangeLog:1.1539.2.70 Fri Jan 21 13:40:35 2011
> +++ rtems/cpukit/ChangeLog Thu Mar 3 07:38:50 2011
> @@ -1,3 +1,9 @@
> +2011-03-03 Chris Johns<chrisj at rtems.org>
> +
> + PR 1749/filesystem
> + * libcsupport/src/mknod.c: Fix the incorrect handling of the file type
> + in the mode value o reject invalid types as per the standard.
> +
> 2011-01-21 Eric Norum<wenorum at lbl.gov>
>
> * libmisc/capture/capture.c: Avoid using TCB of task just deleted.
>
> diff -u rtems/cpukit/libcsupport/src/mknod.c:1.13 rtems/cpukit/libcsupport/src/mknod.c:1.13.6.1
> --- rtems/cpukit/libcsupport/src/mknod.c:1.13 Sun Apr 18 01:05:34 2004
> +++ rtems/cpukit/libcsupport/src/mknod.c Thu Mar 3 07:38:52 2011
> @@ -40,8 +40,19 @@
> const char *name_start;
> int result;
>
> - if ( !(mode& (S_IFREG|S_IFCHR|S_IFBLK|S_IFIFO) ) )
> - rtems_set_errno_and_return_minus_one( EINVAL );
> + /*
> + * The file type is field within the mode. Check we have a sane mode set.
> + */
> + switch (mode& S_IFMT) {
> + case S_IFDIR:
> + case S_IFCHR:
> + case S_IFBLK:
> + case S_IFREG:
> + case S_IFIFO:
> + break;
> + default:
> + rtems_set_errno_and_return_minus_one( EINVAL );
> + }
>
> if ( S_ISFIFO(mode) )
> rtems_set_errno_and_return_minus_one( ENOTSUP );
>
> *joel*
> 2011-03-03 Joel Sherrill<joel.sherrilL at OARcorp.com>
>
> PR 1750/bsps
> * console/erc32_console.c, make/custom/erc32.cfg: The new console
> driver did not support polled mode. It also had a bug in which it
> could lose a transmitter interrupt.
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog.diff?r1=text&tr1=1.162&r2=text&tr2=1.163&diff_format=h>
> 1.163 c/src/lib/libbsp/sparc/erc32/ChangeLog
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h>
> 1.3 c/src/lib/libbsp/sparc/erc32/console/erc32_console.c
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/sparc/erc32/make/custom/erc32.cfg.diff?r1=text&tr1=1.4&r2=text&tr2=1.5&diff_format=h>
> 1.5 c/src/lib/libbsp/sparc/erc32/make/custom/erc32.cfg
>
> diff -u rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog:1.162 rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog:1.163
> --- rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog:1.162 Mon Feb 28 14:14:29 2011
> +++ rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog Thu Mar 3 08:03:40 2011
> @@ -1,3 +1,10 @@
> +2011-03-03 Joel Sherrill<joel.sherrilL at OARcorp.com>
> +
> + PR 1750/bsps
> + * console/erc32_console.c, make/custom/erc32.cfg: The new console
> + driver did not support polled mode. It also had a bug in which it
> + could lose a transmitter interrupt.
> +
> 2011-02-28 Joel Sherrill<joel.sherrill at oarcorp.com>
>
> * console/erc32_console.c: Add polled support. Tinker with interrupt
>
> diff -u rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c:1.2 rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c:1.3
> --- rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c:1.2 Mon Feb 28 14:14:29 2011
> +++ rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c Thu Mar 3 08:03:41 2011
> @@ -36,25 +36,25 @@
>
> static uint8_t erc32_console_get_register(uint32_t addr, uint8_t i)
> {
> - volatile uint32_t *reg = (volatile uint32_t *)addr;
> - return (uint8_t) reg [i];
> + volatile uint32_t *reg = (volatile uint32_t *)addr;
> + return (uint8_t) reg [i];
> }
>
> static void erc32_console_set_register(uint32_t addr, uint8_t i, uint8_t val)
> {
> - volatile uint32_t *reg = (volatile uint32_t *)addr;
> - reg [i] = val;
> + volatile uint32_t *reg = (volatile uint32_t *)addr;
> + reg [i] = val;
> }
>
> static int erc32_console_first_open(int major, int minor, void *arg);
>
> #if (CONSOLE_USE_INTERRUPTS)
> -static ssize_t erc32_console_write_support_int(
> + static ssize_t erc32_console_write_support_int(
> int minor, const char *buf, size_t len);
> #else
> -int console_inbyte_nonblocking( int port );
> -static ssize_t erc32_console_write_support_polled(
> - int minor, const char *buf, size_t len);
> + int console_inbyte_nonblocking( int port );
> + static ssize_t erc32_console_write_support_polled(
> + int minor, const char *buf, size_t len);
> #endif
> static void erc32_console_initialize(int minor);
>
> @@ -87,44 +87,44 @@
> #endif
>
> console_tbl Console_Port_Tbl [] = {
> - {
> - .sDeviceName = "/dev/console_a",
> - .deviceType = SERIAL_CUSTOM,
> - .pDeviceFns =&erc32_fns,
> - .deviceProbe = NULL,
> - .pDeviceFlow = NULL,
> - .ulMargin = 16,
> - .ulHysteresis = 8,
> - .pDeviceParams = (void *) -1, /* could be baud rate */
> - .ulCtrlPort1 = 0,
> - .ulCtrlPort2 = 0,
> - .ulDataPort = 0,
> - .getRegister = erc32_console_get_register,
> - .setRegister = erc32_console_set_register,
> - .getData = NULL,
> - .setData = NULL,
> - .ulClock = 16,
> - .ulIntVector = ERC32_INTERRUPT_UART_A_RX_TX
> - },
> - {
> - .sDeviceName = "/dev/console_b",
> - .deviceType = SERIAL_CUSTOM,
> - .pDeviceFns =&erc32_fns,
> - .deviceProbe = NULL,
> - .pDeviceFlow = NULL,
> - .ulMargin = 16,
> - .ulHysteresis = 8,
> - .pDeviceParams = (void *) -1, /* could be baud rate */
> - .ulCtrlPort1 = 0,
> - .ulCtrlPort2 = 0,
> - .ulDataPort = 0,
> - .getRegister = erc32_console_get_register,
> - .setRegister = erc32_console_set_register,
> - .getData = NULL,
> - .setData = NULL,
> - .ulClock = 16,
> - .ulIntVector = ERC32_INTERRUPT_UART_B_RX_TX
> - },
> + {
> + .sDeviceName = "/dev/console_a",
> + .deviceType = SERIAL_CUSTOM,
> + .pDeviceFns =&erc32_fns,
> + .deviceProbe = NULL,
> + .pDeviceFlow = NULL,
> + .ulMargin = 16,
> + .ulHysteresis = 8,
> + .pDeviceParams = (void *) -1, /* could be baud rate */
> + .ulCtrlPort1 = 0,
> + .ulCtrlPort2 = 0,
> + .ulDataPort = 0,
> + .getRegister = erc32_console_get_register,
> + .setRegister = erc32_console_set_register,
> + .getData = NULL,
> + .setData = NULL,
> + .ulClock = 16,
> + .ulIntVector = ERC32_INTERRUPT_UART_A_RX_TX
> + },
> + {
> + .sDeviceName = "/dev/console_b",
> + .deviceType = SERIAL_CUSTOM,
> + .pDeviceFns =&erc32_fns,
> + .deviceProbe = NULL,
> + .pDeviceFlow = NULL,
> + .ulMargin = 16,
> + .ulHysteresis = 8,
> + .pDeviceParams = (void *) -1, /* could be baud rate */
> + .ulCtrlPort1 = 0,
> + .ulCtrlPort2 = 0,
> + .ulDataPort = 0,
> + .getRegister = erc32_console_get_register,
> + .setRegister = erc32_console_set_register,
> + .getData = NULL,
> + .setData = NULL,
> + .ulClock = 16,
> + .ulIntVector = ERC32_INTERRUPT_UART_B_RX_TX
> + },
> };
>
> /* always exactly two uarts for erc32 */
> @@ -136,130 +136,130 @@
>
> static int erc32_console_first_open(int major, int minor, void *arg)
> {
> - /* Check minor number */
> - if (minor< 0 || minor> 1) {
> - return -1;
> - }
> -
> - rtems_libio_open_close_args_t *oca = arg;
> - struct rtems_termios_tty *tty = oca->iop->data1;
> - console_tbl *ct =&Console_Port_Tbl [minor];
> - console_data *cd =&Console_Port_Data [minor];
> -
> - cd->termios_data = tty;
> - rtems_termios_set_initial_baud(tty, (int32_t)ct->pDeviceParams);
> -
> - return 0;
> + /* Check minor number */
> + if (minor< 0 || minor> 1) {
> + return -1;
> + }
> +
> + rtems_libio_open_close_args_t *oca = arg;
> + struct rtems_termios_tty *tty = oca->iop->data1;
> + console_tbl *ct =&Console_Port_Tbl [minor];
> + console_data *cd =&Console_Port_Data [minor];
> +
> + cd->termios_data = tty;
> + rtems_termios_set_initial_baud(tty, (int32_t)ct->pDeviceParams);
> +
> + return 0;
> }
>
> #if (CONSOLE_USE_INTERRUPTS)
> static ssize_t erc32_console_write_support_int(int minor, const char *buf, size_t len)
> {
> - console_data *cd =&Console_Port_Data[minor];
> - int k = 0;
> + console_data *cd =&Console_Port_Data[minor];
> + int k = 0;
>
> - if (minor == 0) { /* uart a */
> - for (k = 0; k< len&& (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEA); k ++) {
> - ERC32_MEC.UART_Channel_A = (unsigned char)buf[k];
> - }
> - ERC32_Force_interrupt(ERC32_INTERRUPT_UART_A_RX_TX);
> - } else { /* uart b */
> - for (k = 0; k< len&& (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEB); k ++) {
> - ERC32_MEC.UART_Channel_B = (unsigned char)buf[k];
> - }
> - ERC32_Force_interrupt(ERC32_INTERRUPT_UART_B_RX_TX);
> + if (minor == 0) { /* uart a */
> + for (k = 0;
> + k< len&& (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEA); k ++) {
> + ERC32_MEC.UART_Channel_A = (unsigned char)buf[k];
> }
> -
> - if (len> 0) {
> - cd->pDeviceContext = (void *)k;
> - cd->bActive = true;
> + ERC32_Force_interrupt(ERC32_INTERRUPT_UART_A_RX_TX);
> + } else { /* uart b */
> + for (k = 0;
> + k< len&& (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEB); k ++) {
> + ERC32_MEC.UART_Channel_B = (unsigned char)buf[k];
> }
> -
> - return 0;
> + ERC32_Force_interrupt(ERC32_INTERRUPT_UART_B_RX_TX);
> + }
> +
> + if (len> 0) {
> + cd->pDeviceContext = (void *)k;
> + cd->bActive = true;
> + }
> +
> + return 0;
> }
>
> static void erc32_console_isr_a(
> - rtems_vector_number vector
> + rtems_vector_number vector
> )
> {
> - console_data *cd =&Console_Port_Data[0];
> + console_data *cd =&Console_Port_Data[0];
>
> - /* check for error */
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_ERRA) {
> - ERC32_MEC.UART_Status = ERC32_MEC_UART_STATUS_CLRA;
> - ERC32_MEC.Control = ERC32_MEC.Control;
> - }
> + /* check for error */
> + if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_ERRA) {
> + ERC32_MEC.UART_Status = ERC32_MEC_UART_STATUS_CLRA;
> + ERC32_MEC.Control = ERC32_MEC.Control;
> + }
>
> - do {
> - int chars_to_dequeue = (int)cd->pDeviceContext;
> - int rv = 0;
> - int i = 0;
> - char buf[CONSOLE_BUF_SIZE];
> + do {
> + int chars_to_dequeue = (int)cd->pDeviceContext;
> + int rv = 0;
> + int i = 0;
> + char buf[CONSOLE_BUF_SIZE];
>
> - /* enqueue received chars */
> - while (i< CONSOLE_BUF_SIZE) {
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRA) {
> - buf[i] = ERC32_MEC.UART_Channel_A;
> - ++i;
> - } else {
> - break;
> - }
> - }
> - rtems_termios_enqueue_raw_characters(cd->termios_data, buf, i);
> + /* enqueue received chars */
> + while (i< CONSOLE_BUF_SIZE) {
> + if (!(ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRA))
> + break;
> + buf[i] = ERC32_MEC.UART_Channel_A;
> + ++i;
> + }
> + if ( i )
> + rtems_termios_enqueue_raw_characters(cd->termios_data, buf, i);
>
> - /* dequeue transmitted chars */
> + /* dequeue transmitted chars */
> + if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEA) {
> + rv = rtems_termios_dequeue_characters(
> + cd->termios_data, chars_to_dequeue);
> + if ( !rv ) {
> cd->pDeviceContext = 0;
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEA) {
> - rv = rtems_termios_dequeue_characters(
> - cd->termios_data, chars_to_dequeue);
> - if ( !rv ) {
> - cd->bActive = false;
> - ERC32_Clear_interrupt (ERC32_INTERRUPT_UART_A_RX_TX);
> - }
> - }
> - } while (ERC32_Is_interrupt_pending (ERC32_INTERRUPT_UART_A_RX_TX));
> + cd->bActive = false;
> + }
> + ERC32_Clear_interrupt (ERC32_INTERRUPT_UART_A_RX_TX);
> + }
> + } while (ERC32_Is_interrupt_pending (ERC32_INTERRUPT_UART_A_RX_TX));
> }
>
> static void erc32_console_isr_b(
> - rtems_vector_number vector
> + rtems_vector_number vector
> )
> {
> - console_data *cd =&Console_Port_Data[1];
> + console_data *cd =&Console_Port_Data[1];
>
> - /* check for error */
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_ERRB) {
> - ERC32_MEC.UART_Status = ERC32_MEC_UART_STATUS_CLRB;
> - ERC32_MEC.Control = ERC32_MEC.Control;
> - }
> + /* check for error */
> + if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_ERRB) {
> + ERC32_MEC.UART_Status = ERC32_MEC_UART_STATUS_CLRB;
> + ERC32_MEC.Control = ERC32_MEC.Control;
> + }
>
> - do {
> - int chars_to_dequeue = (int)cd->pDeviceContext;
> - int rv = 0;
> - int i = 0;
> - char buf[CONSOLE_BUF_SIZE];
> + do {
> + int chars_to_dequeue = (int)cd->pDeviceContext;
> + int rv = 0;
> + int i = 0;
> + char buf[CONSOLE_BUF_SIZE];
>
> - /* enqueue received chars */
> - while (i< CONSOLE_BUF_SIZE) {
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRB) {
> - buf[i] = ERC32_MEC.UART_Channel_B;
> - ++i;
> - } else {
> - break;
> - }
> - }
> - rtems_termios_enqueue_raw_characters(cd->termios_data, buf, i);
> + /* enqueue received chars */
> + while (i< CONSOLE_BUF_SIZE) {
> + if (!(ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRB))
> + break;
> + buf[i] = ERC32_MEC.UART_Channel_B;
> + ++i;
> + }
> + if ( i )
> + rtems_termios_enqueue_raw_characters(cd->termios_data, buf, i);
>
> - /* dequeue transmitted chars */
> + /* dequeue transmitted chars */
> + if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEB) {
> + rv = rtems_termios_dequeue_characters(
> + cd->termios_data, chars_to_dequeue);
> + if ( !rv ) {
> cd->pDeviceContext = 0;
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEB) {
> - rv = rtems_termios_dequeue_characters(
> - cd->termios_data, chars_to_dequeue);
> - if ( !rv ) {
> - cd->bActive = false;
> - ERC32_Clear_interrupt (ERC32_INTERRUPT_UART_B_RX_TX);
> - }
> - }
> - } while (ERC32_Is_interrupt_pending (ERC32_INTERRUPT_UART_B_RX_TX));
> + cd->bActive = false;
> + }
> + ERC32_Clear_interrupt (ERC32_INTERRUPT_UART_B_RX_TX);
> + }
> + } while (ERC32_Is_interrupt_pending (ERC32_INTERRUPT_UART_B_RX_TX));
> }
> #else
>
> @@ -292,23 +292,23 @@
> int minor
> )
> {
> - console_data *cd =&Console_Port_Data [minor];
> + console_data *cd =&Console_Port_Data [minor];
>
> - cd->bActive = false;
> - cd->pDeviceContext = 0;
> + cd->bActive = false;
> + cd->pDeviceContext = 0;
>
> - /*
> - * Initialize the Termios infrastructure. If Termios has already
> - * been initialized by another device driver, then this call will
> - * have no effect.
> - */
> - rtems_termios_initialize();
> -
> - /*
> - * Initialize Hardware
> - */
> -#if (CONSOLE_USE_INTERRUPTS)
> + /*
> + * Initialize the Termios infrastructure. If Termios has already
> + * been initialized by another device driver, then this call will
> + * have no effect.
> + */
> + rtems_termios_initialize();
> +
> + /*
> + * Initialize Hardware
> + */
> + #if (CONSOLE_USE_INTERRUPTS)
> set_vector(erc32_console_isr_a, CONSOLE_UART_A_TRAP, 1);
> set_vector(erc32_console_isr_b, CONSOLE_UART_B_TRAP, 1);
> -#endif
> + #endif
> }
>
> *joel* /(on branch rtems-4-10-branch)/
> 2011-03-03 Joel Sherrill<joel.sherrilL at OARcorp.com>
>
> PR 1750/bsps
> * console/erc32_console.c: The new console driver did not support
> polled mode. It also had a bug in which it could lose a transmitter
> interrupt.
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog.diff?r1=text&tr1=1.152.2.1&r2=text&tr2=1.152.2.2&diff_format=h>
> 1.152.2.2 c/src/lib/libbsp/sparc/erc32/ChangeLog
> M
> <http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.1.2.1&diff_format=h>
> 1.1.2.1 c/src/lib/libbsp/sparc/erc32/console/erc32_console.c
>
> diff -u rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog:1.152.2.1 rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog:1.152.2.2
> --- rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog:1.152.2.1 Wed Feb 2 09:17:14 2011
> +++ rtems/c/src/lib/libbsp/sparc/erc32/ChangeLog Thu Mar 3 08:03:48 2011
> @@ -1,3 +1,10 @@
> +2011-03-03 Joel Sherrill<joel.sherrilL at OARcorp.com>
> +
> + PR 1750/bsps
> + * console/erc32_console.c: The new console driver did not support
> + polled mode. It also had a bug in which it could lose a transmitter
> + interrupt.
> +
> 2011-02-02 Ralf Corsépius<ralf.corsepius at rtems.org>
>
> * configure.ac: Require autoconf-2.68, automake-1.11.1.
>
> diff -u rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c:1.1 rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c:1.1.2.1
> --- rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c:1.1 Fri May 7 07:13:23 2010
> +++ rtems/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c Thu Mar 3 08:03:48 2011
> @@ -27,6 +27,7 @@
> #include<libchip/sersupp.h>
>
> #include<bsp.h>
> +#include<bspopts.h>
>
> #define CONSOLE_BUF_SIZE (16)
>
> @@ -35,23 +36,32 @@
>
> static uint8_t erc32_console_get_register(uint32_t addr, uint8_t i)
> {
> - volatile uint32_t *reg = (volatile uint32_t *)addr;
> - return (uint8_t) reg [i];
> + volatile uint32_t *reg = (volatile uint32_t *)addr;
> + return (uint8_t) reg [i];
> }
>
> static void erc32_console_set_register(uint32_t addr, uint8_t i, uint8_t val)
> {
> - volatile uint32_t *reg = (volatile uint32_t *)addr;
> - reg [i] = val;
> + volatile uint32_t *reg = (volatile uint32_t *)addr;
> + reg [i] = val;
> }
>
> static int erc32_console_first_open(int major, int minor, void *arg);
> -static ssize_t erc32_console_write_support_int(int minor, const char *buf, size_t len);
> +
> +#if (CONSOLE_USE_INTERRUPTS)
> + static ssize_t erc32_console_write_support_int(
> + int minor, const char *buf, size_t len);
> +#else
> + int console_inbyte_nonblocking( int port );
> + static ssize_t erc32_console_write_support_polled(
> + int minor, const char *buf, size_t len);
> +#endif
> static void erc32_console_initialize(int minor);
>
> rtems_device_minor_number Console_Port_Minor = 0;
>
> -console_fns erc32_fns = {
> +#if (CONSOLE_USE_INTERRUPTS)
> + console_fns erc32_fns = {
> libchip_serial_default_probe, /* deviceProbe */
> erc32_console_first_open, /* deviceFirstOpen */
> NULL, /* deviceLastClose */
> @@ -60,48 +70,61 @@
> erc32_console_initialize, /* deviceInitialize */
> NULL, /* deviceWritePolled */
> NULL, /* deviceSetAttributes */
> - true /* deviceOutputUsesInterrupts */
> -};
> + TERMIOS_IRQ_DRIVEN /* deviceOutputUsesInterrupts */
> + };
> +#else
> + console_fns erc32_fns = {
> + libchip_serial_default_probe, /* deviceProbe */
> + erc32_console_first_open, /* deviceFirstOpen */
> + NULL, /* deviceLastClose */
> + console_inbyte_nonblocking, /* deviceRead */
> + erc32_console_write_support_polled, /* deviceWrite */
> + erc32_console_initialize, /* deviceInitialize */
> + NULL, /* deviceWritePolled */
> + NULL, /* deviceSetAttributes */
> + TERMIOS_POLLED /* deviceOutputUsesInterrupts */
> + };
> +#endif
>
> console_tbl Console_Port_Tbl [] = {
> - {
> - .sDeviceName = "/dev/console",
> - .deviceType = SERIAL_CUSTOM,
> - .pDeviceFns =&erc32_fns,
> - .deviceProbe = NULL,
> - .pDeviceFlow = NULL,
> - .ulMargin = 16,
> - .ulHysteresis = 8,
> - .pDeviceParams = (void *) 1,
> - .ulCtrlPort1 = 0,
> - .ulCtrlPort2 = 0,
> - .ulDataPort = 0,
> - .getRegister = erc32_console_get_register,
> - .setRegister = erc32_console_set_register,
> - .getData = NULL,
> - .setData = NULL,
> - .ulClock = 16,
> - .ulIntVector = ERC32_INTERRUPT_UART_A_RX_TX
> - },
> - {
> - .sDeviceName = "/dev/console_b",
> - .deviceType = SERIAL_CUSTOM,
> - .pDeviceFns =&erc32_fns,
> - .deviceProbe = NULL,
> - .pDeviceFlow = NULL,
> - .ulMargin = 16,
> - .ulHysteresis = 8,
> - .pDeviceParams = (void *) 1,
> - .ulCtrlPort1 = 0,
> - .ulCtrlPort2 = 0,
> - .ulDataPort = 0,
> - .getRegister = erc32_console_get_register,
> - .setRegister = erc32_console_set_register,
> - .getData = NULL,
> - .setData = NULL,
> - .ulClock = 16,
> - .ulIntVector = ERC32_INTERRUPT_UART_B_RX_TX
> - },
> + {
> + .sDeviceName = "/dev/console_a",
> + .deviceType = SERIAL_CUSTOM,
> + .pDeviceFns =&erc32_fns,
> + .deviceProbe = NULL,
> + .pDeviceFlow = NULL,
> + .ulMargin = 16,
> + .ulHysteresis = 8,
> + .pDeviceParams = (void *) -1, /* could be baud rate */
> + .ulCtrlPort1 = 0,
> + .ulCtrlPort2 = 0,
> + .ulDataPort = 0,
> + .getRegister = erc32_console_get_register,
> + .setRegister = erc32_console_set_register,
> + .getData = NULL,
> + .setData = NULL,
> + .ulClock = 16,
> + .ulIntVector = ERC32_INTERRUPT_UART_A_RX_TX
> + },
> + {
> + .sDeviceName = "/dev/console_b",
> + .deviceType = SERIAL_CUSTOM,
> + .pDeviceFns =&erc32_fns,
> + .deviceProbe = NULL,
> + .pDeviceFlow = NULL,
> + .ulMargin = 16,
> + .ulHysteresis = 8,
> + .pDeviceParams = (void *) -1, /* could be baud rate */
> + .ulCtrlPort1 = 0,
> + .ulCtrlPort2 = 0,
> + .ulDataPort = 0,
> + .getRegister = erc32_console_get_register,
> + .setRegister = erc32_console_set_register,
> + .getData = NULL,
> + .setData = NULL,
> + .ulClock = 16,
> + .ulIntVector = ERC32_INTERRUPT_UART_B_RX_TX
> + },
> };
>
> /* always exactly two uarts for erc32 */
> @@ -113,125 +136,152 @@
>
> static int erc32_console_first_open(int major, int minor, void *arg)
> {
> - /* Check minor number */
> - if (minor< 0 || minor> 1) {
> - return -1;
> - }
> -
> - rtems_libio_open_close_args_t *oca = arg;
> - struct rtems_termios_tty *tty = oca->iop->data1;
> - console_tbl *ct =&Console_Port_Tbl [minor];
> - console_data *cd =&Console_Port_Data [minor];
> -
> - cd->termios_data = tty;
> - rtems_termios_set_initial_baud(tty, (int32_t)ct->pDeviceParams);
> -
> - return 0;
> + /* Check minor number */
> + if (minor< 0 || minor> 1) {
> + return -1;
> + }
> +
> + rtems_libio_open_close_args_t *oca = arg;
> + struct rtems_termios_tty *tty = oca->iop->data1;
> + console_tbl *ct =&Console_Port_Tbl [minor];
> + console_data *cd =&Console_Port_Data [minor];
> +
> + cd->termios_data = tty;
> + rtems_termios_set_initial_baud(tty, (int32_t)ct->pDeviceParams);
> +
> + return 0;
> }
>
> +#if (CONSOLE_USE_INTERRUPTS)
> static ssize_t erc32_console_write_support_int(int minor, const char *buf, size_t len)
> {
> - console_data *cd =&Console_Port_Data[minor];
> - int k = 0;
> + console_data *cd =&Console_Port_Data[minor];
> + int k = 0;
>
> - if (minor == 0) { /* uart a */
> - for (k = 0; k< len&& (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEA); k ++) {
> - ERC32_MEC.UART_Channel_A = (unsigned char)buf[k];
> - }
> - ERC32_Force_interrupt(ERC32_INTERRUPT_UART_A_RX_TX);
> - } else { /* uart b */
> - for (k = 0; k< len&& (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEB); k ++) {
> - ERC32_MEC.UART_Channel_B = (unsigned char)buf[k];
> - }
> - ERC32_Force_interrupt(ERC32_INTERRUPT_UART_B_RX_TX);
> - }
> -
> - if (len> 0) {
> - cd->pDeviceContext = (void *)k;
> - cd->bActive = true;
> + if (minor == 0) { /* uart a */
> + for (k = 0;
> + k< len&& (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEA); k ++) {
> + ERC32_MEC.UART_Channel_A = (unsigned char)buf[k];
> + }
> + ERC32_Force_interrupt(ERC32_INTERRUPT_UART_A_RX_TX);
> + } else { /* uart b */
> + for (k = 0;
> + k< len&& (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEB); k ++) {
> + ERC32_MEC.UART_Channel_B = (unsigned char)buf[k];
> }
> -
> - return 0;
> + ERC32_Force_interrupt(ERC32_INTERRUPT_UART_B_RX_TX);
> + }
> +
> + if (len> 0) {
> + cd->pDeviceContext = (void *)k;
> + cd->bActive = true;
> + }
> +
> + return 0;
> }
>
> static void erc32_console_isr_a(
> - rtems_vector_number vector
> + rtems_vector_number vector
> )
> {
> - console_data *cd =&Console_Port_Data[0];
> + console_data *cd =&Console_Port_Data[0];
>
> - /* check for error */
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_ERRA) {
> - ERC32_MEC.UART_Status = ERC32_MEC_UART_STATUS_CLRA;
> - ERC32_MEC.Control = ERC32_MEC.Control;
> - }
> -
> - do {
> - int chars_to_dequeue = (int)cd->pDeviceContext;
> - int rv = 0;
> - int i = 0;
> - char buf[CONSOLE_BUF_SIZE];
> + /* check for error */
> + if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_ERRA) {
> + ERC32_MEC.UART_Status = ERC32_MEC_UART_STATUS_CLRA;
> + ERC32_MEC.Control = ERC32_MEC.Control;
> + }
> +
> + do {
> + int chars_to_dequeue = (int)cd->pDeviceContext;
> + int rv = 0;
> + int i = 0;
> + char buf[CONSOLE_BUF_SIZE];
>
> - /* enqueue received chars */
> - while (i< CONSOLE_BUF_SIZE) {
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRA) {
> - buf[i] = ERC32_MEC.UART_Channel_A;
> - ++i;
> - } else {
> - break;
> - }
> - }
> - rtems_termios_enqueue_raw_characters(cd->termios_data, buf, i);
> + /* enqueue received chars */
> + while (i< CONSOLE_BUF_SIZE) {
> + if (!(ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRA))
> + break;
> + buf[i] = ERC32_MEC.UART_Channel_A;
> + ++i;
> + }
> + if ( i )
> + rtems_termios_enqueue_raw_characters(cd->termios_data, buf, i);
>
> - /* dequeue transmitted chars */
> + /* dequeue transmitted chars */
> + if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEA) {
> + rv = rtems_termios_dequeue_characters(
> + cd->termios_data, chars_to_dequeue);
> + if ( !rv ) {
> cd->pDeviceContext = 0;
> - rv = rtems_termios_dequeue_characters(cd->termios_data, chars_to_dequeue);
> - if (rv == 0&& !(ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRA)) {
> - cd->bActive = false;
> - ERC32_Clear_interrupt (ERC32_INTERRUPT_UART_A_RX_TX);
> - }
> - } while (ERC32_Is_interrupt_pending (ERC32_INTERRUPT_UART_A_RX_TX));
> + cd->bActive = false;
> + }
> + ERC32_Clear_interrupt (ERC32_INTERRUPT_UART_A_RX_TX);
> + }
> + } while (ERC32_Is_interrupt_pending (ERC32_INTERRUPT_UART_A_RX_TX));
> }
>
> static void erc32_console_isr_b(
> - rtems_vector_number vector
> + rtems_vector_number vector
> )
> {
> - console_data *cd =&Console_Port_Data[1];
> -
> - /* check for error */
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_ERRB) {
> - ERC32_MEC.UART_Status = ERC32_MEC_UART_STATUS_CLRB;
> - ERC32_MEC.Control = ERC32_MEC.Control;
> - }
> + console_data *cd =&Console_Port_Data[1];
>
> - do {
> - int chars_to_dequeue = (int)cd->pDeviceContext;
> - int rv = 0;
> - int i = 0;
> - char buf[CONSOLE_BUF_SIZE];
> + /* check for error */
> + if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_ERRB) {
> + ERC32_MEC.UART_Status = ERC32_MEC_UART_STATUS_CLRB;
> + ERC32_MEC.Control = ERC32_MEC.Control;
> + }
> +
> + do {
> + int chars_to_dequeue = (int)cd->pDeviceContext;
> + int rv = 0;
> + int i = 0;
> + char buf[CONSOLE_BUF_SIZE];
>
> - /* enqueue received chars */
> - while (i< CONSOLE_BUF_SIZE) {
> - if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRB) {
> - buf[i] = ERC32_MEC.UART_Channel_B;
> - ++i;
> - } else {
> - break;
> - }
> - }
> - rtems_termios_enqueue_raw_characters(cd->termios_data, buf, i);
> + /* enqueue received chars */
> + while (i< CONSOLE_BUF_SIZE) {
> + if (!(ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRB))
> + break;
> + buf[i] = ERC32_MEC.UART_Channel_B;
> + ++i;
> + }
> + if ( i )
> + rtems_termios_enqueue_raw_characters(cd->termios_data, buf, i);
>
> - /* dequeue transmitted chars */
> + /* dequeue transmitted chars */
> + if (ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_THEB) {
> + rv = rtems_termios_dequeue_characters(
> + cd->termios_data, chars_to_dequeue);
> + if ( !rv ) {
> cd->pDeviceContext = 0;
> - rv = rtems_termios_dequeue_characters(cd->termios_data, chars_to_dequeue);
> - if (rv == 0&& !(ERC32_MEC.UART_Status& ERC32_MEC_UART_STATUS_DRB)) {
> - cd->bActive = false;
> - ERC32_Clear_interrupt (ERC32_INTERRUPT_UART_B_RX_TX);
> - }
> - } while (ERC32_Is_interrupt_pending (ERC32_INTERRUPT_UART_B_RX_TX));
> + cd->bActive = false;
> + }
> + ERC32_Clear_interrupt (ERC32_INTERRUPT_UART_B_RX_TX);
> + }
> + } while (ERC32_Is_interrupt_pending (ERC32_INTERRUPT_UART_B_RX_TX));
> +}
> +#else
> +
> +extern void console_outbyte_polled( int port, unsigned char ch );
> +
> +static ssize_t erc32_console_write_support_polled(
> + int minor,
> + const char *buf,
> + size_t len
> +)
> +{
> + int nwrite = 0;
> +
> + while (nwrite< len) {
> + console_outbyte_polled( minor, *buf++ );
> + nwrite++;
> + }
> + return nwrite;
> }
>
> +#endif
> +
>
> /*
> * Console Device Driver Entry Points
> @@ -242,21 +292,23 @@
> int minor
> )
> {
> - console_data *cd =&Console_Port_Data [minor];
> + console_data *cd =&Console_Port_Data [minor];
>
> - cd->bActive = false;
> - cd->pDeviceContext = 0;
> + cd->bActive = false;
> + cd->pDeviceContext = 0;
>
> - /*
> - * Initialize the Termios infrastructure. If Termios has already
> - * been initialized by another device driver, then this call will
> - * have no effect.
> - */
> - rtems_termios_initialize();
> -
> - /*
> - * Initialize Hardware
> - */
> + /*
> + * Initialize the Termios infrastructure. If Termios has already
> + * been initialized by another device driver, then this call will
> + * have no effect.
> + */
> + rtems_termios_initialize();
> +
> + /*
> + * Initialize Hardware
> + */
> + #if (CONSOLE_USE_INTERRUPTS)
> set_vector(erc32_console_isr_a, CONSOLE_UART_A_TRAP, 1);
> set_vector(erc32_console_isr_b, CONSOLE_UART_B_TRAP, 1);
> + #endif
> }
>
> --
> Generated by Deluxe Loginfo
> <http://www.codewiz.org/projects/index.html#loginfo> 2.122 by Bernardo
> Innocenti <bernie at develer.com>
>
--
Joel Sherrill, Ph.D. Director of Research& Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the vc
mailing list