您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ task_pt_regs函数代码示例

51自学网 2021-06-03 08:40:48
  C++
这篇教程C++ task_pt_regs函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中task_pt_regs函数的典型用法代码示例。如果您正苦于以下问题:C++ task_pt_regs函数的具体用法?C++ task_pt_regs怎么用?C++ task_pt_regs使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了task_pt_regs函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: put_user_reg

/* * this routine will put a word on the processes privileged stack. * the offset is how far from the base addr as stored in the THREAD. * this routine assumes that all the privileged stacks are in our * data space. */static inline intput_user_reg(struct task_struct *task, int offset, long data){	struct pt_regs newregs, *regs = task_pt_regs(task);	int ret = -EINVAL;	newregs = *regs;	newregs.uregs[offset] = data;	if (valid_user_regs(&newregs)) {		regs->uregs[offset] = data;		ret = 0;	}	return ret;}
开发者ID:18712886438,项目名称:android_kernel_motorola_quark,代码行数:22,


示例2: thread_saved_pc

/* * Return saved PC of a blocked thread. used in kernel/sched. * resume in entry.S does not create a new stack frame, it * just stores the registers %r6-%r15 to the frame given by * schedule. We want to return the address of the caller of * schedule, so we have to walk the backchain one time to * find the frame schedule() store its return address. */unsigned long thread_saved_pc(struct task_struct *tsk){	struct stack_frame *sf, *low, *high;	if (!tsk || !task_stack_page(tsk))		return 0;	low = task_stack_page(tsk);	high = (struct stack_frame *) task_pt_regs(tsk);	sf = (struct stack_frame *) (tsk->thread.ksp & PSW_ADDR_INSN);	if (sf <= low || sf > high)		return 0;	sf = (struct stack_frame *) (sf->back_chain & PSW_ADDR_INSN);	if (sf <= low || sf > high)		return 0;	return sf->gprs[8];}
开发者ID:3null,项目名称:linux,代码行数:24,


示例3: putregs

/* Put registers back to task. */static void putregs(struct task_struct *child, struct pt_regs *uregs){	struct pt_regs *regs = task_pt_regs(child);	/*	 * Don't allow overwriting the kernel-internal flags word.	 * But do set PT_FLAGS_RESTORE_REGS so that the kernel will reload	 * all the callee-saved registers when returning to userspace.	 */ 	uregs->flags = regs->flags | PT_FLAGS_RESTORE_REGS;	/* Only allow setting the ICS bit in the ex1 word. */	uregs->ex1 = PL_ICS_EX1(USER_PL, EX1_ICS(uregs->ex1));	*regs = *uregs;}
开发者ID:tcreech,项目名称:tilegx-linux-3.4.68-politestackrehome,代码行数:17,


示例4: sleeping_thread_to_gdb_regs

/* * Similar to pt_regs_to_gdb_regs() except that process is sleeping and so * we may not be able to get all the info. */voidsleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *task){	struct pt_regs *thread_regs;	const int NGPRS = TREG_LAST_GPR + 1;	if (task == NULL)		return;	thread_regs = task_pt_regs(task);	memcpy(gdb_regs, thread_regs, NGPRS * sizeof(unsigned long));	memset(&gdb_regs[NGPRS], 0,	       (TILEGX_PC_REGNUM - NGPRS) * sizeof(unsigned long));	gdb_regs[TILEGX_PC_REGNUM] = thread_regs->pc;	gdb_regs[TILEGX_FAULTNUM_REGNUM] = thread_regs->faultnum;}
开发者ID:020gzh,项目名称:linux,代码行数:20,


示例5: FixPerRegisters

static voidFixPerRegisters(struct task_struct *task){	struct pt_regs *regs;	per_struct *per_info;	per_cr_words cr_words;	regs = task_pt_regs(task);	per_info = (per_struct *) &task->thread.per_info;	per_info->control_regs.bits.em_instruction_fetch =		per_info->single_step | per_info->instruction_fetch;		if (per_info->single_step) {		per_info->control_regs.bits.starting_addr = 0;#ifdef CONFIG_COMPAT		if (is_compat_task())			per_info->control_regs.bits.ending_addr = 0x7fffffffUL;		else#endif			per_info->control_regs.bits.ending_addr = PSW_ADDR_INSN;	} else {		per_info->control_regs.bits.starting_addr =			per_info->starting_addr;		per_info->control_regs.bits.ending_addr =			per_info->ending_addr;	}	/*	 * if any of the control reg tracing bits are on 	 * we switch on per in the psw	 */	if (per_info->control_regs.words.cr[0] & PER_EM_MASK)		regs->psw.mask |= PSW_MASK_PER;	else		regs->psw.mask &= ~PSW_MASK_PER;	if (per_info->control_regs.bits.em_storage_alteration)		per_info->control_regs.bits.storage_alt_space_ctl = 1;	else		per_info->control_regs.bits.storage_alt_space_ctl = 0;	if (task == current) {		__ctl_store(cr_words, 9, 11);		if (memcmp(&cr_words, &per_info->control_regs.words,			   sizeof(cr_words)) != 0)			__ctl_load(per_info->control_regs.words, 9, 11);	}}
开发者ID:710leo,项目名称:LVS,代码行数:47,


示例6: gpr32_set

static int gpr32_set(struct task_struct *target,		     const struct user_regset *regset,		     unsigned int pos, unsigned int count,		     const void *kbuf, const void __user *ubuf){	struct pt_regs *regs = task_pt_regs(target);	u32 uregs[ELF_NGREG];	unsigned start, num_regs, i;	int err;	start = pos / sizeof(u32);	num_regs = count / sizeof(u32);	if (start + num_regs > ELF_NGREG)		return -EIO;	err = user_regset_copyin(&pos, &count, &kbuf, &ubuf, uregs, 0,				 sizeof(uregs));	if (err)		return err;	for (i = start; i < num_regs; i++) {		/*		 * Cast all values to signed here so that if this is a 64-bit		 * kernel, the supplied 32-bit values will be sign extended.		 */		switch (i) {		case MIPS32_EF_R1 ... MIPS32_EF_R25:			/* k0/k1 are ignored. */		case MIPS32_EF_R28 ... MIPS32_EF_R31:			regs->regs[i - MIPS32_EF_R0] = (s32)uregs[i];			break;		case MIPS32_EF_LO:			regs->lo = (s32)uregs[i];			break;		case MIPS32_EF_HI:			regs->hi = (s32)uregs[i];			break;		case MIPS32_EF_CP0_EPC:			regs->cp0_epc = (s32)uregs[i];			break;		}	}	return 0;}
开发者ID:uarka,项目名称:linux-next,代码行数:46,


示例7: arch_ptrace

long arch_ptrace(struct task_struct *child, long request,		 unsigned long addr, unsigned long data){	int ret;	switch (request) {		case PTRACE_SET_SYSCALL:			task_pt_regs(child)->syscallno = data;			ret = 0;			break;		default:			ret = ptrace_request(child, request, addr, data);			break;	}	return ret;}
开发者ID:BeastOn,项目名称:yu_msm8916,代码行数:17,


示例8: if

/* Help handler running on IST stack to switch back to user stack   for scheduling or signal handling. The actual stack switch is done in   entry.S */asmlinkage __kprobes struct pt_regs *sync_regs(struct pt_regs *eregs){	struct pt_regs *regs = eregs;	/* Did already sync */	if (eregs == (struct pt_regs *)eregs->sp)		;	/* Exception from user space */	else if (user_mode(eregs))		regs = task_pt_regs(current);	/* Exception from kernel and interrupts are enabled. Move to	   kernel process stack. */	else if (eregs->flags & X86_EFLAGS_IF)		regs = (struct pt_regs *)(eregs->sp -= sizeof(struct pt_regs));	if (eregs != regs)		*regs = *eregs;	return regs;}
开发者ID:mpalmer,项目名称:linux-2.6,代码行数:20,


示例9: gpr_set

static int gpr_set(struct task_struct *target, const struct user_regset *regset,		   unsigned int pos, unsigned int count,		   const void *kbuf, const void __user *ubuf){	int ret;	struct user_pt_regs newregs;	ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &newregs, 0, -1);	if (ret)		return ret;	if (!valid_user_regs(&newregs))		return -EINVAL;	task_pt_regs(target)->user_regs = newregs;	return 0;}
开发者ID:BlissRoms-Kernels,项目名称:kernel_motorola_BlissPure,代码行数:17,


示例10: copy_thread

int copy_thread(int nr, unsigned long clone_flags, unsigned long sp,	unsigned long unused,	struct task_struct * p, struct pt_regs * regs){	struct pt_regs * childregs;	struct task_struct *tsk;	int err;	childregs = task_pt_regs(p);	*childregs = *regs;	childregs->ax = 0;	childregs->sp = sp;	p->thread.sp = (unsigned long) childregs;	p->thread.sp0 = (unsigned long) (childregs+1);	p->thread.ip = (unsigned long) ret_from_fork;	savesegment(gs, p->thread.gs);	tsk = current;	if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) {		p->thread.io_bitmap_ptr = kmemdup(tsk->thread.io_bitmap_ptr,						IO_BITMAP_BYTES, GFP_KERNEL);		if (!p->thread.io_bitmap_ptr) {			p->thread.io_bitmap_max = 0;			return -ENOMEM;		}		set_tsk_thread_flag(p, TIF_IO_BITMAP);	}	err = 0;	/*	 * Set a new TLS for the child thread?	 */	if (clone_flags & CLONE_SETTLS)		err = do_set_thread_area(p, -1,			(struct user_desc __user *)childregs->si, 0);	if (err && p->thread.io_bitmap_ptr) {		kfree(p->thread.io_bitmap_ptr);		p->thread.io_bitmap_max = 0;	}	return err;}
开发者ID:maraz,项目名称:linux-2.6,代码行数:46,


示例11: arch_dup_task_struct

/* * this gets called so that we can store lazy state into memory and copy the * current task into the new thread. */int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src){#ifdef CONFIG_SUPERH32	unlazy_fpu(src, task_pt_regs(src));#endif	*dst = *src;	if (src->thread.xstate) {		dst->thread.xstate = kmem_cache_alloc(task_xstate_cachep,						      GFP_KERNEL);		if (!dst->thread.xstate)			return -ENOMEM;		memcpy(dst->thread.xstate, src->thread.xstate, xstate_size);	}	return 0;}
开发者ID:JeremyGrosser,项目名称:linux,代码行数:21,


示例12: copy_thread

int copy_thread(unsigned long clone_flags, unsigned long stack_start,		unsigned long stk_sz, struct task_struct *p){	struct pt_regs *childregs = task_pt_regs(p);	memset(&p->thread.cpu_context, 0, sizeof(struct cpu_context));	if (likely(!(p->flags & PF_KTHREAD))) {		*childregs = *current_pt_regs();		childregs->regs[0] = 0;		/*		 * Read the current TLS pointer from tpidr_el0 as it may be		 * out-of-sync with the saved value.		 */		*task_user_tls(p) = read_sysreg(tpidr_el0);		if (stack_start) {			if (is_compat_thread(task_thread_info(p)))				childregs->compat_sp = stack_start;			else				childregs->sp = stack_start;		}		/*		 * If a TLS pointer was passed to clone (4th argument), use it		 * for the new thread.		 */		if (clone_flags & CLONE_SETTLS)			p->thread.tp_value = childregs->regs[3];	} else {		memset(childregs, 0, sizeof(struct pt_regs));		childregs->pstate = PSR_MODE_EL1h;		if (IS_ENABLED(CONFIG_ARM64_UAO) &&		    cpus_have_const_cap(ARM64_HAS_UAO))			childregs->pstate |= PSR_UAO_BIT;		p->thread.cpu_context.x19 = stack_start;		p->thread.cpu_context.x20 = stk_sz;	}	p->thread.cpu_context.pc = (unsigned long)ret_from_fork;	p->thread.cpu_context.sp = (unsigned long)childregs;	ptrace_hw_copy_thread(p);	return 0;}
开发者ID:EMFPGA,项目名称:linux_media,代码行数:46,


示例13: collect_syscall

static int collect_syscall(struct task_struct *target, long *callno,			   unsigned long args[6], unsigned int maxargs,			   unsigned long *sp, unsigned long *pc){	struct pt_regs *regs = task_pt_regs(target);	if (unlikely(!regs))		return -EAGAIN;	*sp = user_stack_pointer(regs);	*pc = instruction_pointer(regs);	*callno = syscall_get_nr(target, regs);	if (*callno != -1L && maxargs > 0)		syscall_get_arguments(target, regs, 0, maxargs, args);	return 0;}
开发者ID:kenkit,项目名称:AndromadusMod-New,代码行数:17,


示例14: populate_seccomp_data

/* * Endianness is explicitly ignored and left for BPF program authors to manage * as per the specific architecture. */static void populate_seccomp_data(struct seccomp_data *sd){	struct task_struct *task = current;	struct pt_regs *regs = task_pt_regs(task);	unsigned long args[6];	sd->nr = syscall_get_nr(task, regs);	sd->arch = syscall_get_arch();	syscall_get_arguments(task, regs, 0, 6, args);	sd->args[0] = args[0];	sd->args[1] = args[1];	sd->args[2] = args[2];	sd->args[3] = args[3];	sd->args[4] = args[4];	sd->args[5] = args[5];	sd->instruction_pointer = KSTK_EIP(task);}
开发者ID:Lyude,项目名称:linux,代码行数:21,


示例15: copy_thread

intcopy_thread(unsigned long clone_flags, unsigned long usp,	    unsigned long arg,	    struct task_struct *p){	extern void ret_from_fork(void);	extern void ret_from_kernel_thread(void);	struct thread_info *childti = task_thread_info(p);	struct pt_regs *childregs = task_pt_regs(p);	struct pt_regs *regs = current_pt_regs();	struct switch_stack *childstack, *stack;	childstack = ((struct switch_stack *) childregs) - 1;	childti->pcb.ksp = (unsigned long) childstack;	childti->pcb.flags = 1;	/* set FEN, clear everything else */	if (unlikely(p->flags & PF_KTHREAD)) {		/* kernel thread */		memset(childstack, 0,			sizeof(struct switch_stack) + sizeof(struct pt_regs));		childstack->r26 = (unsigned long) ret_from_kernel_thread;		childstack->r9 = usp;	/* function */		childstack->r10 = arg;		childregs->hae = alpha_mv.hae_cache,		childti->pcb.usp = 0;		return 0;	}	/* Note: if CLONE_SETTLS is not set, then we must inherit the	   value from the parent, which will have been set by the block	   copy in dup_task_struct.  This is non-intuitive, but is	   required for proper operation in the case of a threaded	   application calling fork.  */	if (clone_flags & CLONE_SETTLS)		childti->pcb.unique = regs->r20;	childti->pcb.usp = usp ?: rdusp();	*childregs = *regs;	childregs->r0 = 0;	childregs->r19 = 0;	childregs->r20 = 1;	/* OSF/1 has some strange fork() semantics.  */	regs->r20 = 0;	stack = ((struct switch_stack *) regs) - 1;	*childstack = *stack;	childstack->r26 = (unsigned long) ret_from_fork;	return 0;}
开发者ID:0x000000FF,项目名称:Linux4Edison,代码行数:46,


示例16: syscall_trace_enter_phase2

/* Returns the syscall nr to run (which should match regs->orig_ax). */long syscall_trace_enter_phase2(struct pt_regs *regs, u32 arch,				unsigned long phase1_result){	struct thread_info *ti = pt_regs_to_thread_info(regs);	long ret = 0;	u32 work = ACCESS_ONCE(ti->flags) & _TIF_WORK_SYSCALL_ENTRY;	if (IS_ENABLED(CONFIG_DEBUG_ENTRY))		BUG_ON(regs != task_pt_regs(current));	/*	 * If we stepped into a sysenter/syscall insn, it trapped in	 * kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP.	 * If user-mode had set TF itself, then it's still clear from	 * do_debug() and we need to set it again to restore the user	 * state.  If we entered on the slow path, TF was already set.	 */	if (work & _TIF_SINGLESTEP)		regs->flags |= X86_EFLAGS_TF;#ifdef CONFIG_SECCOMP	/*	 * Call seccomp_phase2 before running the other hooks so that	 * they can see any changes made by a seccomp tracer.	 */	if (phase1_result > 1 && seccomp_phase2(phase1_result)) {		/* seccomp failures shouldn't expose any additional code. */		return -1;	}#endif	if (unlikely(work & _TIF_SYSCALL_EMU))		ret = -1L;	if ((ret || test_thread_flag(TIF_SYSCALL_TRACE)) &&	    tracehook_report_syscall_entry(regs))		ret = -1L;	if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))		trace_sys_enter(regs, regs->orig_ax);	do_audit_syscall_entry(regs, arch);	return ret ?: regs->orig_ax;}
开发者ID:343829084,项目名称:linux-study,代码行数:46,


示例17: get_perf_callchain

struct perf_callchain_entry *get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user,		   bool crosstask, bool add_mark){	struct perf_callchain_entry *entry;	int rctx;	entry = get_callchain_entry(&rctx);	if (rctx == -1)		return NULL;	if (!entry)		goto exit_put;	entry->nr = init_nr;	if (kernel && !user_mode(regs)) {		if (add_mark)			perf_callchain_store(entry, PERF_CONTEXT_KERNEL);		perf_callchain_kernel(entry, regs);	}	if (user) {		if (!user_mode(regs)) {			if  (current->mm)				regs = task_pt_regs(current);			else				regs = NULL;		}		if (regs) {			if (crosstask)				goto exit_put;			if (add_mark)				perf_callchain_store(entry, PERF_CONTEXT_USER);			perf_callchain_user(entry, regs);		}	}exit_put:	put_callchain_entry(rctx);	return entry;}
开发者ID:ertaoxu,项目名称:linux,代码行数:45,


示例18: gpr64_set

static int gpr64_set(struct task_struct *target,		     const struct user_regset *regset,		     unsigned int pos, unsigned int count,		     const void *kbuf, const void __user *ubuf){	struct pt_regs *regs = task_pt_regs(target);	u64 uregs[ELF_NGREG];	unsigned start, num_regs, i;	int err;	start = pos / sizeof(u64);	num_regs = count / sizeof(u64);	if (start + num_regs > ELF_NGREG)		return -EIO;	err = user_regset_copyin(&pos, &count, &kbuf, &ubuf, uregs, 0,				 sizeof(uregs));	if (err)		return err;	for (i = start; i < num_regs; i++) {		switch (i) {		case MIPS64_EF_R1 ... MIPS64_EF_R25:			/* k0/k1 are ignored. */		case MIPS64_EF_R28 ... MIPS64_EF_R31:			regs->regs[i - MIPS64_EF_R0] = uregs[i];			break;		case MIPS64_EF_LO:			regs->lo = uregs[i];			break;		case MIPS64_EF_HI:			regs->hi = uregs[i];			break;		case MIPS64_EF_CP0_EPC:			regs->cp0_epc = uregs[i];			break;		}	}	/* System call number may have been changed */	mips_syscall_update_nr(target, regs);	return 0;}
开发者ID:0x7f454c46,项目名称:linux,代码行数:45,


示例19: populate_seccomp_data

/* * Endianness is explicitly ignored and left for BPF program authors to manage * as per the specific architecture. */static void populate_seccomp_data(struct seccomp_data *sd){	struct task_struct *task = current;	struct pt_regs *regs = task_pt_regs(task);	sd->nr = syscall_get_nr(task, regs);	sd->arch = syscall_get_arch(task, regs);	/* Unroll syscall_get_args to help gcc on arm. */	syscall_get_arguments(task, regs, 0, 1, (unsigned long *) &sd->args[0]);	syscall_get_arguments(task, regs, 1, 1, (unsigned long *) &sd->args[1]);	syscall_get_arguments(task, regs, 2, 1, (unsigned long *) &sd->args[2]);	syscall_get_arguments(task, regs, 3, 1, (unsigned long *) &sd->args[3]);	syscall_get_arguments(task, regs, 4, 1, (unsigned long *) &sd->args[4]);	syscall_get_arguments(task, regs, 5, 1, (unsigned long *) &sd->args[5]);	sd->instruction_pointer = KSTK_EIP(task);}
开发者ID:Astralix,项目名称:mainline-dss11,代码行数:22,


示例20: sys32_sigreturn

asmlinkage long sys32_sigreturn(void){	struct pt_regs *regs = task_pt_regs(current);	sigframe32 __user *frame = (sigframe32 __user *)regs->gprs[15];	sigset_t set;	if (__copy_from_user(&set.sig, &frame->sc.oldmask, _SIGMASK_COPY_SIZE32))		goto badframe;	set_current_blocked(&set);	if (restore_sigregs32(regs, &frame->sregs))		goto badframe;	if (restore_sigregs_gprs_high(regs, frame->gprs_high))		goto badframe;	return regs->gprs[2];badframe:	force_sig(SIGSEGV, current);	return 0;}
开发者ID:AeroGirl,项目名称:VAR-SOM-AM33-SDK7-Kernel,代码行数:18,


示例21: gpr_set

static int gpr_set(struct task_struct *target,		   const struct user_regset *regset,		   unsigned int pos, unsigned int count,		   const void *kbuf, const void __user *ubuf){	struct pt_regs newregs;	int ret;	ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,				 &newregs,				 0, sizeof(newregs));	if (ret)		return ret;	*task_pt_regs(target) = newregs;	return 0;}
开发者ID:7799,项目名称:linux,代码行数:18,


示例22: copy_thread

int copy_thread(unsigned long clone_flags, unsigned long usp,                unsigned long unused,                struct task_struct *p, struct pt_regs *regs){    struct pt_regs * childregs;    struct switch_stack *swstack;    /* put the pt_regs structure at the end of the new kernel stack page and fix it up     * remember that the task_struct doubles as the kernel stack for the task     */    childregs = task_pt_regs(p);    *childregs = *regs;  /* struct copy of pt_regs */    p->set_child_tid = p->clear_child_tid = NULL;    childregs->r10 = 0;  /* child returns 0 after a fork/clone */    /* put the switch stack right below the pt_regs */    swstack = ((struct switch_stack *)childregs) - 1;    swstack->r9 = 0; /* parameter to ret_from_sys_call, 0 == dont restart the syscall */    /* we want to return into ret_from_sys_call after the _resume */    swstack->return_ip = (unsigned long) ret_from_fork; /* Will call ret_from_sys_call */    /* fix the user-mode stackpointer */    p->thread.usp = usp;    /* and the kernel-mode one */    p->thread.ksp = (unsigned long) swstack;#ifdef DEBUG    printk("copy_thread: new regs at 0x%p, as shown below:/n", childregs);    show_registers(childregs);#endif    return 0;}
开发者ID:openube,项目名称:android_kernel_sony_c2305,代码行数:44,


示例23: pr_err

/* * Return "current" if it looks plausible, or else a pointer to a dummy. * This can be helpful if we are just trying to emit a clean panic. */struct task_struct *validate_current(void){	static struct task_struct corrupt = { .comm = "<corrupt>" };	struct task_struct *tsk = current;	if (unlikely((unsigned long)tsk < PAGE_OFFSET ||		     (void *)tsk > high_memory ||		     ((unsigned long)tsk & (__alignof__(*tsk) - 1)) != 0)) {		pr_err("Corrupt 'current' %p (sp %#lx)/n", tsk, stack_pointer);		tsk = &corrupt;	}	return tsk;}/* Take and return the pointer to the previous task, for schedule_tail(). */struct task_struct *sim_notify_fork(struct task_struct *prev){	struct task_struct *tsk = current;	__insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_FORK_PARENT |		     (tsk->thread.creator_pid << _SIM_CONTROL_OPERATOR_BITS));	__insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_FORK |		     (tsk->pid << _SIM_CONTROL_OPERATOR_BITS));	return prev;}int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs){	struct pt_regs *ptregs = task_pt_regs(tsk);	elf_core_copy_regs(regs, ptregs);	return 1;}#if CHIP_HAS_TILE_DMA()/* Allow user processes to access the DMA SPRs */void grant_dma_mpls(void){#if CONFIG_KERNEL_PL == 2	__insn_mtspr(SPR_MPL_DMA_CPL_SET_1, 1);	__insn_mtspr(SPR_MPL_DMA_NOTIFY_SET_1, 1);#else	__insn_mtspr(SPR_MPL_DMA_CPL_SET_0, 1);	__insn_mtspr(SPR_MPL_DMA_NOTIFY_SET_0, 1);#endif}
开发者ID:ARMP,项目名称:android_kernel_lge_x3,代码行数:48,


示例24: genregs_get

/* * retrieve the contents of Blackfin userspace general registers */static int genregs_get(struct task_struct *target,		       const struct user_regset *regset,		       unsigned int pos, unsigned int count,		       void *kbuf, void __user *ubuf){	struct pt_regs *regs = task_pt_regs(target);	int ret;	/* This sucks ... */	regs->usp = target->thread.usp;	ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,				  regs, 0, sizeof(*regs));	if (ret < 0)		return ret;	return user_regset_copyout_zero(&pos, &count, &kbuf, &ubuf,					sizeof(*regs), -1);}
开发者ID:12019,项目名称:android_kernel_samsung_xcover,代码行数:22,


示例25: copy_thread

int copy_thread(unsigned long clone_flags, unsigned long sp, unsigned long unused,		        struct task_struct *p, struct pt_regs *regs){   struct pt_regs *childregs;   struct task_struct *tsk;   childregs = task_pt_regs(p);   *childregs = *regs;   childregs->ax = 0;   childregs->sp = sp;   p->thread.sp = (unsigned long)childregs;   p->thread.sp0 = (unsigned long)(childregs + 1);   p->thread.ip = (unsigned long)ret_from_fork;   task_user_gs(p) = get_user_gs(regs);   p->thread.io_bitmap_ptr = NULL;   tsk = current;   err = -ENOMEM;   memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps));   if (test_tsk_thread_flag(tsk, TIF_IO_BITMAP)) {       p->thread.io_bitmap_ptr = kmemdup(tsk->thread.io_bitmap_ptr, IO_BITMAP_BYTES, GFP_KERNEL);	   if (!p->thread.io_bitmap_ptr) {		   p->thread.io_bitmap_max = 0;		   return -ENOMEM;	   }	   set_tsk_thead_flag(p, TIF_IO_BITMAP);   }   err = 0;      if (err && p->thread.io_bitmap_ptr) {       kfree(p->thread.io_bitmap_ptr);	   p->thread.io_bitmap_max = 0;   }   return err;}
开发者ID:harvey-che,项目名称:Xc,代码行数:43,


示例26: get_reg

/* * Get contents of register REGNO in task TASK. */long get_reg(struct task_struct *task, unsigned int regno){	/* USP is a special case, it's not in the pt_regs struct but	 * in the tasks thread struct	 */	unsigned long ret;	if (regno <= PT_EDA)		ret = ((unsigned long *)task_pt_regs(task))[regno];	else if (regno == PT_USP)		ret = task->thread.usp;	else if (regno == PT_PPC)		ret = get_pseudo_pc(task);	else if (regno <= PT_MAX)		ret = get_debugreg(task->pid, regno);	else		ret = 0;	return ret;}
开发者ID:AshishNamdev,项目名称:linux,代码行数:23,


示例27: ptrace_setregs

/* * Write a general register set.  As for PTRACE_GETREGS, we always use * the 64-bit format.  On a 32-bit kernel only the lower order half * (according to endianness) will be used. */int ptrace_setregs(struct task_struct *child, struct user_pt_regs __user *data){	struct pt_regs *regs;	int i;	if (!access_ok(VERIFY_READ, data, 38 * 8))		return -EIO;	regs = task_pt_regs(child);	for (i = 0; i < 32; i++)		__get_user(regs->regs[i], (__s64 __user *)&data->regs[i]);	__get_user(regs->lo, (__s64 __user *)&data->lo);	__get_user(regs->hi, (__s64 __user *)&data->hi);	__get_user(regs->cp0_epc, (__s64 __user *)&data->cp0_epc);	/* badvaddr, status, and cause may not be written.  */	return 0;}
开发者ID:uarka,项目名称:linux-next,代码行数:25,


示例28: sys32_rt_sigreturn

asmlinkage long sys32_rt_sigreturn(void){	struct pt_regs *regs = task_pt_regs(current);	rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15];	sigset_t set;	if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))		goto badframe;	set_current_blocked(&set);	if (restore_sigregs32(regs, &frame->uc.uc_mcontext))		goto badframe;	if (restore_sigregs_gprs_high(regs, frame->gprs_high))		goto badframe;	if (compat_restore_altstack(&frame->uc.uc_stack))		goto badframe; 	return regs->gprs[2];badframe:	force_sig(SIGSEGV, current);	return 0;}	
开发者ID:AeroGirl,项目名称:VAR-SOM-AM33-SDK7-Kernel,代码行数:20,



注:本文中的task_pt_regs函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ task_rlimit函数代码示例
C++ task_pid_vnr函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。