Add a basic sudoku struct

Signed-off-by: Sameer Rahmani <lxsameer@gnu.org>
This commit is contained in:
Sameer Rahmani 2020-04-01 20:20:53 +01:00
parent 4508f3bdf8
commit 5344bbf719
2 changed files with 53 additions and 38 deletions

View File

@ -1,11 +1,11 @@
#include "ksudoku.h"
#define KSTUDY_VERSION "0.1"
#define KSTUDY_DESC "Kernel Sudoku Module"
#define KSUDOKU_VERSION "0.1"
#define KSUDOKU_DESC "Kernel Sudoku Module"
static MATRIX_ATTR_RO(is_valid);
static MATRIX_ATTR_RO(is_solved);
static SUDOKU_ATTR_RO(is_valid);
static SUDOKU_ATTR_RO(is_solved);
/**
@ -14,7 +14,7 @@ static MATRIX_ATTR_RO(is_solved);
* @attr: sudoku attribute descriptor.
*/
int sudoku_create_file(struct sudoku *s,
const struct matrix_attribute *attr)
const struct sudoku_attribute *attr)
{
int error = 0;
@ -33,32 +33,32 @@ int sudoku_create_file(struct sudoku *s,
EXPORT_SYMBOL_GPL(sudoku_create_file);
static ssize_t is_valid_show(struct kobject *kobj, struct attribute *attr,
char *buf)
{
struct sudoku_attribute *s_attr = to_sudoku_attr(attr);
struct sudoku *s = to_sudoku(kobj);
ssize_t ret = -EIO;
/* static ssize_t is_valid_show(struct kobject *kobj, struct attribute *attr, */
/* char *buf) */
/* { */
/* struct sudoku_attribute *s_attr = to_sudoku_attr(attr); */
/* struct sudoku *s = to_sudoku(kobj); */
/* ssize_t ret = -EIO; */
if (s_attr->show)
ret = s_attr->show(s, s_attr, buf);
/* if (s_attr->show) */
/* ret = s_attr->show(s, s_attr, buf); */
if (ret >= (ssize_t)PAGE_SIZE) {
printk("is_valid_show: %pS returned bad count\n",
s_attr->show);
}
return ret;
}
/* if (ret >= (ssize_t)PAGE_SIZE) { */
/* printk("is_valid_show: %pS returned bad count\n", */
/* s_attr->show); */
/* } */
/* return ret; */
/* } */
static int kstudy_init(void)
static int ksudoku_init(void)
{
printk(KERN_ALERT "Init ksudoku.\n");
return 0;
}
static void kstudy_exit(void)
static void ksudoku_exit(void)
{
printk(KERN_ALERT "Exit ksudoku.\n");
}
@ -66,9 +66,9 @@ static void kstudy_exit(void)
MODULE_AUTHOR("Sameer Rahmani <lxsameer@gnu.org>");
MODULE_DESCRIPTION(KSTUDY_DESC);
MODULE_VERSION(KSTUDY_VERSION);
MODULE_DESCRIPTION(KSUDOKU_DESC);
MODULE_VERSION(KSUDOKU_VERSION);
MODULE_LICENSE("GPL");
module_init(kstudy_init);
module_exit(kstudy_exit);
module_init(ksudoku_init);
module_exit(ksudoku_exit);

View File

@ -9,16 +9,24 @@
struct sudoku;
static ssize_t is_valid_show(struct kobject *kobj, struct attribute *attr,
char *buf)
static ssize_t is_valid_store(void);
static ssize_t is_valid_show(struct kobject *kobj,
struct attribute *attr,
char *buf);
static ssize_t is_solved_show(struct kobject *kobj, struct attribute *attr,
static ssize_t is_valid_store(struct kobject *,
struct attribute *,
const char *, size_t);
static ssize_t is_solved_show(struct kobject *kobj,
struct attribute *attr,
char *buf);
static ssize_t is_solved_store(void);
static ssize_t is_solved_store(struct kobject *,
struct attribute *,
const char *, size_t);
struct matrix_attribute {
struct sudoku_attribute {
struct attribute attr;
ssize_t (*show)(struct kobject *kobj, struct attribute *attr,
char *buf);
@ -38,8 +46,6 @@ struct matrix_attribute {
*/
struct sudoku_type {
const char *name;
char matrix[81];
const struct attribute_group **groups;
int (*uevent)(struct sudoku *s, struct kobj_uevent_env *env);
char *(*devnode)(struct sudoku *s, umode_t *mode,
@ -49,12 +55,21 @@ struct sudoku_type {
const struct sysfs_ops *sysfs_ops;
};
#define MATRIX_ATTR_RO(_name) \
struct matrix_attribute matrix_##_name = __ATTR_RO(_name)
struct sudoku {
struct kobject kobj;
struct sudoku *parent;
const struct sudoku_type *type;
char matrix[81];
#define MATRIX_ATTR_WO(_name) \
struct matrix_attribute matrix_##_name = __ATTR_WO(_name)
};
#define SUDOKU_ATTR_RO(_name) \
struct sudoku_attribute sudoku_##_name = __ATTR_RO(_name)
#define SUDOKU_ATTR_WO(_name) \
struct sudoku_attribute sudoku_##_name = __ATTR_WO(_name)
extern int sudoku_create_file(struct sudoku *s,
const struct matrix_attribute *attr)
const struct sudoku_attribute *attr);
#endif