Ejemplo n.º 1
0
int do_get_thread_area(struct thread_struct *t, struct user_desc *u_info)
{
	struct user_desc info;
	struct n_desc_struct *desc;
	int idx;

	if (get_user(idx, &u_info->entry_number))
		return -EFAULT;
	if (idx < GDT_ENTRY_TLS_MIN || idx > GDT_ENTRY_TLS_MAX)
		return -EINVAL;

	desc = ((struct n_desc_struct *)t->tls_array) + idx - GDT_ENTRY_TLS_MIN;

	memset(&info, 0, sizeof(struct user_desc));
	info.entry_number = idx;
	info.base_addr = GET_BASE(desc);
	info.limit = GET_LIMIT(desc);
	info.seg_32bit = GET_32BIT(desc);
	info.contents = GET_CONTENTS(desc);
	info.read_exec_only = !GET_WRITABLE(desc);
	info.limit_in_pages = GET_LIMIT_PAGES(desc);
	info.seg_not_present = !GET_PRESENT(desc);
	info.useable = GET_USEABLE(desc);
	info.lm = GET_LONGMODE(desc);

	if (copy_to_user(u_info, &info, sizeof(info)))
		return -EFAULT;
	return 0;
}
Ejemplo n.º 2
0
Archivo: ui2.c Proyecto: JBarrada/fancy
BASE_UI base_ui(uint32_t ui_element) {
	switch (((uint32_t*)ui_element)[0] & 0xFF) {
		case T_TEXT_UI:
			return GET_BASE(ui_element, TEXT_UI);
			break;	
		case T_CONTAINER_UI:
			return GET_BASE(ui_element, CONTAINER_UI);
			break;
		case T_LIST_UI:
			return GET_BASE(ui_element, LIST_UI);
			break;
		case T_CHECKBOX_UI:
			return GET_BASE(ui_element, CHECKBOX_UI);
			break;
		case T_PROGRESS_UI:
			return GET_BASE(ui_element, PROGRESS_UI);
			break;
	}
}