add new tests

This commit is contained in:
2025-04-24 23:32:10 +08:00
parent 7da2a7bd58
commit 2722ab3feb
3 changed files with 22 additions and 1 deletions

0
lab6/make.txt Normal file
View File

View File

@@ -8,7 +8,16 @@ void writer() {
std::osyncstream(std::cout) << "Writer started" << std::endl;
std::ofstream pipe_write("/dev/wendy_in");
pipe_write << "Hello from the other side\n";
if (!pipe_write.is_open()) {
std::cerr << "Cannot open pipe in" << std::endl;
}
std::ifstream txt("./make.txt");
if (!txt.is_open()) {
std::cerr << "Canno open make.txt" << std::endl;
}
// pipe_write << "Hello from the other side\n";
pipe_write << txt.rdbuf();
std::osyncstream(std::cout) << "Writer ended" << std::endl;
}

View File

@@ -7,6 +7,7 @@
// https://linux-kernel-labs.github.io/refs/heads/master/labs/device_drivers.html
// https://olegkutkov.me/2018/03/14/simple-linux-character-device-driver/
// BEGIN_LST_DEF
#define MYPIPE_BUFFER_SIZE 4096
#define MYPIPE_DEVICE_NAME "wendy"
@@ -41,7 +42,9 @@ static DEFINE_MUTEX(isactive_lock);
// writing/ reading
static DECLARE_WAIT_QUEUE_HEAD(read_queue);
static DECLARE_WAIT_QUEUE_HEAD(write_queue);
// END_LST_DEF
// BEGIN_LST_OPEN_RELASE
static int mypipe_open(struct inode *inode, struct file *file) {
int minor = iminor(inode);
printk(KERN_INFO "%s opened, minor = %d", MYPIPE_DEVICE_NAME, minor);
@@ -75,6 +78,9 @@ static int mypipe_release(struct inode *inode, struct file *file) {
return 0;
}
// END_LST_OPEN_RELEASE
// BEGIN_LST_READ_WRITE
static ssize_t mypipe_read(struct file *filep, char __user *buf, size_t size,
loff_t *offset) {
ssize_t ret = 0;
@@ -199,11 +205,15 @@ out:
return ret;
}
// END_LST_READ_WRITE
// BEGIN_LST_FOP
const struct file_operations mypipe_fops = {.owner = THIS_MODULE,
.open = mypipe_open,
.read = mypipe_read,
.write = mypipe_write,
.release = mypipe_release};
// END_LST_FOP
// Used to set the permission to allow any user to r/w
static int mypipe_uevent(const struct device *dev,
@@ -212,6 +222,7 @@ static int mypipe_uevent(const struct device *dev,
return 0;
}
// BEGIN_LST_INIT
static int __init mypipe_init(void) {
int ret;
dev_t dev;
@@ -277,5 +288,6 @@ static void __exit mypipe_destroy(void) {
module_init(mypipe_init);
module_exit(mypipe_destroy);
// END_LST_INIT
MODULE_LICENSE("GPL");