summaryrefslogtreecommitdiffhomepage
path: root/DriverKit/KernelDev.h
blob: c3435e8d1219d6a9ce6faf886ed96d324795371d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* -------------------------------------------

	Copyright SoftwareLabs

	Purpose: Kernel Devices.

------------------------------------------- */

#pragma once

#include <DriverKit/KernelStd.h>

struct _kernelDevice;

/// @brief Kernel Device driver.
typedef struct _kernelDevice
{
	char name[255];									 // the device name. Could be /./DEVICE_NAME/
	int32_t (*read)();								 // read from device.
	int32_t (*write)();								 // write to device.
	struct _kernelDevice* (*open)(const char* path); // open device.
	void (*close)(struct _kernelDevice* dev);		 // close device.
} kernelDevice, *kernelDeviceRef;

/// @brief Open a new binary device from path.
DK_EXTERN kernelDeviceRef kernelOpenBinaryDevice(const char* devicePath);

/// @brief Open a new character device from path.
DK_EXTERN kernelDeviceRef kernelOpenCharDevice(const char* devicePath);

/// @brief Close any device.
/// @param device valid device.
DK_EXTERN void kernelCloseDevice(kernelDeviceRef device);