Пример #1
0
static long
get_page_offset(void)
{
#if defined(AFS_PPC_LINUX22_ENV) || defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_SPARC_LINUX20_ENV) || defined(AFS_ALPHA_LINUX20_ENV) || defined(AFS_S390_LINUX22_ENV) || defined(AFS_IA64_LINUX20_ENV) || defined(AFS_PARISC_LINUX24_ENV) || defined(AFS_AMD64_LINUX20_ENV) || defined(AFS_PPC64_LINUX20_ENV)
    return PAGE_OFFSET;
#else
    struct task_struct *p, *q;

    /* search backward thru the circular list */
#if defined(EXPORTED_TASKLIST_LOCK) 
    read_lock(&tasklist_lock);
#endif
    /* search backward thru the circular list */
#if defined(prev_task)
    for (q = current; p = q; q = prev_task(p)) {
#else
    for (p = current; p; p = p->prev_task) {
#endif
	if (p->pid == 1) {
#if defined(EXPORTED_TASKLIST_LOCK) 
	    read_unlock(&tasklist_lock);
#endif
	    return p->addr_limit.seg;
	}
    }

#if defined(EXPORTED_TASKLIST_LOCK) 
    read_unlock(&tasklist_lock);
#endif
    return 0;
#endif
}
Пример #2
0
void window_action(Task* tsk, int action) {
    if (!tsk) return;
    int desk;
    switch (action) {
    case CLOSE:
        set_close(tsk->win);
        break;
    case TOGGLE:
        set_active(tsk->win);
        break;
    case ICONIFY:
        XIconifyWindow(server.dsp, tsk->win, server.screen);
        break;
    case TOGGLE_ICONIFY:
        if (task_active && tsk->win == task_active->win)
            XIconifyWindow(server.dsp, tsk->win, server.screen);
        else
            set_active(tsk->win);
        break;
    case SHADE:
        window_toggle_shade(tsk->win);
        break;
    case MAXIMIZE_RESTORE:
        window_maximize_restore(tsk->win);
        break;
    case MAXIMIZE:
        window_maximize_restore(tsk->win);
        break;
    case RESTORE:
        window_maximize_restore(tsk->win);
        break;
    case DESKTOP_LEFT:
        if (tsk->desktop == 0) break;
        desk = tsk->desktop - 1;
        windows_set_desktop(tsk->win, desk);
        if (desk == server.desktop) set_active(tsk->win);
        break;
    case DESKTOP_RIGHT:
        if (tsk->desktop == (uint32_t)server.nb_desktop) break;
        desk = tsk->desktop + 1;
        windows_set_desktop(tsk->win, desk);
        if (desk == server.desktop) set_active(tsk->win);
        break;
    case NEXT_TASK: {
        Task* tsk1;
        tsk1 = next_task(find_active_task(tsk, task_active));
        set_active(tsk1->win);
    }
    break;
    case PREV_TASK: {
        Task* tsk1;
        tsk1 = prev_task(find_active_task(tsk, task_active));
        set_active(tsk1->win);
    }
    }
}
Пример #3
0
static struct hone_event *add_current_tasks(
		struct hone_reader *reader, struct hone_event *event)
{
	struct hone_event *proc_event;
	struct task_struct *task;

	rcu_read_lock();
	for (task = &init_task; (task = prev_task(task)) != &init_task; ) {
		if (task->flags & PF_EXITING)
			continue;
		event = __add_files(reader, event, task);
		if ((proc_event = __alloc_process_event(task,
						task->flags & PF_FORKNOEXEC ? PROC_FORK : PROC_EXEC,
						GFP_ATOMIC))) {
			proc_event->next = event;
			event = proc_event;
			memcpy(&event->ts, &task->start_time, sizeof(event->ts));
		} else {
			atomic64_inc(&reader->info.dropped.process);
		}
	}
	rcu_read_unlock();
	return event;
}