1/**
2 * @file op_deviceio.h
3 * Reading from a special device
4 *
5 * @remark Copyright 2002 OProfile authors
6 * @remark Read the file COPYING
7 *
8 * @author John Levon
9 * @author Philippe Elie
10 */
11
12#ifndef OP_DEVICEIO_H
13#define OP_DEVICEIO_H
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19#include "op_types.h"
20
21#include <unistd.h>
22
23/**
24 * op_open_device - open a special char device for reading
25 * @param name  file name of device file
26 *
27 * Open the special file name. Returns the file descriptor
28 * for the file or -1 on error.
29 */
30fd_t op_open_device(char const * name);
31
32/**
33 * op_read_device - read from a special char device
34 * @param devfd  file descriptor of device
35 * @param buf  buffer
36 * @param size  size of buffer
37 *
38 * Read size bytes from a device into buffer buf.
39 * A seek to the start of the device file is done first
40 * then a read is requested in one go of size bytes.
41 *
42 * It is the caller's responsibility to do further op_read_device()
43 * calls if the number of bytes read is not what is requested
44 * (where this is applicable).
45 *
46 * The number of bytes read is returned, or a negative number
47 * on failure (in which case errno will be set). If the call is
48 * interrupted, then errno will be EINTR, and the client should
49 * arrange for re-starting the read if necessary.
50 */
51ssize_t op_read_device(fd_t devfd, void * buf, size_t size);
52
53#ifdef __cplusplus
54}
55#endif
56
57#endif /* OP_DEVICEIO_H */
58