Skip to content

Commit

Permalink
Reformat according Kernel Code Styles and official clang-format file
Browse files Browse the repository at this point in the history
  • Loading branch information
tpiekarski committed Mar 30, 2020
1 parent a033ae2 commit d8f4244
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 133 deletions.
70 changes: 36 additions & 34 deletions lkm_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,13 @@ MODULE_VERSION("0.1");

static int device_init_sub(void);
static int proc_init_sub(void);
static int device_open(struct inode*, struct file*);
static int device_release(struct inode*, struct file*);
static ssize_t device_read(struct file*, char*, size_t, loff_t*);
static ssize_t device_write(struct file*, const char*, size_t, loff_t*);
static int proc_show(struct seq_file*, void*);
static int device_open(struct inode *inode, struct file *file);
static int device_release(struct inode *inode, struct file *file);
static ssize_t device_read(struct file *flip, char *buffer, size_t len,
loff_t *offset);
static ssize_t device_write(struct file *flip, const char *buffer, size_t len,
loff_t *offset);
static int proc_show(struct seq_file *seq, void *v);

#define DEVICE_NAME "lkm_device"
#define MESSAGE "Hello, Linux!\n"
Expand All @@ -55,31 +57,29 @@ static int major_num;
static int param_major_num = 0;
static int device_open_count = 0;
static char message_buffer[MESSAGE_BUFFER_LENGTH];
static char* message_ptr;

static struct file_operations device_fops = {
.open = device_open,
.read = device_read,
.release = device_release,
.write = device_write
};
static char *message_ptr;

static struct file_operations device_fops = { .open = device_open,
.read = device_read,
.release = device_release,
.write = device_write };
struct proc_dir_entry *proc_major_entry;

module_param(param_major_num, int, PARAM_MAJOR_NUM_PERMISSION);

static ssize_t device_read(struct file* flip, char* buffer,
size_t len, loff_t* offset)
static ssize_t device_read(struct file *flip, char *buffer, size_t len,
loff_t *offset)
{
int bytes_read = 0;
printk(KERN_INFO "Starting to read from sandbox device.\n");

if (*message_ptr == 0)
message_ptr = message_buffer;

while (len && *message_ptr) {
printk(KERN_INFO "Reading from device...\n");
if (put_user(*(message_ptr++), buffer++) == -EFAULT) {
printk(KERN_ALERT
printk(KERN_ALERT
"Failed copying message from kernel to user space.\n");

break;
Expand All @@ -92,15 +92,15 @@ static ssize_t device_read(struct file* flip, char* buffer,
return bytes_read;
}

static ssize_t device_write(struct file* flip, const char* buffer,
size_t len, loff_t *offset)
static ssize_t device_write(struct file *flip, const char *buffer, size_t len,
loff_t *offset)
{
printk(KERN_ALERT "Writing to sandbox device is not supported.\n");

return -EINVAL;
}

static int device_open(struct inode* inode, struct file* file)
static int device_open(struct inode *inode, struct file *file)
{
if (device_open_count > 0) {
printk(KERN_INFO "Sandbox device already open.\n");
Expand All @@ -114,7 +114,7 @@ static int device_open(struct inode* inode, struct file* file)
return 0;
}

static int device_release(struct inode* inode, struct file* file)
static int device_release(struct inode *inode, struct file *file)
{
printk(KERN_INFO "Closing sandbox device.\n");
device_open_count--;
Expand All @@ -123,7 +123,7 @@ static int device_release(struct inode* inode, struct file* file)
return 0;
}

static int proc_show(struct seq_file* seq, void* v)
static int proc_show(struct seq_file *seq, void *v)
{
seq_printf(seq, "%d", major_num);

Expand Down Expand Up @@ -154,23 +154,24 @@ static void __exit lkm_device_exit(void)

static int device_init_sub(void)
{
printk(KERN_INFO "Registering character device to print test message.\n");
printk(KERN_INFO
"Registering character device to print test message.\n");

strncpy(message_buffer, MESSAGE, MESSAGE_BUFFER_LENGTH);
message_ptr = message_buffer;

if (param_major_num != 0) {
printk(KERN_INFO
"Failed allocating %d as major for sandbox device.\n",
param_major_num);
printk(KERN_INFO
"Failed allocating %d as major for sandbox device.\n",
param_major_num);
}

major_num = register_chrdev(param_major_num, DEVICE_NAME, &device_fops);

if (major_num < 0) {
printk(KERN_ALERT
"Failed to register sandbox device with major %d.\n",
major_num);
printk(KERN_ALERT
"Failed to register sandbox device with major %d.\n",
major_num);

return -1;
}
Expand All @@ -180,17 +181,18 @@ static int device_init_sub(void)

static int proc_init_sub(void)
{
printk(KERN_INFO "Registered sandbox device with major number %d.\n",
printk(KERN_INFO "Registered sandbox device with major number %d.\n",
major_num);

printk(KERN_INFO "Creating /proc file %s for storing major number %d.\n",
printk(KERN_INFO
"Creating /proc file %s for storing major number %d.\n",
PROC_FILE_NAME, major_num);
proc_major_entry = proc_create_single(PROC_FILE_NAME, PROC_PERMISSION,
proc_major_entry = proc_create_single(PROC_FILE_NAME, PROC_PERMISSION,
PROC_PARENT, proc_show);

if (proc_major_entry == NULL) {
printk(KERN_ALERT
"Failed to create /proc entry '%s' for device major.\n",
printk(KERN_ALERT
"Failed to create /proc entry '%s' for device major.\n",
PROC_FILE_NAME);

return -1;
Expand Down
47 changes: 18 additions & 29 deletions lkm_parameters.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,58 +21,47 @@
*
*/

// Linux Kernel Headers for Module Development
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

// Additional Header for Parameters
#include <linux/module.h>
#include <linux/moduleparam.h>

// Miscellaneous Headers
#include <linux/string.h>

// Module Meta Data
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Thomas Piekarski");
MODULE_DESCRIPTION("Module for passing parameters from user- to kernelspace.");
MODULE_DESCRIPTION("Module for passing parameters from user to kernel space.");
MODULE_VERSION("0.1");

// Definitions
#define DEFAULT_PERMISSIONS 0664

// Global variables
static int number = 42;
static char* message = "That's a parameter.";
static char *message = "That's a parameter.";

// Setting module parameters
module_param(number, int, DEFAULT_PERMISSIONS);
module_param(message, charp, DEFAULT_PERMISSIONS);

//
// Module Init & Exit
//
static int __init lkm_parameters_init(void)
{
printk(KERN_INFO "Initializing Sandbox Parameters Module...\n");

static int __init lkm_parameters_init(void) {
printk(KERN_INFO "Initializing Sandbox Parameters Module...\n");

if (number == 42 && strcmp(message, "That's a parameter.") == 0) {
printk(KERN_INFO "Module was loaded with default parameters.\n");
if (number == 42 && strcmp(message, "That's a parameter.") == 0) {
printk(KERN_INFO
"Module was loaded with default parameters.\n");

return 0;
}
return 0;
}

printk(KERN_INFO "Module was loaded with number = %d and message = %s\n", number, message);
printk(KERN_INFO
"Module was loaded with number = %d and message = %s\n",
number, message);

return 0;
return 0;
}

static void __exit lkm_parameters_exit(void) {
// nothing todo here...
static void __exit lkm_parameters_exit(void)
{
// nothing todo here...
}


// Registering init and exit functions
module_init(lkm_parameters_init);
module_exit(lkm_parameters_exit);

47 changes: 21 additions & 26 deletions lkm_proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,61 +21,56 @@
*
*/

// Linux Kernel Headers for Module Development
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>

// Additional headers for the /proc filesystem and sequential file I/O
#include <linux/proc_fs.h>
#include <linux/seq_file.h>

// Module Meta Data
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Thomas Piekarski");
MODULE_DESCRIPTION("Module for accesing the /proc filesystem");
MODULE_VERSION("0.1");

// Prototypes
static int lkm_proc_show(struct seq_file *seq, void *v);

// Definitions
#define LKM_PROC_FILE_NAME "lkm_proc"
#define LKM_PROC_MESSAGE "Hello, /proc!"
#define LKM_PROC_PARENT NULL // root of /proc
#define LKM_PROC_PERMISSION 0444

// Global Structures
struct proc_dir_entry *lkm_proc_entry;

//
// Module Init & Exit
//

static int __init lkm_proc_init(void) {
printk(KERN_INFO "Initializing module for accessing /proc/%s...\n", LKM_PROC_FILE_NAME);
lkm_proc_entry = proc_create_single(LKM_PROC_FILE_NAME, LKM_PROC_PERMISSION, LKM_PROC_PARENT, lkm_proc_show);
static int __init lkm_proc_init(void)
{
printk(KERN_INFO "Initializing module for accessing /proc/%s...\n",
LKM_PROC_FILE_NAME);
lkm_proc_entry =
proc_create_single(LKM_PROC_FILE_NAME, LKM_PROC_PERMISSION,
LKM_PROC_PARENT, lkm_proc_show);

if (lkm_proc_entry == NULL) {
printk(KERN_ALERT "Failed to create entry '%s' in /proc.", LKM_PROC_FILE_NAME);
}
if (lkm_proc_entry == NULL) {
printk(KERN_ALERT "Failed to create entry '%s' in /proc.",
LKM_PROC_FILE_NAME);
}

return 0;
return 0;
}

static void __exit lkm_proc_exit(void) {
printk(KERN_INFO "Removing /proc/%s...\n", LKM_PROC_FILE_NAME);
static void __exit lkm_proc_exit(void)
{
printk(KERN_INFO "Removing /proc/%s...\n", LKM_PROC_FILE_NAME);

remove_proc_entry(LKM_PROC_FILE_NAME, LKM_PROC_PARENT);
remove_proc_entry(LKM_PROC_FILE_NAME, LKM_PROC_PARENT);
}

static int lkm_proc_show(struct seq_file *seq, void *v) {
seq_puts(seq, LKM_PROC_MESSAGE);
seq_putc(seq, '\n');
static int lkm_proc_show(struct seq_file *seq, void *v)
{
seq_puts(seq, LKM_PROC_MESSAGE);
seq_putc(seq, '\n');

return 0;
return 0;
}

// Registering init and exit functions
module_init(lkm_proc_init);
module_exit(lkm_proc_exit);
26 changes: 8 additions & 18 deletions lkm_sandbox.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,36 +21,26 @@
*
*/

// Linux Kernel Headers for Module Development
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/module.h>


// Module Meta Data (For available license see include/linux/module.h)
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Thomas Piekarski");
MODULE_DESCRIPTION("A sandbox for Linux Kernel Development");
MODULE_VERSION("0.1");

//
// Module Init & Exit
//
static int __init lkm_sandbox_init(void)
{
printk(KERN_INFO "Initializing and entering the sandbox...\n");

// Function to initialize and load the module
static int __init lkm_sandbox_init(void) {
printk(KERN_INFO "Initializing and entering the sandbox...\n");

return 0;
return 0;
}

// Function to exit and unload the module
static void __exit lkm_sandbox_exit(void) {
printk(KERN_INFO "Exiting the sandbox...\n");
static void __exit lkm_sandbox_exit(void)
{
printk(KERN_INFO "Exiting the sandbox...\n");
}


// Registering init and exit functions
module_init(lkm_sandbox_init);
module_exit(lkm_sandbox_exit);

Loading

0 comments on commit d8f4244

Please sign in to comment.