Hy!
I think i find some interesting problem (maybe it is basic :) ): root@thelab ~/Tools/IPC$ ./ipc_count_syscall.d syscall::semsys 1690 root@thelab ~/Tools/IPC$ cat ./ipc_count_syscall.d #!/usr/sbin/dtrace -qs #pragma D option quiet #pragma D option destructive syscall::sem*:entry { self->time = timestamp; } syscall::sem*:return /self->time/ { this->name = strjoin(probeprov, strjoin("::",probefunc)); @semcheck[this->name] = count(); self->time = 0; } tick-10sec { exit(0); } It's ok, but if i put fbt provider checking to this script, i can't see syscall fields in the count() result: root@thelab ~/Tools/IPC$ ./ipc_count_all.d fbt:genunix:sema_destroy 4 fbt:genunix:sema_init 8 fbt:genunix:sema_tryp 81 fbt:genunix:sema_p 208 fbt:genunix:sema_v 289 fbt:ipc:ipc_lock_internal 1850 fbt:ipc:ipcperm_access 1850 fbt:semsys:sem_undo_add 1850 fbt:semsys:sem_undo_compar 1850 fbt:semsys:semsys 1850 root@thelab ~/Tools/IPC$ cat ./ipc_count_all.d #!/usr/sbin/dtrace -qs #pragma D option quiet #pragma D option destructive fbt:ipc::entry, fbt:semsys::entry, fbt:genunix:sem*:entry, syscall::sem*:entry { self->time = timestamp; } fbt:ipc::return, fbt:semsys::return, fbt:genunix:sem*:return /self->time/ { this->name = strjoin(probeprov, strjoin(strjoin(":",probemod),strjoin(":",probefunc))); @semcheck[this->name] = count(); self->time = 0; } syscall::sem*:return /self->time/ { this->name = strjoin(probeprov, strjoin("::",probefunc)); @semcheck[this->name] = count(); self->time = 0; } tick-10sec { exit(0); } If i modify the script, it also not working. root@thelab ~/Tools/IPC$ ./ipc_count_all.d fbt:genunix:sema_tryp 1 fbt:genunix:sema_destroy 4 fbt:genunix:sema_init 14 fbt:genunix:sema_p 59 fbt:genunix:sema_v 60 fbt:ipc:ipc_lock_internal 1850 fbt:ipc:ipcperm_access 1850 fbt:semsys:sem_undo_add 1850 fbt:semsys:sem_undo_compar 1850 fbt:semsys:semsys 1850 root@thelab ~/Tools/IPC$ cat ./ipc_count_all.d #!/usr/sbin/dtrace -qs #pragma D option quiet #pragma D option destructive fbt:ipc::entry, fbt:semsys::entry, fbt:genunix:sem*:entry, syscall::sem*:entry { self->time = timestamp; } fbt:ipc::return, fbt:semsys::return, fbt:genunix:sem*:return, syscall::sem*:return /self->time/ { this->name = strjoin(probeprov, strjoin(strjoin(":",probemod),strjoin(":",probefunc))); @semcheck[this->name] = count(); self->time = 0; } tick-10sec { exit(0); } I know i can use printa to print probeprov, probemod and probefunc but i prefer strjoin :) In this case i doesn't understand where are syscall' count. Anyone has an idea about this problem? Cni _______________________________________________ dtrace-discuss mailing list dtrace-discuss@opensolaris.org