Changeset 25a7e11d in mainline for uspace/srv/drivers/serial/serial.c


Ignore:
Timestamp:
2010-04-30T14:13:41Z (15 years ago)
Author:
Lenka Trochtova <trochtova.lenka@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f658458
Parents:
dafe675
Message:

backup (unstable)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/drivers/serial/serial.c

    rdafe675 r25a7e11d  
    269269        int res;
    270270        // enable interrupt globally   
    271         printf(NAME ": call  enable_interrupt\n");
    272271        if (EOK != (res = interrupt_enable(data->irq))) {
    273272                return res;
     
    385384}
    386385
     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 */
     392static 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 */
     417static 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 */
    387436static void serial_init()
    388437{
    389438        // TODO
    390439        serial_dev_class.id = 0;
     440        serial_dev_class.open = &serial_open;
     441        serial_dev_class.close = &serial_close;
    391442}
    392443
Note: See TracChangeset for help on using the changeset viewer.