[IMPROVE] Write to sysfs implement
authorAlexander Aksenov <a.aksenov@samsung.com>
Wed, 2 Oct 2013 13:53:59 +0000 (17:53 +0400)
committerGerrit Code Review <gerrit@gerrit.vlan144.tizendev.org>
Sat, 5 Oct 2013 10:32:49 +0000 (10:32 +0000)
Create new descriptor (user_ev_fd) in manager struct, now it points to
/sys/kernel/debug/swap/writer/raw

Change-Id: I38a06ae83d80b8856f168b30279678dddccfc177
Signed-off-by: Alexander Aksenov <a.aksenov@samsung.com>
daemon/buffer.c
daemon/buffer.h
daemon/daemon.h
daemon/main.c

index 8a62bc2..a5108aa 100644 (file)
 #define SUBBUF_SIZE 64 * 1024
 #define SUBBUF_NUM 32 * 16
 
-static int open_buf(void)
+static int open_buf_ctl(void)
 {
-       manager.buf_fd = open(BUF_FILENAME, O_RDWR);
+       manager.buf_fd = open(BUF_FILENAME, O_RDONLY);
        if (manager.buf_fd == -1) {
                LOGE("Cannot open buffer: %s\n", strerror(errno));
                return 1;
        }
        LOGI("buffer opened: %s, %d\n", BUF_FILENAME, manager.buf_fd);
 
+       manager.user_ev_fd = open(USER_EVENT_FILENAME, O_WRONLY);
+       if (manager.user_ev_fd == -1) {
+               LOGE("Cannot open user event sysfs file: %s\b", strerror(errno));
+               return 1;
+       }
+       LOGI("user event sysfs file opened: %s, %d\n", USER_EVENT_FILENAME,
+            manager.user_ev_fd);
+
        return 0;
 }
 
-static void close_buf(void)
+static void close_buf_ctl(void)
 {
        LOGI("close buffer (%d)\n", manager.buf_fd);
        close(manager.buf_fd);
+
+       LOGI("close user event sysfs file (%d)\n", manager.user_ev_fd);
+       close(manager.user_ev_fd);
 }
 
 static int insert_buf_modules(void)
@@ -80,7 +91,7 @@ int init_buf(void)
                return 1;
        }
 
-       if (open_buf() != 0) {
+       if (open_buf_ctl() != 0) {
                LOGE("Cannot open buffer\n");
                return 1;
        }
@@ -95,28 +106,28 @@ int init_buf(void)
 
 void exit_buf(void)
 {
-       LOGI("Uninit buffer (%d)\n", manager.buf_fd);
+       LOGI("Uninit driver (%d)\n", manager.buf_fd);
        if (ioctl(manager.buf_fd, SWAP_DRIVER_BUFFER_UNINITIALIZE) == -1)
-               LOGW("Cannot uninit buffer: %s\n", strerror(errno));
+               LOGW("Cannot uninit driver: %s\n", strerror(errno));
 
-       close_buf();
+       close_buf_ctl();
 }
 
 void flush_buf(void)
 {
        if (ioctl(manager.buf_fd, SWAP_DRIVER_FLUSH_BUFFER) == -1)
-               LOGW("Cannot flush buffer: %s\n", strerror(errno));
+               LOGW("Cannot send flush to driver: %s\n", strerror(errno));
 }
 
 void wake_up_buf(void)
 {
        if (ioctl(manager.buf_fd, SWAP_DRIVER_WAKE_UP) == -1)
-               LOGW("Cannot wake up buffer: %s\n", strerror(errno));
+               LOGW("Cannot send wake up to driver: %s\n", strerror(errno));
 }
 
 int write_to_buf(struct msg_data_t *msg)
 {
-       if (write(manager.buf_fd, msg, MSG_DATA_HDR_LEN + msg->len) == -1) {
+       if (write(manager.user_ev_fd, msg, MSG_DATA_HDR_LEN + msg->len) == -1) {
                LOGE("write to buf: %s\n", strerror(errno));
                return 1;
        }
index 66e470f..2f3a5de 100644 (file)
@@ -31,6 +31,7 @@
 
 #include "da_protocol.h"
 
+#define USER_EVENT_FILENAME "/sys/kernel/debug/swap/writer/raw"
 #define BUF_FILENAME "/dev/swap_device"
 
 int init_buf(void);
index 22ec379..7617d7b 100644 (file)
@@ -204,6 +204,7 @@ typedef struct
        pthread_t replay_thread;
        pthread_t transfer_thread;
        int buf_fd;
+       int user_ev_fd;
        int efd;
        __da_host_info host;
        __da_target_info target[MAX_TARGET_COUNT];
index ccae050..751ac4b 100644 (file)
@@ -72,6 +72,7 @@ __da_manager manager =
        .replay_thread = -1,
        .transfer_thread = -1,
        .buf_fd = -1,
+       .user_ev_fd = -1,
        .efd = -1,
 
        .host = {