2004-10-21 23:37:10

by Fabiano Ramos

[permalink] [raw]
Subject: pid offset into task structre

Hi All. Some newbie question.

I am writing some assembly code where I need to access the pid that issue
a certain syscall. In entry.S, in the syscall stub, I wrote:

GET_THREAD_INFO(%ebp)
movl TI_task(%ebp), %ebp
movl PID_OFFSET(%ebp), %ebx

Questions are:
1) Considering that I provided the correct value in PID_OFFSET, will
ebx contain the pid of the task that issued the syscall, at the end of the
fragment?

2) By taking some address arithmetic (&tsk.pid - &tsk) I got 144. Is this
offset always the same? Is that an easy way to get it directly from
assembly code?


TIA,
Fabiano


2004-10-22 15:19:28

by Vincent Hanquez

[permalink] [raw]
Subject: Re: pid offset into task structre

On Thu, Oct 21, 2004 at 09:34:48PM -0200, Fabiano Ramos wrote:
> Hi All. Some newbie question.
> 1) Considering that I provided the correct value in PID_OFFSET, will
> ebx contain the pid of the task that issued the syscall, at the end of the
> fragment?

yes

> 2) By taking some address arithmetic (&tsk.pid - &tsk) I got 144. Is this
> offset always the same? Is that an easy way to get it directly from
> assembly code?

Generate it from arch/$ARCH/kernel/asm-offset.c with the same mecanism that
TI_task uses.

something like:

OFFSET(TASK_pid, task_struct, pid);

--
Tab