110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** 210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @file op_deviceio.h 310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Reading from a special device 410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Copyright 2002 OProfile authors 610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Read the file COPYING 710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author John Levon 910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author Philippe Elie 1010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */ 1110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 1210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifndef OP_DEVICEIO_H 1310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#define OP_DEVICEIO_H 1410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 1510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifdef __cplusplus 1610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectextern "C" { 1710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif 1810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 1910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include "op_types.h" 2010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 2110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <unistd.h> 2210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 2310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** 2410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * op_open_device - open a special char device for reading 2510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param name file name of device file 2610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 2710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Open the special file name. Returns the file descriptor 2810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * for the file or -1 on error. 2910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */ 3010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectfd_t op_open_device(char const * name); 3110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 3210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/** 3310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * op_read_device - read from a special char device 3410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param devfd file descriptor of device 3510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param buf buffer 3610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @param size size of buffer 3710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 3810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Read size bytes from a device into buffer buf. 3910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * A seek to the start of the device file is done first 4010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * then a read is requested in one go of size bytes. 4110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 4210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * It is the caller's responsibility to do further op_read_device() 4310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * calls if the number of bytes read is not what is requested 4410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * (where this is applicable). 4510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * 4610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * The number of bytes read is returned, or a negative number 4710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * on failure (in which case errno will be set). If the call is 4810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * interrupted, then errno will be EINTR, and the client should 4910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * arrange for re-starting the read if necessary. 5010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */ 5110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectssize_t op_read_device(fd_t devfd, void * buf, size_t size); 5210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 5310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifdef __cplusplus 5410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project} 5510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif 5610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project 5710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif /* OP_DEVICEIO_H */ 58