Hi carlsonj,
thanks for the reply. 
Sorry I couldn't reply since some days.

I tried using dtrace for the 32bit sys call tracing but didn't get much help 
with my problem.

> That overwrites (and loses) the pointer assigned to "old_call_c" from
> the sysent[] array. Are you sure you don't want to define an
> "old_call_32_c" variable?

The "old_call_c" doesn't get overwritten. There are no issues with the given 
type of implementation.

My main problem is, 
I have mapped "SYS_mkdir" system call to my customized "new_mkdir" method.
My machine as well as OS are 64bit. So,
1) If I run a 64 bit application which calls mkdir syscall, it will 
successfully get trapped to my new_mkdir method as my machine+OS is 64 bit.
2) But if I run an 32bit application which does mkdir, it doesn't get trapped 
in my new_mkdir method.

So, tracing 32bit sys calls on 64 bit platform is the basic issue.

> You might also want to look more closely at the way 'struct sysent' is
> constructed in usr/src/uts/common/os/sysent.c

I saw the struct sysent and struct sysent32 from sysent.c file.
According to that, I guess the implementation of both the structs are proper in 
the code snippet at beginning of this thread. 

When I see code in systrace.c, I can see the implementation of macro "#ifdef 
_SYSCALL32_IMPL".
I think that somewhere this macro will help me doing so.

Can you please provide  some more pointer on the same front?

Thanks,
Neo
-- 
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to