⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptt_glibc-2.3.5.patch

📁 linux下的多线程调试工具
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_15 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* COND_16 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 14},              /* COND_17 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* COND_18 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* COND_19 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_20 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* COND_21 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* COND_22 */+    {{PTT_PTR}, 1, 9},                                          /* COND_23 */+    {{PTT_PTR}, 1, 9},                                          /* COND_24 */+    {{PTT_PTR}, 1, 9},                                          /* MTX_1 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_2 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* MTX_3 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* MTX_4 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_5 */+    {{PTT_PTR, PTT_UINT, PTT_INT, PTT_INT, PTT_PTR, PTT_INT}, 6, 15},+    {{PTT_PTR}, 1, 9},                                          /* MTX_7 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_8 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* MTX_9 */+    {{PTT_PTR, PTT_INT, PTT_PTR}, 3, 12},                       /* MTX_10 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* MTX_11 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* MTX_12 */+    {{PTT_PTR, PTT_INT, PTT_PTR, PTT_INT}, 4, 13},              /* MTX_13 */+    {{PTT_PTR}, 1, 9},                                          /* MTX_14 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_15 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* MTX_16 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_17 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* MTX_18 */+    {{}, 0, 7},                                                 /* THR_1 */+    {{}, 0, 7},                                                 /* THR_2 */+    {{}, 0, 7},                                                 /* THR_3 */+    {{PTT_PTR}, 1, 9},                                          /* THR_4 */+    {{PTT_INT}, 1, 8},                                          /* THR_5 */+    {{PTT_PTR}, 1, 9},                                          /* THR_6 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* THR_7 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_PTR}, 4, 15},              /* THR_8 */+    {{PTT_INT}, 1, 8},                                          /* THR_9 */+    {{PTT_PTR}, 1, 9},                                          /* THR_10 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 12},                       /* THR_11 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* THR_12 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* THR_13 */+    {{PTT_INT}, 1, 8},                                          /* THR_14 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* THR_15 */+    {{PTT_INT}, 1, 8},                                          /* FORK */+    {{PTT_PTR, PTT_INT, PTT_UINT}, 3, 11},                      /* SEM_1 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_2 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* SEM_3 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 14},              /* SEM_4 */+    {{PTT_PTR, PTT_PTR, PTT_UINT}, 3, 12},                      /* SEM_5 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_6 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_7 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* SEM_8 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_9 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 13},             /* SEM_10 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_11 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_12 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_13 */+    {{}, 0, 7},                                                 /* SEM_14 */+    {{PTT_INT}, 1, 8},                                          /* SEM_15 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* SEM_16 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_17 */+    {{}, 0, 7},                                                 /* SEM_18 */+    {{}, 0, 7},                                                 /* SEM_19 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* SEM_20 */+    {{PTT_PTR, PTT_UINT}, 2, 10},                               /* SEM_21 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_22 */+    {{PTT_PTR, PTT_PTR}, 2, 11},                                /* SEM_23 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_24 */+    {{PTT_PTR, PTT_INT}, 2, 10},                                /* SEM_25 */+    {{PTT_UINT, PTT_INT}, 2, 9},                                /* SEM_26 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_27 */+    {{PTT_PTR}, 1, 9},                                          /* SEM_28 */+#else /* __WORDSIZE != 64 */+    {{}, 0, 6},                                                 /* NULL */+    {{PTT_UINT}, 1, 7},                                         /* INIT */+    {{}, 0, 6},                                                 /* FINI */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* BAR_1 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_2 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_3 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_4 */+    {{PTT_PTR, PTT_PTR, PTT_UINT}, 3, 9},                       /* BAR_5 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_6 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* BAR_7 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* BAR_8 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* BAR_9 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* BAR_10 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* BAR_11 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* BAR_12 */+    {{PTT_PTR}, 1, 7},                                          /* BAR_13 */+    {{PTT_PTR}, 1, 7},                                          /* BAR_14 */+    {{PTT_PTR}, 1, 7},                                          /* BAR_15 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* COND_1 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_2 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_3 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_4 */+    {{PTT_PTR, PTT_ULL}, 2, 9},                                 /* COND_5 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_6 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_7 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* COND_8 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* COND_9 */+    {{PTT_PTR, PTT_PTR, PTT_ULL, PTT_UINT, PTT_PTR, PTT_INT}, 6, 13},+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 10},              /* COND_11 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_12 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* COND_13 */+    {{PTT_PTR, PTT_ULL}, 2, 9},                                 /* COND_14 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_15 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* COND_16 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 10},              /* COND_17 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* COND_18 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* COND_19 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_20 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* COND_21 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* COND_22 */+    {{PTT_PTR}, 1, 7},                                          /* COND_23 */+    {{PTT_PTR}, 1, 7},                                          /* COND_24 */+    {{PTT_PTR}, 1, 7},                                          /* MTX_1 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_2 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* MTX_3 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* MTX_4 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_5 */+    {{PTT_PTR, PTT_UINT, PTT_INT, PTT_INT, PTT_PTR, PTT_INT}, 6, 12},+    {{PTT_PTR}, 1, 7},                                          /* MTX_7 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_8 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* MTX_9 */+    {{PTT_PTR, PTT_INT, PTT_PTR}, 3, 9},                        /* MTX_10 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* MTX_11 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* MTX_12 */+    {{PTT_PTR, PTT_INT, PTT_PTR, PTT_INT}, 4, 10},              /* MTX_13 */+    {{PTT_PTR}, 1, 7},                                          /* MTX_14 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_15 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* MTX_16 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_17 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* MTX_18 */+    {{}, 0, 6},                                                 /* THR_1 */+    {{}, 0, 6},                                                 /* THR_2 */+    {{}, 0, 6},                                                 /* THR_3 */+    {{PTT_PTR}, 1, 7},                                          /* THR_4 */+    {{PTT_INT}, 1, 7},                                          /* THR_5 */+    {{PTT_PTR}, 1, 7},                                          /* THR_6 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* THR_7 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_PTR}, 4, 10},              /* THR_8 */+    {{PTT_INT}, 1, 7},                                          /* THR_9 */+    {{PTT_PTR}, 1, 7},                                          /* THR_10 */+    {{PTT_PTR, PTT_PTR, PTT_INT}, 3, 9},                        /* THR_11 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* THR_12 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* THR_13 */+    {{PTT_INT}, 1, 7},                                          /* THR_14 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* THR_15 */+    {{PTT_INT}, 1, 7},                                          /* FORK */+    {{PTT_PTR, PTT_INT, PTT_UINT}, 3, 9},                       /* SEM_1 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_2 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* SEM_3 */+    {{PTT_PTR, PTT_PTR, PTT_PTR, PTT_INT}, 4, 10},              /* SEM_4 */+    {{PTT_PTR, PTT_PTR, PTT_UINT}, 3, 9},                       /* SEM_5 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_6 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_7 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* SEM_8 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_9 */+    {{PTT_PTR, PTT_UINT, PTT_PTR, PTT_INT}, 4, 10},             /* SEM_10 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_11 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_12 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_13 */+    {{}, 0, 6},                                                 /* SEM_14 */+    {{PTT_INT}, 1, 7},                                          /* SEM_15 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* SEM_16 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_17 */+    {{}, 0, 6},                                                 /* SEM_18 */+    {{}, 0, 6},                                                 /* SEM_19 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* SEM_20 */+    {{PTT_PTR, PTT_UINT}, 2, 8},                                /* SEM_21 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_22 */+    {{PTT_PTR, PTT_PTR}, 2, 8},                                 /* SEM_23 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_24 */+    {{PTT_PTR, PTT_INT}, 2, 8},                                 /* SEM_25 */+    {{PTT_UINT, PTT_INT}, 2, 8},                                /* SEM_26 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_27 */+    {{PTT_PTR}, 1, 7},                                          /* SEM_28 */+#endif /* __WORDSIZE == 64 */+};++#define PTT_VERS_MAJOR 1+#define PTT_VERS_MINOR 0++#define PTT_FILE_LEN 255++#if HP_TIMING_AVAIL == 0+#error no hp-timing+#endif /* HP_TIMING_AVAIL == 0 */+#define PTT_GET_TIME(time) HP_TIMING_NOW(time)++#define PTT_SIZE (ptt_buf->size_buff)+#define PTT_SZ_WORD (sizeof(PTT_WORD))++/* write data in an array and increment the index */+#define PTT_WR_32(arg,deb,tab,sum)                      \+({sum ^= tab[(deb)%(PTT_SIZE)] = (PTT_WORD)(arg);       \+  (deb)++;})+#define PTT_WR_64(arg,deb,tab,sum)                      \+({sum ^= tab[(deb)%(PTT_SIZE)] =                        \+  (PTT_WORD)((unsigned long long)(arg) & 0xffffffff);   \+  (deb)++;                                              \+  sum ^= tab[(deb)%(PTT_SIZE)] =                        \+  (PTT_WORD)((unsigned long long)(arg) >> 32);          \+  (deb)++;})+/* trace point name */+#define PTT_WR_NAME(arg,deb,tab,sum) PTT_WR_32(arg,deb,tab,sum)+/* integer data */+#define PTT_WR_INT(arg,deb,tab,sum) PTT_WR_32(arg,deb,tab,sum)+/* pointer data */			    +#if __WORDSIZE == 64+#define PTT_WR_PTR(arg,deb,tab,sum) PTT_WR_64(arg,deb,tab,sum)+#else /* __WORDSIZE != 64 */+#define PTT_WR_PTR(arg,deb,tab,sum) PTT_WR_32(arg,deb,tab,sum)+#endif /* __WORDSIZE == 64 */+/* unsigned integer data */			   +#define PTT_WR_UINT(arg,deb,tab,sum) PTT_WR_32(arg,deb,tab,sum)+/* unsigned long long data */	+#define PTT_WR_ULL(arg,deb,tab,sum) PTT_WR_64(arg,deb,tab,sum)+/* time (unsigned long long) */+#define PTT_WR_TIME(arg,deb,tab,sum) PTT_WR_64(arg,deb,tab,sum)+/* check_sum (integer) */ 				+#define PTT_WR_CHECK(arg,deb,tab)           \+({tab[(deb)%(PTT_SIZE)] = (PTT_WORD)(arg);  \+  deb++;})++/* If NPTL is initialized while PTT daemon is not running, trace mechanism is+ * disabled.+ * PTT daemon initializes the shared buffer (shared memory object called+ * ptt_[daemon_pid] with [daemon_pid]==[daemon_pgid]). So, if this shared+ * buffer doesn't exists (no shared memory object ptt_[pgid]), PTT daemon is+ * not running, and therefore trace mechanism is disabled.+ */+void attribute_hidden ptt_init_nptl (void)+{+    char region[PTT_FILE_LEN]; /* name of the shared memory */+    int fd;++    snprintf (region, sizeof (region), "/ptt_%d", getpgid (0));+    if ((fd = shm_open (region, O_RDWR, S_IRUSR | S_IWUSR)) == -1) {+        PTT_TRACE_INTERNALS (PTT_DBG_GENERAL, "PTT daemon is not running: "+                             "trace mechanism disabled\n");+        ptt_buf = malloc (sizeof (ptt_buf->current_level));+        ptt_buf->current_level = PTT_LEVEL_NONE;+        return;+    }+    PTT_TRACE_INTERNALS (PTT_DBG_GENERAL, "PTT daemon is running: "+                        "trace mechanism enabled\n");++    /* map the shared memory: only buffer header is needed */+    if ((ptt_buf = mmap (0, sizeof (struct ptt_buffer),+                         PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0))+        == MAP_FAILED) {+        perror ("mmap failed"); goto failed;+    }++#ifdef PTT_TRACE_INFO+    if (!ptt_buf->stat_enable) {+        fprintf (stderr, "stat disabled but nptl expects them to be "+                 "enabled\n");+#else /* ifndef PTT_TRACE_INFO */+    if (ptt_buf->stat_enable) {+        fprintf (stderr, "stat enabled but nptl expects them to be "+                 "disabled\n");+#endif /* PTT_TRACE_INFO */+        goto failed;+    }++    /* map the shared memory: whole buffer is mapped */+    if ((ptt_buf = mremap (ptt_buf, sizeof (struct ptt_buffer),+                           sizeof (struct ptt_buffer) ++                           ptt_buf->size_buff * PTT_SZ_WORD, MREMAP_MAYMOVE))+        == MAP_FAILED) {+        perror ("mremap failed"); goto failed;+    }++    ptt_trace_pid = getpid ();++#ifdef PTT_TRACE_INFO+#define GLRO(x) (ptt_buf->hp_timing_overhead)+    HP_TIMING_ZERO (ptt_buf->hp_timing_overhead);+    HP_TIMING_DIFF_INIT ();+#endif /* PTT_TRACE_INFO */+    +    return;++failed:+    if (shm_unlink (region) == -1) perror ("shm_unlink failed");+    abort ();+}++/* write trace point information in the shared buffer */+void attribute_hidden ptt_trace (ptt_point_t TR_NAME, ...)+{	+    int i,a;+    unsigned int deb, sz, ua;+    ptt_checksum_t check_sum = 0;+    ptt_timestamp_t times;+    void *ptr;+    unsigned long long ull;+    ptt_point_data_t *v_trace = ptt_point_array + TR_NAME; +    va_list ap;+    pthread_t self = pthread_self ();+    int oldtype = __pthread_enable_synccancel (); /* cancel defered */++#ifdef PTT_TRACE_INFO+    hp_timing_t start, end, diff;+    if (oldtype & CANCELTYPE_BITMASK) atomic_increment (&ptt_buf->stat_async);+    HP_TIMING_NOW (start);+#endif /* PTT_TRACE_INFO */++    va_start (ap, TR_NAME);++    sz = v_trace->size;+    PTT_TRACE_INTERNALS (PTT_DBG_TRACE, "thr %d: trace point %d size is %u "+                         "and contains %d types\n",+                         self, TR_NAME, sz, v_trace->ntypes);++    /* if there is no space left in the buffer wait, else continue */+    while (((ptt_buf->reserved >= ptt_buf->beg_read) &&+            ((ptt_buf->reserved + sz - ptt_buf->beg_read) >= PTT_SIZE)+           ) ||+           ((ptt_buf->reserved < ptt_buf->beg_read) &&+            ((ptt_buf->reserved + sz + (UINT_MAX - ptt_buf->beg_read))+             >= PTT_SIZE)+           )) {+        PTT_TRACE_INTERNALS (PTT_DBG_TRACE, "the %d: trace waiting for space,"+                             " reserved=%u, written=

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -