A few formatting fixes. Hopefully make it work with x86-64.

Mon Dec 19 15:15:48 2005  Søren Sandmann  <sandmann@redhat.com>

	* module/sysprof-module.c (timer_notify): A few formatting
	fixes. Hopefully make it work with x86-64.
This commit is contained in:
Søren Sandmann
2005-12-19 20:24:18 +00:00
committed by Søren Sandmann Pedersen
parent 35de8d36a0
commit a829366b72
3 changed files with 14 additions and 4 deletions

View File

@ -1,3 +1,8 @@
Mon Dec 19 15:15:48 2005 Søren Sandmann <sandmann@redhat.com>
* module/sysprof-module.c (timer_notify): A few formatting
fixes. Hopefully make it work with x86-64.
2005-11-29 Soeren Sandmann <sandmann@redhat.com>
* sysprof.c (on_descendants_row_expanded_or_collapsed): New

2
TODO
View File

@ -18,6 +18,8 @@ Before 1.0.1:
Before 1.2:
* Make it compile and work on x86-64
* Add "sysprof --version"
* With kernel module not installed, select Profiler->Start, then dismiss

View File

@ -62,10 +62,12 @@ DECLARE_WAIT_QUEUE_HEAD (wait_for_exit);
# define REG_FRAME_PTR rbp
# define REG_INS_PTR rip
# define REG_STACK_PTR rsp
# define REG_STACK_PTR0 rsp0
#elif defined(CONFIG_X86)
# define REG_FRAME_PTR ebp
# define REG_INS_PTR eip
# define REG_STACK_PTR esp
# define REG_STACK_PTR0 esp0
#else
# error Sysprof only supports the i386 and x86-64 architectures
#endif
@ -135,16 +137,17 @@ timer_notify (struct pt_regs *regs)
if (!is_user)
{
trace->addresses[i++] = (void *)0x01;
regs = (void *)current->thread.esp0 - sizeof (struct pt_regs);
/* FIXME: doesn't compile on x86-64 */
regs = (void *)current->thread.REG_STACK_PTR0 - sizeof (struct pt_regs);
}
trace->addresses[i++] = (void *)regs->REG_INS_PTR;
frame_pointer = (void *)regs->REG_FRAME_PTR;
while (((result = read_frame (frame_pointer, &frame)) == 0) &&
i < SYSPROF_MAX_ADDRESSES &&
((unsigned long)frame_pointer) < START_OF_STACK &&
while (((result = read_frame (frame_pointer, &frame)) == 0) &&
i < SYSPROF_MAX_ADDRESSES &&
((unsigned long)frame_pointer) < START_OF_STACK &&
(unsigned long)frame_pointer >= regs->REG_STACK_PTR)
{
trace->addresses[i++] = (void *)frame.return_address;