sysfs sample
This commit is contained in:
@ -9,7 +9,8 @@ obj-m += mcctrl.o
|
|||||||
|
|
||||||
ccflags-y := -I$(IHK_BASE)/linux/include -I$(IHK_BASE)/ikc/include -I$(IHK_BASE)/include -I$(src)/../../include -mcmodel=kernel -mno-red-zone -DMCEXEC_PATH=\"$(BINDIR)/mcexec\"
|
ccflags-y := -I$(IHK_BASE)/linux/include -I$(IHK_BASE)/ikc/include -I$(IHK_BASE)/include -I$(src)/../../include -mcmodel=kernel -mno-red-zone -DMCEXEC_PATH=\"$(BINDIR)/mcexec\"
|
||||||
|
|
||||||
mcctrl-y := driver.o control.o ikc.o syscall.o procfs.o binfmt_mcexec.o sysfs.o
|
mcctrl-y := driver.o control.o ikc.o syscall.o procfs.o binfmt_mcexec.o
|
||||||
|
mcctrl-y += sysfs.o sysfs_files.o
|
||||||
|
|
||||||
KBUILD_EXTRA_SYMBOLS = @abs_builddir@/../../../../ihk/linux/core/Module.symvers
|
KBUILD_EXTRA_SYMBOLS = @abs_builddir@/../../../../ihk/linux/core/Module.symvers
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,7 @@
|
|||||||
#ifndef HEADER_MCCTRL_H
|
#ifndef HEADER_MCCTRL_H
|
||||||
#define HEADER_MCCTRL_H
|
#define HEADER_MCCTRL_H
|
||||||
|
|
||||||
|
#include <linux/fs.h>
|
||||||
#include <ihk/ihk_host_driver.h>
|
#include <ihk/ihk_host_driver.h>
|
||||||
#include <linux/resource.h>
|
#include <linux/resource.h>
|
||||||
#include <uprotocol.h>
|
#include <uprotocol.h>
|
||||||
@ -252,4 +253,7 @@ struct procfs_file {
|
|||||||
char fname[PROCFS_NAME_MAX]; /* procfs filename (request) */
|
char fname[PROCFS_NAME_MAX]; /* procfs filename (request) */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* sysfs_files.c */
|
||||||
|
void setup_sysfs_files(ihk_os_t os);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1302,6 +1302,8 @@ sysfsm_setup(ihk_os_t os, void *buf, long buf_pa, size_t bufsize)
|
|||||||
wmb();
|
wmb();
|
||||||
sdp->sysfs_buf = buf;
|
sdp->sysfs_buf = buf;
|
||||||
|
|
||||||
|
setup_sysfs_files(os);
|
||||||
|
|
||||||
error = 0;
|
error = 0;
|
||||||
out:
|
out:
|
||||||
if (error) {
|
if (error) {
|
||||||
|
|||||||
68
executer/kernel/mcctrl/sysfs_files.c
Normal file
68
executer/kernel/mcctrl/sysfs_files.c
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
/**
|
||||||
|
* \file sysfs_files.c
|
||||||
|
* License details are found in the file LICENSE.
|
||||||
|
* \brief
|
||||||
|
* implement McKernel's sysfs files, IHK-Master side
|
||||||
|
* \author Gou Nakamura <go.nakamura.yw@hitachi-solutions.com> \par
|
||||||
|
* Copyright (C) 2016 RIKEN AICS
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* HISTORY:
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include "mcctrl.h"
|
||||||
|
#include "sysfs_msg.h"
|
||||||
|
|
||||||
|
#define dprintk(...) do { if (0) printk(KERN_DEBUG __VA_ARGS__); } while (0)
|
||||||
|
#define wprintk(...) do { if (1) printk(KERN_WARNING __VA_ARGS__); } while (0)
|
||||||
|
#define eprintk(...) do { if (1) printk(KERN_ERR __VA_ARGS__); } while (0)
|
||||||
|
|
||||||
|
static ssize_t
|
||||||
|
show_int(struct sysfsm_ops *ops, void *instance, void *buf, size_t size)
|
||||||
|
{
|
||||||
|
int *p = instance;
|
||||||
|
|
||||||
|
return snprintf(buf, size, "%d\n", *p);
|
||||||
|
} /* show_int() */
|
||||||
|
|
||||||
|
struct sysfsm_ops show_int_ops = {
|
||||||
|
.show = &show_int,
|
||||||
|
};
|
||||||
|
|
||||||
|
void setup_sysfs_files(ihk_os_t os)
|
||||||
|
{
|
||||||
|
static int a_value = 35;
|
||||||
|
int error;
|
||||||
|
struct sysfs_handle handle;
|
||||||
|
|
||||||
|
error = sysfsm_mkdirf(os, NULL, "/sys/test/x.dir");
|
||||||
|
if (error) {
|
||||||
|
panic("sysfsm_mkdir(x.dir)");
|
||||||
|
}
|
||||||
|
|
||||||
|
error = sysfsm_createf(os, &show_int_ops, &a_value, 0444,
|
||||||
|
"/sys/test/a.dir/a_value");
|
||||||
|
if (error) {
|
||||||
|
panic("sysfsm_createf");
|
||||||
|
}
|
||||||
|
|
||||||
|
error = sysfsm_lookupf(os, &handle, "/sys/test/%s", "a.dir");
|
||||||
|
if (error) {
|
||||||
|
panic("sysfsm_lookupf(a.dir)");
|
||||||
|
}
|
||||||
|
|
||||||
|
error = sysfsm_symlinkf(os, handle, "/sys/test/%c.dir", 'L');
|
||||||
|
if (error) {
|
||||||
|
panic("sysfsm_symlinkf");
|
||||||
|
}
|
||||||
|
|
||||||
|
error = sysfsm_unlinkf(os, 0, "/sys/test/%s.dir", "x");
|
||||||
|
if (error) {
|
||||||
|
panic("sysfsm_unlinkf");
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
} /* setup_files() */
|
||||||
|
|
||||||
|
/**** End of File ****/
|
||||||
Reference in New Issue
Block a user