Page MenuHomeFreeBSD

D35153.id105791.diff
No OneTemporary

D35153.id105791.diff

Index: sys/sys/ktrace.h
===================================================================
--- sys/sys/ktrace.h
+++ sys/sys/ktrace.h
@@ -309,6 +309,8 @@
ktrstruct_error("stat", (s), sizeof(struct stat), error)
#define ktrcpuset(s, l) \
ktrstruct("cpuset_t", (s), l)
+#define ktrsigset(s, l) \
+ ktrstruct("sigset_t", (s), l)
extern u_int ktr_geniosize;
#ifdef KTRACE
extern int ktr_filesize_limit_signal;
Index: usr.bin/kdump/kdump.c
===================================================================
--- usr.bin/kdump/kdump.c
+++ usr.bin/kdump/kdump.c
@@ -60,6 +60,7 @@
#include <sys/ktrace.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
+#include <sys/signalvar.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/sysent.h>
@@ -123,6 +124,7 @@
void ktrkevent(struct kevent *);
void ktrstructarray(struct ktr_struct_array *, size_t);
void ktrbitset(char *, struct bitset *, size_t);
+void ktrsigset(char *, sigset_t *, size_t);
void usage(void);
#define TIMESTAMP_NONE 0x0
@@ -1995,6 +1997,29 @@
printf(" ]\n");
}
+void
+ktrsigset(char *name, sigset_t *set, size_t setlen)
+{
+ unsigned long i, c;
+
+ if (SIGISEMPTY(*set)) {
+ printf("%s [ empty ]\n", name);
+ return;
+ }
+ printf("%s [ ", name);
+ c = 0;
+ for (i = 0; i < setlen * CHAR_BIT; i++) {
+ if (!BIT_ISSET(setlen, i, set))
+ continue;
+ if (c == 0)
+ printf("%s", sysdecode_signal(i+1));
+ else
+ printf(", %s", sysdecode_signal(i+1));
+ c++;
+ }
+ printf(" ]\n");
+}
+
void
ktrstruct(char *buf, size_t buflen)
{
@@ -2006,6 +2031,7 @@
struct stat sb;
struct sockaddr_storage ss;
struct bitset *set;
+ sigset_t *sigset;
for (name = buf, namelen = 0;
namelen < buflen && name[namelen] != '\0';
@@ -2054,6 +2080,15 @@
memcpy(set, data, datalen);
ktrbitset(name, set, datalen);
free(set);
+ } else if (strcmp(name, "sigset_t") == 0) {
+ if (datalen < 1)
+ goto invalid;
+ sigset = malloc(datalen);
+ if (sigset == NULL)
+ errx(1, "%s", strerror(ENOMEM));
+ memcpy(sigset, data, datalen);
+ ktrsigset(name, sigset, datalen);
+ free(sigset);
} else {
printf("unknown structure\n");
}

File Metadata

Mime Type
text/plain
Expires
Fri, May 22, 9:12 AM (12 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33417897
Default Alt Text
D35153.id105791.diff (2 KB)

Event Timeline