-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2011, Whamcloud, Inc.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
struct dbg_line *line = linev[i];
struct ptldebug_header *hdr = line->hdr;
char out[4097];
+ char *buf = out;
int bytes;
+ ssize_t bytes_written;
- bytes = sprintf(out, "%08x:%08x:%u:%u.%06llu:%u:%u:%u:(%s:%u:%s()) %s",
- hdr->ph_subsys, hdr->ph_mask, hdr->ph_cpu_id,
+ bytes = sprintf(out, "%08x:%08x:%u.%u%s:%u.%06llu:%u:%u:%u:(%s:%u:%s()) %s",
+ hdr->ph_subsys, hdr->ph_mask,
+ hdr->ph_cpu_id, hdr->ph_type,
+ hdr->ph_flags & PH_FLAG_FIRST_RECORD ? "F" : "",
hdr->ph_sec, (unsigned long long)hdr->ph_usec,
hdr->ph_stack, hdr->ph_pid, hdr->ph_extern_pid,
line->file, hdr->ph_line_num, line->fn, line->text);
-
- write(fdout, out, bytes);
+ while (bytes > 0) {
+ bytes_written = write(fdout, buf, bytes);
+ if (bytes_written <= 0)
+ break;
+ bytes -= bytes_written;
+ buf += bytes_written;
+ }
free(line->hdr);
free(line);
}
fprintf(stderr, " subsystem = %x\n", hdr->ph_subsys);
fprintf(stderr, " mask = %x\n", hdr->ph_mask);
fprintf(stderr, " cpu_id = %u\n", hdr->ph_cpu_id);
+ fprintf(stderr, " type = %u\n", hdr->ph_type);
fprintf(stderr, " seconds = %u\n", hdr->ph_sec);
fprintf(stderr, " microseconds = %lu\n", (long)hdr->ph_usec);
fprintf(stderr, " stack = %u\n", hdr->ph_stack);
goto readhdr;
if (hdr->ph_len > 4094 || /* is this header bogus? */
- hdr->ph_cpu_id > 65536 ||
+ hdr->ph_type >= libcfs_tcd_type_max() ||
hdr->ph_stack > 65536 ||
hdr->ph_sec < (1 << 30) ||
hdr->ph_usec > 1000000000 ||
strcpy(filename, argv[1]);
else
sprintf(filename, "%s"CFS_TIME_T".%u",
- DEBUG_FILE_PATH_DEFAULT, time(NULL), getpid());
+ LIBCFS_DEBUG_FILE_PATH_DEFAULT, time(NULL), getpid());
if (stat(filename, &st) == 0 && S_ISREG(st.st_mode))
unlink(filename);
return 1;
}
if (argc > 1) {
- fdout = open(argv[1], O_WRONLY|O_CREAT|O_TRUNC);
+ fdout = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC,
+ S_IRUSR | S_IWUSR);
if (fdout < 0) {
fprintf(stderr, "fopen(%s) failed: %s\n", argv[1],
strerror(errno));
} mod_paths[] = {
{"libcfs", "libcfs/libcfs"},
{"lnet", "lnet/lnet"},
- {"kciblnd", "lnet/klnds/ciblnd"},
- {"kgmlnd", "lnet/klnds/gmlnd"},
{"kmxlnd", "lnet/klnds/mxlnd"},
- {"kiiblnd", "lnet/klnds/iiblnd"},
{"ko2iblnd", "lnet/klnds/o2iblnd"},
- {"kopeniblnd", "lnet/klnds/openiblnd"},
{"kptllnd", "lnet/klnds/ptllnd"},
{"kqswlnd", "lnet/klnds/qswlnd"},
{"kralnd", "lnet/klnds/ralnd"},
{"ksocklnd", "lnet/klnds/socklnd"},
{"ktdilnd", "lnet/klnds/tdilnd"},
- {"kviblnd", "lnet/klnds/viblnd"},
{"lvfs", "lustre/lvfs"},
{"obdclass", "lustre/obdclass"},
{"llog_test", "lustre/obdclass"},
{
struct mod_paths *mp;
char *path = "";
- char *kernel = "linux";
const char *proc = "/proc/modules";
char modname[128], buf[4096];
long modaddr;
if (argc >= 2)
path = argv[1];
- if (argc == 3)
- kernel = argv[2];
if (argc > 3) {
printf("%s [path] [kernel]\n", argv[0]);
return 0;