Skip to content
Snippets Groups Projects
Commit 12b84597 authored by px4dev's avatar px4dev
Browse files

Direct access functions return errors directly, not touching errno.

parent 7c83e928
No related branches found
No related tags found
No related merge requests found
......@@ -223,31 +223,22 @@ interrupt(int irq, void *context)
return OK;
}
int
Device::probe()
{
return -1;
}
int
Device::read(unsigned offset, void *data, unsigned count)
{
errno = ENODEV;
return -1;
return -ENODEV;
}
int
Device::write(unsigned offset, void *data, unsigned count)
{
errno = ENODEV;
return -1;
return -ENODEV;
}
int
Device::ioctl(unsigned operation, unsigned &arg)
{
errno = ENODEV;
return -1;
return -ENODEV;
}
} // namespace device
\ No newline at end of file
......@@ -80,49 +80,49 @@ public:
*/
virtual void interrupt(void *ctx); /**< interrupt handler */
/*
* Direct access methods.
*/
/**
* Probe to test whether the device is present.
*
* @return Zero if present, < 0 (error) otherwise.
*/
virtual int probe();
/**
* Read directly from the device.
*
* The actual size of each unit quantity is device-specific.
*
* @param offset The device address at which to start reading
* @param data The buffer into which the read values should be placed.
* @param count The number of items to read, defaults to 1.
* @return count on success, < 0 on error.
*/
virtual int read(unsigned address, void *data, unsigned count = 1);
/**
* Write directly to the device.
*
* The actual size of each unit quantity is device-specific.
*
* @param address The device address at which to start writing.
* @param data The buffer from which values should be read.
* @param count The number of registers to write, defaults to 1.
* @return count on success, < 0 on error.
*/
virtual int write(unsigned address, void *data, unsigned count = 1);
/**
* Perform a device-specific operation.
*
* @param operation The operation to perform
* @param arg An argument to the operation.
* @return < 0 on error
*/
virtual int ioctl(unsigned operation, unsigned &arg);
/*
* Direct access methods.
*/
/**
* Initialise the driver and make it ready for use.
*
* @return OK if the driver initialized OK, negative errno otherwise;
*/
virtual int init();
/**
* Read directly from the device.
*
* The actual size of each unit quantity is device-specific.
*
* @param offset The device address at which to start reading
* @param data The buffer into which the read values should be placed.
* @param count The number of items to read.
* @return The number of items read on success, negative errno otherwise.
*/
virtual int read(unsigned address, void *data, unsigned count);
/**
* Write directly to the device.
*
* The actual size of each unit quantity is device-specific.
*
* @param address The device address at which to start writing.
* @param data The buffer from which values should be read.
* @param count The number of items to write.
* @return The number of items written on success, negative errno otherwise.
*/
virtual int write(unsigned address, void *data, unsigned count);
/**
* Perform a device-specific operation.
*
* @param operation The operation to perform.
* @param arg An argument to the operation.
* @return Negative errno on error, OK or positive value on success.
*/
virtual int ioctl(unsigned operation, unsigned &arg);
protected:
const char *_name; /**< driver name */
......@@ -137,13 +137,6 @@ protected:
Device(const char *name,
int irq = 0);
/**
* Initialise the driver and make it ready for use.
*
* @return OK if the driver initialised OK.
*/
virtual int init();
/**
* Enable the device interrupt
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment