It is somewhat complex for someone like me with limited C programming to
unearth the actual data(args and result) from the door call API. I beleive it
has custom NSS headers packed along with actual data. Tracemem for most part
is not that meaningful. If anyone has already done this, please share it.
I am startting to look at other places where I can get this data in a
strcutured form. I started looking at
pid$target:libc:_nsc_try1door:entry
this is where I am now:
BEGIN { last = timestamp; }
typedef unsigned long long int door_ptr_t; /* Handle 64 bit pointers */
typedef unsigned long long int door_id_t; /* Unique door identifier */
typedef unsigned int door_attr_t; /* Door attributes */
typedef struct door_info {
pid_t di_target; /* Server process */
door_ptr_t di_proc; /* Server procedure */
door_ptr_t di_data; /* Data cookie */
door_attr_t di_attributes; /* Attributes associated with door */
door_id_t di_uniquifier; /* Unique number */
int di_resv[4]; /* Future use */
} door_info_t;
typedef struct _nsc_door_t {
int doorfd;
mutex_t door_lock;
door_info_t doori;
} nsc_door_t;
pid$target:libc:_nsc_try1door:entry
/curpsinfo->pr_dmodel == PR_MODEL_ILP32/
{
/* args nsc_door_t *dp, void **dptr, size_t *ndata, size_t *adata, int
*pdesc */
trace(timestamp - last);
last = timestamp;
self->dp = (struct _nsc_door_t *)copyin(arg0,sizeof(struct _nsc_door_t));
printf("doorfd %d di_proc %x",self->dp->doorfd,self->dp->doori.di_proc);
tracemem(self->dp,100);
}
pid$target:libc:_nsc_try1door:return
/curpsinfo->pr_dmodel == PR_MODEL_ILP32/
{
trace(timestamp - last);
last = timestamp;
}
I get a invalid alignement.
dtrace: error on enabled probe ID 2 (ID 80106:
pid13913:libc.so.1:_nsc_try1door:entry): invalid alignment (0x302124160ac) in
action #5 at DIF offset 20
I think struct definitions above many not be correct. Now, my basic question
is, is there a set of instructions that I can follow to convert structure
definitions to 32bit and/or 64 bit. Nico, helped me last time, how can I do
this myself? Is it out of my league? (meaning basic/medium C programming
experience)
Is there anything that I can read up further on userland data tracing 32/64 bit
programs/libraries?
Thank you for your help.
--
This message posted from opensolaris.org
_______________________________________________
dtrace-discuss mailing list
[email protected]