Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F157430354
D35153.id105791.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D35153.id105791.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D35153: kdump: Decode sigset_t.
Attached
Detach File
Event Timeline
Log In to Comment