summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMerlin Scholz <merlin@scholz.ruhr>2023-07-19 19:37:43 +0200
committerMerlin Scholz <merlin@scholz.ruhr>2023-07-19 19:37:43 +0200
commit509f0498e749fa43af638c2719442656bc3295da (patch)
tree1ddbf2aca1e01bdb57cc723811035bde22357d82 /sys
parentc7d78f5ebdbe93048e09731ce76417ea5a78cd05 (diff)
Code cleanuplockdoc-10.99.5
Diffstat (limited to 'sys')
-rw-r--r--sys/lockdoc/init_data.c20
-rw-r--r--sys/sys/lockdoc.h42
-rw-r--r--sys/sys/lockdoc_event.h13
3 files changed, 35 insertions, 40 deletions
diff --git a/sys/lockdoc/init_data.c b/sys/lockdoc/init_data.c
index 12d7b752547..afef6122f2a 100644
--- a/sys/lockdoc/init_data.c
+++ b/sys/lockdoc/init_data.c
@@ -10,14 +10,13 @@ void lockdoc_send_current_task_addr(void) {
u_long flags;
flags = x86_read_flags();
- _x86_disable_intr();
+ _x86_disable_intr();
memset(&la_buffer,0,sizeof(la_buffer));
la_buffer.action = LOCKDOC_CURRENT_TASK;
la_buffer.ptr = (uint32_t)((uint32_t)curcpu()->ci_self + offsetof(struct cpu_info, ci_curlwp));
-
- lockdoc_outb(PING_CHAR,IO_PORT_LOG);
+ LOCKDOC_PING();
x86_write_flags(flags);
}
@@ -26,13 +25,13 @@ void lockdoc_send_lwp_flag_offset(void) {
u_long flags;
flags = x86_read_flags();
- _x86_disable_intr();
+ _x86_disable_intr();
memset(&la_buffer,0,sizeof(la_buffer));
la_buffer.action = LOCKDOC_LWP_FLAG_OFFSET;
la_buffer.ptr = offsetof(struct lwp, l_pflag);
- lockdoc_outb(PING_CHAR,IO_PORT_LOG);
+ LOCKDOC_PING();
x86_write_flags(flags);
}
@@ -41,13 +40,13 @@ void lockdoc_send_pid_offset(void) {
u_long flags;
flags = x86_read_flags();
- _x86_disable_intr();
+ _x86_disable_intr();
memset(&la_buffer,0,sizeof(la_buffer));
la_buffer.action = LOCKDOC_PID_OFFSET;
la_buffer.ptr = offsetof(struct lwp, l_lid);
- lockdoc_outb(PING_CHAR,IO_PORT_LOG);
+ LOCKDOC_PING();
x86_write_flags(flags);
}
@@ -56,13 +55,14 @@ void lockdoc_send_kernel_version(void) {
u_long flags;
flags = x86_read_flags();
- _x86_disable_intr();
+ _x86_disable_intr();
memset(&la_buffer,0,sizeof(la_buffer));
- snprintf((char*)&la_buffer.type, LOG_CHAR_BUFFER_LEN, "%s", "notimplemented"); // TODO Implement
+ snprintf((char*)&la_buffer.type, LOCKDOC_LOG_CHAR_BUFFER_LEN,
+ "%d-lockdoc-%s", __NetBSD_Version__, LOCKDOC_VERSION);
la_buffer.action = LOCKDOC_KERNEL_VERSION;
- lockdoc_outb(PING_CHAR,IO_PORT_LOG);
+ LOCKDOC_PING();
x86_write_flags(flags);
}
diff --git a/sys/sys/lockdoc.h b/sys/sys/lockdoc.h
index 7a2c4d4d7cd..1cfe9c04a6e 100644
--- a/sys/sys/lockdoc.h
+++ b/sys/sys/lockdoc.h
@@ -10,11 +10,10 @@
#include <sys/mutex.h>
#include <sys/rwlock.h>
-#define DELIMITER "#"
-#define DELIMITER_CHAR '#'
-#define PING_CHAR 'p'
-#define MK_STRING(x) #x
-#define IO_PORT_LOG (0x00e9)
+#define LOCKDOC_VERSION "ms-0.2"
+#define LOCKDOC_DELIMITER "#"
+#define LOCKDOC_DELIMITER_CHAR '#'
+#define LOCKDOC_PING() lockdoc_outb('p',0x00e9);
#ifdef LOCKDOC
@@ -26,7 +25,6 @@ extern struct log_action la_buffer;
/*
* Prototypes
*/
-
void lockdoc_send_current_task_addr(void);
void lockdoc_send_lwp_flag_offset(void);
void lockdoc_send_pid_offset(void);
@@ -110,11 +108,11 @@ static inline void __lockdoc_log_memory(int alloc, const char *datatype, const v
la_buffer.ctx = lockdoc_get_ctx();
// file
- strncpy(la_buffer.file, file, LOG_CHAR_BUFFER_LEN);
- la_buffer.file[LOG_CHAR_BUFFER_LEN - 1] = '\0';
+ strncpy(la_buffer.file, file, LOCKDOC_LOG_CHAR_BUFFER_LEN);
+ la_buffer.file[LOCKDOC_LOG_CHAR_BUFFER_LEN - 1] = '\0';
la_buffer.line = line;
- strncpy(la_buffer.function, func, LOG_CHAR_BUFFER_LEN);
- la_buffer.function[LOG_CHAR_BUFFER_LEN - 1] = '\0';
+ strncpy(la_buffer.function, func, LOCKDOC_LOG_CHAR_BUFFER_LEN);
+ la_buffer.function[LOCKDOC_LOG_CHAR_BUFFER_LEN - 1] = '\0';
/*
* One could use a more safe string function, e.g., strlcpy.
@@ -123,10 +121,10 @@ static inline void __lockdoc_log_memory(int alloc, const char *datatype, const v
* To ensure any string buffer contains a valid string, we
* always write a NULL byte at its end.
*/
- strncpy(la_buffer.type,datatype,LOG_CHAR_BUFFER_LEN);
- la_buffer.type[LOG_CHAR_BUFFER_LEN - 1] = '\0';
+ strncpy(la_buffer.type,datatype,LOCKDOC_LOG_CHAR_BUFFER_LEN);
+ la_buffer.type[LOCKDOC_LOG_CHAR_BUFFER_LEN - 1] = '\0';
- lockdoc_outb(PING_CHAR,IO_PORT_LOG);
+ LOCKDOC_PING();
x86_write_flags(eflags);
}
@@ -155,29 +153,29 @@ static inline void lockdoc_log_lock(int lock_op, const volatile void* ptr, const
// size only relevant for memory access
// type
- strncpy(la_buffer.type, lock_type, LOG_CHAR_BUFFER_LEN);
- la_buffer.type[LOG_CHAR_BUFFER_LEN - 1] = '\0';
+ strncpy(la_buffer.type, lock_type, LOCKDOC_LOG_CHAR_BUFFER_LEN);
+ la_buffer.type[LOCKDOC_LOG_CHAR_BUFFER_LEN - 1] = '\0';
// TODO lock_member
- strncpy(la_buffer.lock_member, "dummy", LOG_CHAR_BUFFER_LEN);
- la_buffer.lock_member[LOG_CHAR_BUFFER_LEN - 1] = '\0';
+ strncpy(la_buffer.lock_member, "dummy", LOCKDOC_LOG_CHAR_BUFFER_LEN);
+ la_buffer.lock_member[LOCKDOC_LOG_CHAR_BUFFER_LEN - 1] = '\0';
// file
- strncpy(la_buffer.file, file, LOG_CHAR_BUFFER_LEN);
- la_buffer.file[LOG_CHAR_BUFFER_LEN - 1] = '\0';
+ strncpy(la_buffer.file, file, LOCKDOC_LOG_CHAR_BUFFER_LEN);
+ la_buffer.file[LOCKDOC_LOG_CHAR_BUFFER_LEN - 1] = '\0';
// line
la_buffer.line = line;
// function
- strncpy(la_buffer.function, func, LOG_CHAR_BUFFER_LEN);
- la_buffer.function[LOG_CHAR_BUFFER_LEN - 1] = '\0';
+ strncpy(la_buffer.function, func, LOCKDOC_LOG_CHAR_BUFFER_LEN);
+ la_buffer.function[LOCKDOC_LOG_CHAR_BUFFER_LEN - 1] = '\0';
// TODO preempt_count
// irq_sync
la_buffer.irq_sync = irq_sync;
- lockdoc_outb(PING_CHAR,IO_PORT_LOG);
+ LOCKDOC_PING();
x86_write_flags(eflags);
}
diff --git a/sys/sys/lockdoc_event.h b/sys/sys/lockdoc_event.h
index af5ad08435d..14190343e8f 100644
--- a/sys/sys/lockdoc_event.h
+++ b/sys/sys/lockdoc_event.h
@@ -3,7 +3,7 @@
#ifdef LOCKDOC
-#define LOG_CHAR_BUFFER_LEN 100
+#define LOCKDOC_LOG_CHAR_BUFFER_LEN 100
#define PSEUDOLOCK_ADDR_RCU 0x42
#define PSEUDOLOCK_ADDR_PREEMPT 0x43
#define PSEUDOLOCK_ADDR_SOFTIRQ 0x45
@@ -18,9 +18,6 @@
#define PSEUDOLOCK_VAR_SOFTIRQ PSEUDOLOCK_VAR
#define PSEUDOLOCK_VAR_PREEMPT PSEUDOLOCK_VAR
-// Lock flags
-#define LOCK_FLAGS_RECURSIVE 0x1
-
/*
* When altered, this file
* has to be copied to the according fail experiment
@@ -60,11 +57,11 @@ struct log_action {
uint32_t lock_op;
uint32_t ptr;
uint32_t size;
- char type[LOG_CHAR_BUFFER_LEN]; // allocated data_type or lock type
- char lock_member[LOG_CHAR_BUFFER_LEN];
- char file[LOG_CHAR_BUFFER_LEN];
+ char type[LOCKDOC_LOG_CHAR_BUFFER_LEN]; // allocated data_type or lock type
+ char lock_member[LOCKDOC_LOG_CHAR_BUFFER_LEN];
+ char file[LOCKDOC_LOG_CHAR_BUFFER_LEN];
int32_t line;
- char function[LOG_CHAR_BUFFER_LEN];
+ char function[LOCKDOC_LOG_CHAR_BUFFER_LEN];
int32_t preempt_count;
int32_t irq_sync;
int32_t flags;