[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 8a62bc27c0370656e6d583ba0188bad492508397..a5108aa853164f708cd747b9dbc2297f4de38009 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 66e470fe05e19477957f657f2ed6cc6bf5d264f7..2f3a5de91d10399d3d47b006b8a752768a15f9a1 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 22ec379989427dbcf0624f6e9c125cfbf4791916..7617d7b017d635e41940de7c047832620f2dc413 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 ccae050ec5b1ad202e4876e6d1bf42271e58bbd8..751ac4b3b61369a7da2965f897841f223a7fee0d 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 = {