All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philippe Couvee <PHILIPPE.COUVEE@BULL.NET>
To: linux-ia64@vger.kernel.org
Subject: [Linux-ia64] LTT on IA64
Date: Fri, 17 Jan 2003 13:48:13 +0000	[thread overview]
Message-ID: <marc-linux-ia64-105590709805711@msgid-missing> (raw)

hello all, 

I am a new-comer on Linux & IA64, and in order to learn all this technology, I
have started to port the Linux Trace Toolit V0.9.5a (see
http://www.opersys.com/LTT/index.html). So far, I have all the userland tools
and most of the kernel code running. This tool records system events and
produces trace files like : 
  

Trace start time: (1042450308, 79287) 
Trace end time: (1042450310, 79020) 
Trace duration: (1, 999733) 

Number of occurences of: 
        Events: 22647 
        Scheduling changes: 176 
        Kernel timer tics: 4083 
        System call entries: 0 
        System call exits: 0 
        Trap entries: 0 
        Trap exits: 0 
        IRQ entries: 4168 
        IRQ exits: 4168 
        Bottom halves: 0 
        Timer expiries: 3 
        Page allocations: 249 
        Page frees: 32 
        Packets Out: 38 
        Packets In: 40 
  

Tracing CPU 1 only 

#################################################################### 
CPU-ID  Event         Time                    PID     Length  Description 
#################################################################### 
... 

1    IRQ entry       1,042,450,309,106,081    0       10    IRQ : 239, IN-KERNEL 
1    Soft IRQ        1,042,450,309,106,087    0       16    SOFT IRQ : 0 
1    Soft IRQ        1,042,450,309,106,089    0       16    TASKLET HI ACTION :
0x04A57230 
1    Kernel timer    1,042,450,309,106,090    0       8 
1    IRQ exit        1,042,450,309,106,091    0       8 
1    Sched change    1,042,450,309,106,115    1273    32    IN : 1273; OUT : 0;
STATE : 0 
1    File system     1,042,450,309,106,120    1273    32    SELECT : 0; TIMEOUT
: 4294967295 
1    File system     1,042,450,309,106,125    1273    32    SELECT : 3; TIMEOUT
: 4294967295 
1    File system     1,042,450,309,106,132    1273    32    READ : 3; COUNT :
1025 
1    File system     1,042,450,309,106,206    1273    32    WRITE : 0; COUNT :
965 
1    Network         1,042,450,309,106,221    1273    16    PACKET OUT; PROTOCOL
: 8 
1    File system     1,042,450,309,106,232    1273    32    SELECT : 0; TIMEOUT
: 4294967295 
1    Memory          1,042,450,309,106,235    1273    24    PAGE ALLOC ORDER : 0 
1    File system     1,042,450,309,106,237    1273    32    SELECT : 3; TIMEOUT
: 4294967295 
1    Sched change    1,042,450,309,106,242    0       32    IN : 0; OUT : 1273;
STATE : 1 
1    IRQ entry       1,042,450,309,106,248    0       10    IRQ : 55, IN-KERNEL 
1    Soft IRQ        1,042,450,309,106,253    0       16    SOFT IRQ : 1 
1    IRQ exit        1,042,450,309,106,256    0       8 
1    IRQ entry       1,042,450,309,107,057    0       10    IRQ : 239, IN-KERNEL 
1    Soft IRQ        1,042,450,309,107,063    0       16    SOFT IRQ : 0 
1    Soft IRQ        1,042,450,309,107,065    0       16    TASKLET HI ACTION :
0x04A57230 
1    Kernel timer    1,042,450,309,107,066    0       8 
1    IRQ exit        1,042,450,309,107,068    0       8 
1    IRQ entry       1,042,450,309,107,321    0       10    IRQ : 55, IN-KERNEL 
1    Soft IRQ        1,042,450,309,107,332    0       16    SOFT IRQ : 2 
1    Network         1,042,450,309,107,336    0       16    PACKET IN; PROTOCOL
: 8 
1    IRQ exit        1,042,450,309,107,346    0       8 
1    Sched change    1,042,450,309,107,544    1273    32   IN : 1273; OUT : 0;
STATE : 0 
1    File system     1,042,450,309,107,548    1273    32   SELECT : 0; TIMEOUT :
4294967295 
1    File system     1,042,450,309,107,551    1273    32   SELECT : 3; TIMEOUT :
4294967295 
1    File system     1,042,450,309,107,558    1273    32   READ : 3; COUNT :
1025 
1    File system     1,042,450,309,107,567    1273    32   WRITE : 0; COUNT : 41 
1    Network         1,042,450,309,107,579    1273    16   PACKET OUT; PROTOCOL
: 8 
1    File system     1,042,450,309,107,590    1273    32   SELECT : 0; TIMEOUT :
4294967295 
1    Memory          1,042,450,309,107,593    1273    24   PAGE ALLOC ORDER : 0 
1    File system     1,042,450,309,107,596    1273    32   SELECT : 3; TIMEOUT :
4294967295 
1    Sched change    1,042,450,309,107,600    0       32   IN : 0; OUT : 1273;
STATE : 1 
1    IRQ entry       1,042,450,309,107,855    0       10   IRQ : 55, IN-KERNEL 
1    Soft IRQ        1,042,450,309,107,865    0       16   SOFT IRQ : 2 
1    Network         1,042,450,309,107,867    0       16   PACKET IN; PROTOCOL :
8 
1    IRQ exit        1,042,450,309,107,876    0       8 
...   

The system events recorded are : 
  

#define TRACE_SYSCALL_ENTRY   1    /* Entry in a given system call */ 
#define TRACE_SYSCALL_EXIT    2    /* Exit from a given system call */ 
#define TRACE_TRAP_ENTRY      3    /* Entry in a trap */ 
#define TRACE_TRAP_EXIT       4    /* Exit from a trap */ 
#define TRACE_IRQ_ENTRY       5    /* Entry in an irq */ 
#define TRACE_IRQ_EXIT        6    /* Exit from an irq */ 
#define TRACE_SCHEDCHANGE     7    /* Scheduling change */ 
#define TRACE_SOFT_IRQ_BOTTOM_HALF        1  /* Conventional bottom-half */ 
#define TRACE_SOFT_IRQ_SOFT_IRQ           2  /* Real soft-irq */ 
#define TRACE_SOFT_IRQ_TASKLET_ACTION     3  /* Tasklet action */ 
#define TRACE_SOFT_IRQ_TASKLET_HI_ACTION  4  /* Tasklet hi-action */ 
#define TRACE_PROCESS_KTHREAD     1  /* Creation of a kernel thread */ 
#define TRACE_PROCESS_FORK        2  /* A fork or clone occured */ 
#define TRACE_PROCESS_EXIT        3  /* An exit occured */ 
#define TRACE_PROCESS_WAIT        4  /* A wait occured */ 
#define TRACE_PROCESS_SIGNAL      5  /* A signal has been sent */ 
#define TRACE_PROCESS_WAKEUP      6  /* Wake up a process */ 
#define TRACE_FILE_SYSTEM_BUF_WAIT_START  1  /* Starting to wait for a data
buffer */ 
#define TRACE_FILE_SYSTEM_BUF_WAIT_END    2  /* End to wait for a data buffer */ 
#define TRACE_FILE_SYSTEM_EXEC            3  /* An exec occured */ 
#define TRACE_FILE_SYSTEM_OPEN            4  /* An open occured */ 
#define TRACE_FILE_SYSTEM_CLOSE           5  /* A close occured */ 
#define TRACE_FILE_SYSTEM_READ            6  /* A read occured */ 
#define TRACE_FILE_SYSTEM_WRITE           7  /* A write occured */ 
#define TRACE_FILE_SYSTEM_SEEK            8  /* A seek occured */ 
#define TRACE_FILE_SYSTEM_IOCTL           9  /* An ioctl occured */ 
#define TRACE_FILE_SYSTEM_SELECT         10  /* A select occured */ 
#define TRACE_FILE_SYSTEM_POLL           11  /* A poll occured */ 
#define TRACE_TIMER_EXPIRED      1  /* Timer expired */ 
#define TRACE_TIMER_SETITIMER    2  /* Setting itimer occurred */ 
#define TRACE_TIMER_SETTIMEOUT   3  /* Setting sched timeout occurred */ 
#define TRACE_MEMORY_PAGE_ALLOC        1  /* Allocating pages */ 
#define TRACE_MEMORY_PAGE_FREE         2  /* Freing pages */ 
#define TRACE_MEMORY_SWAP_IN           3  /* Swaping pages in */ 
#define TRACE_MEMORY_SWAP_OUT          4  /* Swaping pages out */ 
#define TRACE_MEMORY_PAGE_WAIT_START   5  /* Start to wait for page */ 
#define TRACE_MEMORY_PAGE_WAIT_END     6  /* End to wait for page */ 
#define TRACE_SOCKET_CALL     1  /* A socket call occured */ 
#define TRACE_SOCKET_CREATE   2  /* A socket has been created */ 
#define TRACE_SOCKET_SEND     3  /* Data was sent to a socket */ 
#define TRACE_SOCKET_RECEIVE  4  /* Data was read from a socket */ 
#define TRACE_IPC_CALL            1  /* A System V IPC call occured */ 
#define TRACE_IPC_MSG_CREATE      2  /* A message queue has been created */ 
#define TRACE_IPC_SEM_CREATE      3  /* A semaphore was created */ 
#define TRACE_IPC_SHM_CREATE      4  /* A shared memory segment has been created
*/ 
#define TRACE_NETWORK_PACKET_IN   1  /* A packet came in */ 
#define TRACE_NETWORK_PACKET_OUT  2  /* A packet was sent */ 
  

I have included most of these trace points in the kernel code (2.5.45). However,
I need help to implement the tracing of syscall and traps... basically, I have
to call a C function which will record the syscall number and the user address
from which is issued the call : 

/* LTT trace function for syscall entry (in arch/ia64/kernel/traps.c) */ 
asmlinkage void 
ltt_trace_syscall (unsigned long stack) 
{ 
        struct pt_regs *regs = (struct pt_regs *) &stack; 
        trace_syscall_entry sys_entry; 

        sys_entry.syscall_id = (uint8_t)regs->r15; 
        sys_entry.address = (uint64_t) ????; 

        trace_event(TRACE_EV_SYSCALL_ENTRY, &sys_entry); 
} 

The call to this C function has to be inserted somewhere in the common path of
all syscalls : 

in ivt.S ? : 

///////////////////////////////////////////////////////////////////////////////////////// 
// 0x2c00 Entry 11 (size 64 bundles) Break instruction (33) 
ENTRY(break_fault) 
... 
#ifdef CONFIG_TRACE 
    <save scratch regs> 
    <prepare out0> 
    br.call.sptk.many rp=ltt_trace_syscall  // trace syscall 
    <restore scratch regs> 
#endif //CONFIG_TRACE 
  

All my tries so far have led to system hangs... I don't know neither how to save
and restore scratch regs in the assembly part, nor how to find the user address.

Thanks in advance for any help. 
-- 
Philippe Couvee                    HYADES Project
mailto:philippe.couvee@bull.net    LINUX R&D
http://www.bull.com                BULL S.A.  
Phone : +33 4 7629 7170            1, rue de Provence. BP208
Fax : +33 4 7629 7891              F38432 Echirolles CEDEX
Office : B1/383                    FRANCE


             reply	other threads:[~2003-01-17 13:48 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-17 13:48 Philippe Couvee [this message]
2003-01-17 15:57 ` [Linux-ia64] LTT on IA64 David Mosberger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=marc-linux-ia64-105590709805711@msgid-missing \
    --to=philippe.couvee@bull.net \
    --cc=linux-ia64@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.