p_driver.h

来自「pencil嵌入式系统开发包」· C头文件 代码 · 共 29 行

H
29
字号
#ifndef _DRIVER_H_
#define _DRIVER_H_

handle_t	p_open(pid_t major, int minor); /* return=0:error */
bool_t		p_close(handle_t); /* return=FALSE:error */
size_t		p_read(handle_t, void *s, size_t size); /* return=0  can be err, info of err is in errno */
size_t		p_write(handle_t, const void *s, size_t size); /* like p_read */
bool_t		p_ioctl(handle_t, int request, void *arg); /* return=FALSE:error */

struct driver_s
{
	/* success if return is 0, else error number defined in error.h */
	int	(*drv_open)(pid_t src, int minor);	
	int	(*drv_close)(pid_t src, int minor); 
	int	(*drv_read)(pid_t src, int minor, proc_addr_t src_buf, size_t *size);
	int	(*drv_write)(pid_t src, int minor, proc_addr_t src_buf, size_t *size);
	int	(*drv_ioctl)(pid_t src, int minor, int request, proc_addr_t src_buf); 
	void	(*drv_hardware)(int irq, prio_t prio); /* irq can be timer index if your set timer */
};
void p_drv_server(const struct driver_s*);

#ifndef _P_COPY 
#define _P_COPY
/* copy data between procedures, src_addr or dest_addr can be MY_PID */
void p_copy(pid_t dest, proc_addr_t dest_addr, pid_t src, proc_addr_t src_addr, size_t len);
#endif

#endif /* _DRIVER_H_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?