pastebin - collaborative debugging tool
rovema.kpaste.net RSS

Difference between
modified post 47dc0c6c by Anonymous on Tue 25th Jun 2024 10:52
original post 841080c by Anonymous on Tue 25th Jun 2024 10:13
Download diff
Show old version | new version | both versions

    
11
diff --git a/lib/Makefile b/lib/Makefile
22
index 8a0c415..6aebf3b 100644
33
--- a/lib/Makefile
44
+++ b/lib/Makefile
55
@@ -1,7 +1,7 @@
66
 OBJS=igb
77
 INCL=e1000_82575.h e1000_defines.h e1000_hw.h e1000_osdep.h e1000_regs.h igb.h
88
 AVBLIB=libigb.a
99
-#CFLAGS=-ggdb
1010
+CFLAGS=-ggdb -Wall
1111
1212
 CC?=gcc
1313
 RANLIB?=ranlib
1414
diff --git a/lib/igb.c b/lib/igb.c
15-
index 647234f..7480ad8 100644
15+
index 647234f..90f4062 100644
1616
--- a/lib/igb.c
1717
+++ b/lib/igb.c
18-
@@ -57,6 +57,21 @@
18+
@@ -51,12 +51,43 @@
19+
 #include <semaphore.h>
1921
20-
 #undef DEBUG
22+
+#define USE_DPRINTF 1
2223
+
23-
+int g_debug_level = 2;
24+
+#ifdef USE_DPRINTF
25+
+#include <stdarg.h>
2427
+
25-
+#define dprintf_out printf
28+
 #include "e1000_hw.h"
29+
 #include "e1000_82575.h"
2636
+
2737
+#define DPRINTF_LEVEL_ENABLED(level) ((level) <= g_debug_level)
2838
+#define DPRINTF(level, args) \
2939
+	{ \
3040
+		if (DPRINTF_LEVEL_ENABLED(level)) { \
3141
+			int saved_errno = errno; \
3242
+			dprintf_out args; \
3343
+			errno = saved_errno; \
3444
+		} \
3545
+	}
3646
+
37-
 /*********************************************************************
47+
+void dprintf_out(const char *fmt, ...)
38-
  *  PCI Device ID Table
48+
+{
39-
  *
49+
+	const char buffer[1024];
40-
@@ -1008,8 +1023,10 @@ int igb_xmit(device_t *dev, unsigned int queue_index, struct igb_packet *packet)
50+
+	va_list args;
41-
 	if (packet == NULL)
51+
+	va_start(args, fmt);
42-
 		return -EINVAL;
52+
+	(void)vsnprintf(buffer, sizeof(buffer), fmt, args);
43-
53+
+	syslog(LOG_DAEMON|LOG_ERR, buffer);
44-
-	if (igb_lock(dev) != 0)
54+
+	va_end(args);
45-
+	if (igb_lock(dev) != 0) {
55+
+}
46-
+		DPRINTF(1, ("igb_xmit: igb_lock() failed, errno=%d\n", errno));
56+
+#endif /* USE_DPRINTF */
47-
 		return errno;
57+
+
48-
+	}
58+
+
59+
 /*********************************************************************
4965
66+
-	if (igb_lock(dev) != 0)
5171
52-
@@ -1100,8 +1117,10 @@ int igb_xmit(device_t *dev, unsigned int queue_index, struct igb_packet *packet)
72+
 	packet->next = NULL; /* used for cleanup */
5473
74+
@@ -1100,8 +1133,10 @@ int igb_xmit(device_t *dev, unsigned int queue_index, struct igb_packet *packet)
5577
 unlock:
5678
-	if (igb_unlock(dev) != 0)
5779
+	if (igb_unlock(dev) != 0) {
5880
+		DPRINTF(1, ("igb_xmit: igb_unlock() failed, errno=%d\n", errno));
5981
 		return errno;
6082
+	}
6183
6284
 	return error;
6385
 }
64-
@@ -1179,11 +1198,15 @@ int igb_lock(device_t *dev)
86+
@@ -1179,11 +1214,15 @@ int igb_lock(device_t *dev)
6587
 		case 0:
6688
 			break;
6789
 		case EOWNERDEAD:
6890
+			DPRINTF(0, ("igb_lock: trying to recover mutex %p\n", adapter->memlock));
6991
 			// some process terminated without unlocking the mutex
7092
-			if (pthread_mutex_consistent(adapter->memlock) != 0)
7193
+			if (pthread_mutex_consistent(adapter->memlock) != 0) {
7294
+				DPRINTF(0, ("igb_lock: pthread_mutex_consistent() failed, errno=%d\n", errno));
7395
 				return -errno;
7496
+			}
7597
 			break;
7698
 		default:
7799
+			DPRINTF(0, ("igb_lock: pthread_mutex_lock() failed, errno=%d\n", errno));
78100
 			return -errno;
79101
 			break;
80102
 	}
81-
@@ -2486,6 +2509,8 @@ static int igb_create_lock(struct adapter *adapter)
103+
@@ -2486,6 +2525,8 @@ static int igb_create_lock(struct adapter *adapter)
82104
 	bool attr_allocated = false;
83105
 	pthread_mutexattr_t attr;
84106
85107
+	DPRINTF(2, ("--> igb_create_lock(adapter=%p)\n", adapter));
86108
+
87109
 	if (!adapter) {
88110
 		errno = EINVAL;
89111
 		goto err;
90-
@@ -2541,13 +2566,17 @@ static int igb_create_lock(struct adapter *adapter)
112+
@@ -2541,13 +2582,17 @@ static int igb_create_lock(struct adapter *adapter)
91113
 	fl.l_len = 1;
92114
 	fl.l_pid = getpid();
93115
94116
-	if (fcntl(fd, F_SETLKW, &fl) != 0)
95117
+	if (fcntl(fd, F_SETLKW, &fl) != 0) {
96118
+		DPRINTF(1, ("igb_create_lock: F_SETLKW failed, errno=%d\n", errno));
97119
 		goto err;
98120
+	}
99121
100122
 	locked = true;
101123
102124
-	if (fstat(fd, &stat) != 0)
103125
+	if (fstat(fd, &stat) != 0) {
104126
+		DPRINTF(1, ("igb_create_lock: fstat() failed, errno=%d\n", errno));
105127
 		goto err;
106128
+	}
107129
108130
 	if (stat.st_size == 0) { // file is empty, do initialization
109131
 		/*
110-
@@ -2604,5 +2633,7 @@ err:
132+
@@ -2604,5 +2649,7 @@ err:
111133
 		(void) close(fd);
112134
 	}
113135
114136
+	DPRINTF(2, ("<-- igb_create_lock, error=%d\n", (int)error));
115137
+
116138
 	return error;
117139
 }
118140

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}




All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at