Mercurial > flash_v2
diff packages/io/serial/current/src/common/serial.c @ 20:5f5102441818 ecos-sw-1999-07-02
Merge from eCos master repository on 1999-07-02-23:17:07-BST
| author | jlarmour |
|---|---|
| date | Fri, 02 Jul 1999 15:44:37 +0000 |
| parents | 1d7f19c9e4d1 |
| children | 7a6ac9edc838 |
line wrap: on
line diff
--- a/packages/io/serial/current/src/common/serial.c +++ b/packages/io/serial/current/src/common/serial.c @@ -103,8 +103,8 @@ serial_write(cyg_io_handle_t handle, con int next; cbuf_t *cbuf = &chan->out_cbuf; Cyg_ErrNo res = ENOERR; + cbuf->abort = false; - cyg_drv_mutex_lock(&cbuf->lock); if (cbuf->len == 0) { // Non interrupt driven (i.e. polled) operation @@ -154,8 +154,14 @@ serial_read(cyg_io_handle_t handle, void cyg_int32 size = 0; cbuf_t *cbuf = &chan->in_cbuf; Cyg_ErrNo res = ENOERR; +#ifdef XX_CYGDBG_DIAG_BUF + extern int enable_diag_uart; + int _enable = enable_diag_uart; + int _time, _stime; + externC cyg_tick_count_t cyg_current_time(void); +#endif // CYGDBG_DIAG_BUF + cbuf->abort = false; - cyg_drv_mutex_lock(&cbuf->lock); if (cbuf->len == 0) { // Non interrupt driven (i.e. polled) operation @@ -171,7 +177,21 @@ serial_read(cyg_io_handle_t handle, void size++; } else { cbuf->waiting = true; +#ifdef XX_CYGDBG_DIAG_BUF + enable_diag_uart = 0; + HAL_CLOCK_READ(&_time); + _stime = (int)cyg_current_time(); + diag_printf("READ wait - get: %d, put: %d, time: %x.%x\n", cbuf->get, cbuf->put, _stime, _time); + enable_diag_uart = _enable; +#endif // CYGDBG_DIAG_BUF cyg_drv_cond_wait(&cbuf->wait); +#ifdef XX_CYGDBG_DIAG_BUF + enable_diag_uart = 0; + HAL_CLOCK_READ(&_time); + _stime = (int)cyg_current_time(); + diag_printf("READ continue - get: %d, put: %d, time: %x.%x\n", cbuf->get, cbuf->put, _stime, _time); + enable_diag_uart = _enable; +#endif // CYGDBG_DIAG_BUF if (cbuf->abort) { // Give up! cbuf->abort = false; @@ -183,6 +203,15 @@ serial_read(cyg_io_handle_t handle, void } cyg_drv_dsr_unlock(); } + cyg_drv_isr_lock(); +#ifdef XX_CYGDBG_DIAG_BUF + enable_diag_uart = 0; + HAL_CLOCK_READ(&_time); + _stime = (int)cyg_current_time(); + diag_printf("READ done - size: %d, len: %d, time: %x.%x\n", size, *len, _stime, _time); + enable_diag_uart = _enable; +#endif // CYGDBG_DIAG_BUF + cyg_drv_isr_unlock(); cyg_drv_mutex_unlock(&cbuf->lock); return res; } @@ -335,6 +364,17 @@ serial_rcv_char(serial_channel *chan, un cbuf->data[cbuf->put++] = c; if (cbuf->put == cbuf->len) cbuf->put = 0; if (cbuf->waiting) { +#ifdef XX_CYGDBG_DIAG_BUF + extern int enable_diag_uart; + int _enable = enable_diag_uart; + int _time, _stime; + externC cyg_tick_count_t cyg_current_time(void); + enable_diag_uart = 0; + HAL_CLOCK_READ(&_time); + _stime = (int)cyg_current_time(); + diag_printf("Signal reader - time: %x.%x\n", _stime, _time); + enable_diag_uart = _enable; +#endif // CYGDBG_DIAG_BUF cbuf->waiting = false; cyg_drv_cond_signal(&cbuf->wait); }
