Beispiel #1
0
long cg_read_long(const char *cgroup, const char *control)
{
	char buf[128];

	if (cg_read(cgroup, control, buf, sizeof(buf)))
		return -1;

	return atol(buf);
}
Beispiel #2
0
int cg_read_strstr(const char *cgroup, const char *control, const char *needle)
{
	char buf[PAGE_SIZE];

	if (cg_read(cgroup, control, buf, sizeof(buf)))
		return -1;

	return strstr(buf, needle) ? 0 : -1;
}
Beispiel #3
0
long cg_read_key_long(const char *cgroup, const char *control, const char *key)
{
	char buf[PAGE_SIZE];
	char *ptr;

	if (cg_read(cgroup, control, buf, sizeof(buf)))
		return -1;

	ptr = strstr(buf, key);
	if (!ptr)
		return -1;

	return atol(ptr + strlen(key));
}
Beispiel #4
0
int cg_read_strcmp(const char *cgroup, const char *control,
		   const char *expected)
{
	size_t size = strlen(expected) + 1;
	char *buf;

	buf = malloc(size);
	if (!buf)
		return -1;

	if (cg_read(cgroup, control, buf, size))
		return -1;

	return strcmp(expected, buf);
}
Beispiel #5
0
static int do_cg_read(const char *path, char *buf, size_t size, off_t offset,
		struct fuse_file_info *fi)
{
	int (*cg_read)(const char *path, char *buf, size_t size, off_t offset,
		struct fuse_file_info *fi);
	char *error;

	dlerror();    /* Clear any existing error */
	cg_read = (int (*)(const char *, char *, size_t, off_t, struct fuse_file_info *)) dlsym(dlopen_handle, "cg_read");
	error = dlerror();
	if (error != NULL) {
		fprintf(stderr, "cg_read: %s\n", error);
		return -1;
	}

	return cg_read(path, buf, size, offset, fi);
}
Beispiel #6
0
static PyObject *
cc_read (PyObject *self, PyObject *args)
{
    CCLibTicker ticker("cc_read");
	char *data = (char*)xbuffer;
	int w = 0, l = 0, ret = 0;
	int e, nw = 0;
	char *cmd ;

	
	if (!PyArg_ParseTuple(args, "|i", &nw)) {
		return NULL;
	}
	log_list.clear() ;
	cc_logmod = 1 ;

	Py_BEGIN_ALLOW_THREADS
	ret = cg_read (&e, &w, &l, data, nw) ;
	Py_END_ALLOW_THREADS

	if (ret > MAX_PACKET_SIZE) {
		assert(ret <= MAX_PACKET_SIZE);
		fprintf(stderr, "F**K SIZE\n");
		printf("size=%d\n", ret);
		abort();
	}
	
	cc_logmod = 0;
	for (; log_list.begin() != log_list.end(); ) {
		cmd = *(log_list.begin()) ;
		log_list.pop_front() ;
		PyRun_SimpleString(cmd) ;
		delete cmd ;
	}
	
	if (ret < 0) {
		return Py_BuildValue("iiis#", -1, w, l, "", 0);
	}
	else if (ret == 0 && e < 0) {
		return Py_BuildValue("iiis#", 99, w, l, "", 0);
	}

	// return format: (len of payload, event, wparam, lparam, payload)
	return Py_BuildValue("iiis#", e, w, l, data, ret);
}
Beispiel #7
0
static int cg_killall(const char *cgroup)
{
	char buf[PAGE_SIZE];
	char *ptr = buf;

	if (cg_read(cgroup, "cgroup.procs", buf, sizeof(buf)))
		return -1;

	while (ptr < buf + sizeof(buf)) {
		int pid = strtol(ptr, &ptr, 10);

		if (pid == 0)
			break;
		if (*ptr)
			ptr++;
		else
			break;
		if (kill(pid, SIGKILL))
			return -1;
	}

	return 0;
}