PreSyscall(uint32 syscall, const void* parameters) : fSyscall(syscall), fParameters(NULL) { if (syscall < (uint32)kSyscallCount) { fParameters = alloc_tracing_buffer_memcpy(parameters, kSyscallInfos[syscall].parameter_size, false); // copy string parameters, if any if (fParameters != NULL && syscall != SYSCALL_KTRACE_OUTPUT) { int32 stringIndex = 0; const extended_syscall_info& syscallInfo = kExtendedSyscallInfos[fSyscall]; for (int i = 0; i < syscallInfo.parameter_count; i++) { const syscall_parameter_info& paramInfo = syscallInfo.parameters[i]; if (paramInfo.type != B_STRING_TYPE) continue; const uint8* data = (uint8*)fParameters + paramInfo.offset; if (stringIndex < MAX_PARAM_STRINGS) { fParameterStrings[stringIndex++] = alloc_tracing_buffer_strcpy( *(const char**)data, 64, true); } } } } Initialized(); }
UserTraceEntry(const char* message) { fMessage = alloc_tracing_buffer_strcpy(message, 256, true); #if KTRACE_PRINTF_STACK_TRACE fStackTrace = capture_tracing_stack_trace( KTRACE_PRINTF_STACK_TRACE, 1, false); #endif Initialized(); }
Create(port_entry& port) : fID(port.id), fOwner(port.owner), fCapacity(port.capacity) { fName = alloc_tracing_buffer_strcpy(port.lock.name, B_OS_NAME_LENGTH, false); Initialized(); }
Create(const char* name, size_t objectSize, size_t alignment, size_t maxByteUsage, uint32 flags, void* cookie, ObjectCache* cache) : ObjectCacheTraceEntry(cache), fObjectSize(objectSize), fAlignment(alignment), fMaxByteUsage(maxByteUsage), fFlags(flags), fCookie(cookie) { fName = alloc_tracing_buffer_strcpy(name, 64, false); Initialized(); }