mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 03:06:10 +00:00
UML kernel reads polling interval from a config file
This commit is contained in:
parent
f8290a30db
commit
d8d6d4450a
5 changed files with 38 additions and 6 deletions
12
arch/um/include/shared/aha-defs.h
Normal file
12
arch/um/include/shared/aha-defs.h
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#ifndef __AHA_DEFS__
|
||||||
|
#define __AHA_DEFS__
|
||||||
|
/* Global variables used for the aha framework */
|
||||||
|
|
||||||
|
/* Polling delay for sys_execve. AHA polls the permissions for each system call.
|
||||||
|
* The delay must be expressed in ms
|
||||||
|
* This delay is read once in the main from the conf/polldelay file. Thus one
|
||||||
|
* write. Each sys_execve calls read then this global variable
|
||||||
|
*/
|
||||||
|
extern int __aha_poll_delay;
|
||||||
|
#define AHA_DEF_POLL_DELAY 100
|
||||||
|
#endif
|
|
@ -1,6 +1,5 @@
|
||||||
#ifndef AHA
|
#ifndef AHA
|
||||||
#define AHA
|
#define AHA
|
||||||
|
|
||||||
#define AHA_DEBUG
|
#define AHA_DEBUG
|
||||||
#include "linux/kernel.h" /* printk is declared there */
|
#include "linux/kernel.h" /* printk is declared there */
|
||||||
//#include "linux/gfp.h" /* GFP_KERNEL */
|
//#include "linux/gfp.h" /* GFP_KERNEL */
|
||||||
|
@ -18,7 +17,7 @@
|
||||||
//#include "skas.h"
|
//#include "skas.h"
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "linux/delay.h"
|
#include "linux/delay.h"
|
||||||
|
#include "aha-defs.h"
|
||||||
/*FIXME use AHA name space */
|
/*FIXME use AHA name space */
|
||||||
#define MAX_DUMP_BUF 512
|
#define MAX_DUMP_BUF 512
|
||||||
struct ReplyMessage{
|
struct ReplyMessage{
|
||||||
|
|
|
@ -170,9 +170,8 @@ void aha_get_reply_message(char* key, struct ReplyMessage *msg)
|
||||||
filename[0]=0;
|
filename[0]=0;
|
||||||
|
|
||||||
snprintf((char*)filename,128,"in/%s",key);
|
snprintf((char*)filename,128,"in/%s",key);
|
||||||
|
|
||||||
/* Give AHA the time to write the reply */
|
/* Give AHA the time to write the reply */
|
||||||
msleep_interruptible(50);
|
msleep_interruptible(__aha_poll_delay);
|
||||||
fd = os_open_file(filename, of_read(OPENFLAGS()), 0);
|
fd = os_open_file(filename, of_read(OPENFLAGS()), 0);
|
||||||
if ( fd < 0 ) {
|
if ( fd < 0 ) {
|
||||||
AHA_PRINTK("Could not open reply file: %s\n",filename);
|
AHA_PRINTK("Could not open reply file: %s\n",filename);
|
||||||
|
@ -224,3 +223,4 @@ void aha_record_sys_clone(int pid, int ppid)
|
||||||
#undef filename__size
|
#undef filename__size
|
||||||
#undef buf__size
|
#undef buf__size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ obj-y = aio.o elf_aux.o execvp.o file.o helper.o irq.o main.o mem.o process.o \
|
||||||
|
|
||||||
USER_OBJS := $(user-objs-y) aio.o elf_aux.o execvp.o file.o helper.o irq.o \
|
USER_OBJS := $(user-objs-y) aio.o elf_aux.o execvp.o file.o helper.o irq.o \
|
||||||
main.o mem.o process.o registers.o sigio.o signal.o start_up.o time.o \
|
main.o mem.o process.o registers.o sigio.o signal.o start_up.o time.o \
|
||||||
tty.o tls.o uaccess.o umid.o util.o
|
tty.o tls.o uaccess.o umid.o util.o aha.o
|
||||||
|
|
||||||
CFLAGS_user_syms.o += -DSUBARCH_$(SUBARCH)
|
CFLAGS_user_syms.o += -DSUBARCH_$(SUBARCH)
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,13 @@
|
||||||
#include "kern_util.h"
|
#include "kern_util.h"
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "um_malloc.h"
|
#include "um_malloc.h"
|
||||||
|
#include "aha-defs.h"
|
||||||
#define PGD_BOUND (4 * 1024 * 1024)
|
#define PGD_BOUND (4 * 1024 * 1024)
|
||||||
#define STACKSIZE (8 * 1024 * 1024)
|
#define STACKSIZE (8 * 1024 * 1024)
|
||||||
#define THREAD_NAME_LEN (256)
|
#define THREAD_NAME_LEN (256)
|
||||||
|
|
||||||
|
int __aha_poll_delay;
|
||||||
|
|
||||||
static void set_stklim(void)
|
static void set_stklim(void)
|
||||||
{
|
{
|
||||||
struct rlimit lim;
|
struct rlimit lim;
|
||||||
|
@ -38,6 +40,24 @@ static void set_stklim(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Read the polling delay from the conf/polldelay file.
|
||||||
|
* On sucess the polling value is returned.
|
||||||
|
* On failure a hardcoded default value is returned.
|
||||||
|
*/
|
||||||
|
int aha_read_poll_delay(void)
|
||||||
|
{
|
||||||
|
FILE *fp;
|
||||||
|
int ret;
|
||||||
|
ret = AHA_DEF_POLL_DELAY;
|
||||||
|
fp = fopen("conf/polldelay","r");
|
||||||
|
if (fp){
|
||||||
|
if (fscanf(fp,"%d",(int*)&ret)<=0)
|
||||||
|
ret = AHA_DEF_POLL_DELAY;
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static __init void do_uml_initcalls(void)
|
static __init void do_uml_initcalls(void)
|
||||||
{
|
{
|
||||||
initcall_t *call;
|
initcall_t *call;
|
||||||
|
@ -47,6 +67,7 @@ static __init void do_uml_initcalls(void)
|
||||||
(*call)();
|
(*call)();
|
||||||
call++;
|
call++;
|
||||||
}
|
}
|
||||||
|
__aha_poll_delay=aha_read_poll_delay();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void last_ditch_exit(int sig)
|
static void last_ditch_exit(int sig)
|
||||||
|
|
Loading…
Reference in a new issue