static int buf_fd = 0;
-int open_buf(void)
+static int open_buf(void)
{
buf_fd = creat(BUF_FILENAME, 0644);
if (buf_fd == -1) {
return 0;
}
-void close_buf(void)
+static void close_buf(void)
{
close(buf_fd);
}
+static int insert_buf_modules(void)
+{
+ system("insmod /opt/swap/sdk/swap_buffer.ko");
+ system("insmod /opt/swap/sdk/swap_driver.ko");
+
+ return 0;
+}
+
+static void remove_buf_modules(void)
+{
+ system("rmmod /opt/swap/sdk/swap_driver.ko");
+ system("rmmod /opt/swap/sdk/swap_buffer.ko");
+}
+
+int init_buf(void)
+{
+ if (insert_buf_modules() != 0) {
+ LOGE("Cannot insert buffer modules\n");
+ return 1;
+ }
+
+ if (open_buf() != 0) {
+ LOGE("Cannot open buffer\n");
+ remove_buf_modules();
+ return 1;
+ }
+
+ return 0;
+}
+
+void exit_buf(void)
+{
+ close_buf();
+ remove_buf_modules();
+}
+
int write_to_buf(struct msg_data_t *msg)
{
if (write(buf_fd, msg, MSG_DATA_HDR_LEN + msg->len) == -1) {
#define BUF_FILENAME "/tmp/daemon_events"
-int open_buf(void);
-void close_buf(void);
+int init_buf(void);
+void exit_buf(void);
int write_to_buf(struct msg_data_t *msg);
#endif /* _BUFFER_ */
return 1;
}
- // prepare buffer to write
- if (open_buf() != 0) {
- LOGE("Cannot open buffer\n");
- sendACKToHost(msg->id, ERR_UNKNOWN, 0, 0);
- return 1;
- }
-
// TODO: launch translator thread
// TODO: kill app
case NMSG_STOP:
terminate_all();
sendACKToHost(msg->id,ERR_NO, 0, 0);
- close_buf();
reset_prof_session(&prof_session);
break;
case NMSG_CONFIG:
int write_to_buf(struct msg_data_t *msg);
void free_msg_data(struct msg_data_t *msg);
void free_msg_payload(struct msg_t *msg);
-int open_buf(void);
-void close_buf(void);
void free_sys_info(struct system_info_t *sys_info);
int start_replay();
void reset_msg(struct msg_t *msg);
#include "daemon.h"
#include "da_protocol.h"
#include "sys_stat.h"
+#include "buffer.h"
#define SINGLETON_LOCKFILE "/tmp/lockfile.da"
#define PORTFILE "/tmp/port.da"
int i;
sigset_t newsigmask;
+ if (init_buf() != 0) {
+ LOGE("Cannot init buffer\n");
+ return -1;
+ }
+
atexit(_close_server_socket);
if(initialize_system_info() < 0)
{
if(manager.host.data_socket != -1)
close(manager.host.data_socket);
+ exit_buf();
+
return 0;
}