Add a basic sudoku struct
Signed-off-by: Sameer Rahmani <lxsameer@gnu.org>
This commit is contained in:
parent
4508f3bdf8
commit
5344bbf719
50
ksudoku.c
50
ksudoku.c
|
@ -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);
|
||||
|
|
41
ksudoku.h
41
ksudoku.h
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue