📄 ptt_glibc-2.3.5.patch
字号:
+ {{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 + -