Changeset 25a7e11d in mainline for uspace/srv/drivers/serial/serial.c
- Timestamp:
- 2010-04-30T14:13:41Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f658458
- Parents:
- dafe675
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/drivers/serial/serial.c
rdafe675 r25a7e11d 269 269 int res; 270 270 // enable interrupt globally 271 printf(NAME ": call enable_interrupt\n");272 271 if (EOK != (res = interrupt_enable(data->irq))) { 273 272 return res; … … 385 384 } 386 385 386 /** Open the device. 387 * 388 * This is a callback function called when a client tries to connect to the device. 389 * 390 * @param dev the device. 391 */ 392 static int serial_open(device_t *dev) 393 { 394 serial_dev_data_t *data = (serial_dev_data_t *)dev->driver_data; 395 int res; 396 397 fibril_mutex_lock(&data->mutex); 398 399 if (data->client_connected) { 400 res = ELIMIT; 401 } else { 402 res = EOK; 403 data->client_connected = true; 404 } 405 406 fibril_mutex_unlock(&data->mutex); 407 408 return res; 409 } 410 411 /** Close the device. 412 * 413 * This is a callback function called when a client tries to disconnect from the device. 414 * 415 * @param dev the device. 416 */ 417 static void serial_close(device_t *dev) 418 { 419 serial_dev_data_t *data = (serial_dev_data_t *)dev->driver_data; 420 421 fibril_mutex_lock(&data->mutex); 422 423 assert(data->client_connected); 424 425 data->client_connected = false; 426 buf_clear(&data->input_buffer); 427 428 fibril_mutex_unlock(&data->mutex); 429 } 430 431 /** Initialize the serial port driver. 432 * 433 * Initialize class structures with callback methods for handling 434 * client requests to the serial port devices. 435 */ 387 436 static void serial_init() 388 437 { 389 438 // TODO 390 439 serial_dev_class.id = 0; 440 serial_dev_class.open = &serial_open; 441 serial_dev_class.close = &serial_close; 391 442 } 392 443
Note:
See TracChangeset
for help on using the changeset viewer.