%{ #include #include %} function _fstype_name:string (_fstype:long) %{ struct file_system_type *fstype; char *name; fstype = (struct file_system_type *)(long)kread(&(THIS->_fstype)); name = (char *)(long)kread(&fstype->name); snprintf(THIS->__retvalue, MAXSTRINGLEN, "name %s flags 0x%x", name, fstype->fs_flags); CATCH_DEREF_FAULT(); %} function _vfsmnt_dump:string (_vfsmnt:long) %{ struct vfsmount *vfsmnt; char *dev; vfsmnt = (struct vfsmount *)(long)kread(&(THIS->_vfsmnt)); dev = (char *)(long)kread(&vfsmnt->mnt_devname); snprintf(THIS->__retvalue, MAXSTRINGLEN, "dev %s flags=0x%x", vfsmnt->mnt_devname, vfsmnt->mnt_flags); CATCH_DEREF_FAULT(); %} function _nfsmnt_dump:string (_nfsmnt:long) %{ struct nfs_mount_data *data; unsigned char *bytes; data = (struct nfs_mount_data *)(long)kread(&(THIS->_nfsmnt)); bytes = (unsigned char *)&data->addr.sin_addr.s_addr; snprintf(THIS->__retvalue, MAXSTRINGLEN, "vers %d flags 0x%x flavor %d hostname %s(%d.%d.%d.%d)", data->version, data->flags, data->pseudoflavor, data->hostname, bytes[0], bytes[1], bytes[2], bytes[3]); CATCH_DEREF_FAULT(); %} probe kernel.mark("nfs_mount") { printf("nfs_mount:entry: fstype (%s) flags %x dev %s\n", _fstype_name($arg1), $arg2, kernel_string($arg3)); printf("\tdata: %s\n\tmnt: %s\n", _nfsmnt_dump($arg4), _vfsmnt_dump($arg5)); }