diff --git a/docs/C_C++_API.md b/docs/C_C++_API.md index 03f1482d75c4b3c277dc5d391bfdaa8cb2c69fe2..2ad83e8b7bc58787a997da7c6b9a22cf356250c6 100644 --- a/docs/C_C++_API.md +++ b/docs/C_C++_API.md @@ -316,7 +316,7 @@ ### void PmuCloseCpuFreqSampling(); 关闭cpu频率采集 -### PmuFile PmuBeginWrite(const char *path, const struct PmuAttr *pattr); +### PmuFile PmuBeginWrite(const char *path, const struct PmuAttr *pattr, const int addIdHdr); 用于把性能数据输出为perf.data格式的文件。该函数用于初始化该文件。 目前该文件只支持SAMPLING模式,只支持基本信息的输出,比如id, tid, pid, addr,也包含brbe的数据。 * path: 文件路径 diff --git a/docs/Go_API.md b/docs/Go_API.md index 30e38e9394a8933f66c28734cd7f4e3faf815d54..f22ef11fbb51f24284487bf876f351855e87c0ce 100644 --- a/docs/Go_API.md +++ b/docs/Go_API.md @@ -562,6 +562,7 @@ func main() { 目前该文件只支持SAMPLING模式,只支持基本信息的输出,比如id, tid, pid, addr,也包含brbe的数据。 * path: 文件路径 * pattr: 采集任务的PmuAttr +* addIdHdr: 为属于非PERF_RECORD_SAMPLE采样的ID * 返回值: 文件句柄,用于下面两个API的调用 ### kperf.PmuWriteData diff --git a/go/src/libkperf/kperf/kperf.go b/go/src/libkperf/kperf/kperf.go index 3c0812a03ebf7bf835ad8c7189965a862a15a7c6..04de53a9e4afafcf68132ad75b210c8a5615153f 100644 --- a/go/src/libkperf/kperf/kperf.go +++ b/go/src/libkperf/kperf/kperf.go @@ -1351,15 +1351,16 @@ func (data *PmuData) appendBranchRecords(pmuData C.struct_PmuData) { // It is a simplified perf.data only include basic fields for perf sample, // including id, cpu, tid, pid, addr and branch stack. // It also includes sample like mmap, mmap2, comm, fork. -func PmuBeginWrite(path string, attr PmuAttr) (C.PmuFile, error) { +func PmuBeginWrite(path string, attr PmuAttr, addIdHdr int) (C.PmuFile, error) { cAttr, err := ToCPmuAttr(attr) defer FreePmuAttr(cAttr) if err != 0 { return nil, errors.New(C.GoString(C.Perror())) } cFilePath := C.CString(path) + cAddIdHrd := C.int(addIdHdr) - file := C.PmuBeginWrite(cFilePath, cAttr) + file := C.PmuBeginWrite(cFilePath, cAttr, cAddIdHrd) return file, errors.New(C.GoString(C.Perror())) } diff --git a/python/modules/_libkperf/Pmu.py b/python/modules/_libkperf/Pmu.py index d90039aefb481c162ea0c3a5e9d59eb2aff0b216..cc42c50cc9790daf3f9a6af3d69d0e6c2e3f6e05 100644 --- a/python/modules/_libkperf/Pmu.py +++ b/python/modules/_libkperf/Pmu.py @@ -2219,7 +2219,7 @@ def PmuCloseCpuFreqSampling(): c_PmuCloseCpuFreqSampling = kperf_so.PmuCloseCpuFreqSampling c_PmuCloseCpuFreqSampling() -def PmuBeginWrite(path, pattr): +def PmuBeginWrite(path, pattr, addIdHdr): """ PmuFile PmuBeginWrite(const char *path, const PmuAttr *pattr) """ @@ -2228,8 +2228,9 @@ def PmuBeginWrite(path, pattr): c_func.restype = ctypes.c_void_p c_filepath = ctypes.c_char_p(path.encode(UTF_8)) + c_addIdHdr = ctypes.c_int(addIdHdr) - return c_func(c_filepath, ctypes.byref(pattr.c_pmu_attr)) + return c_func(c_filepath, ctypes.byref(pattr.c_pmu_attr), c_addIdHdr) def PmuWriteData(file, data): """ diff --git a/python/modules/kperf/pmu.py b/python/modules/kperf/pmu.py index 73a25b66718ed0822d081cf60f2514811a14c2f8..dfc1d4485eb2fb51aabbe63a73e2008a61c207d9 100644 --- a/python/modules/kperf/pmu.py +++ b/python/modules/kperf/pmu.py @@ -593,8 +593,8 @@ def close_cpu_freq_sampling(): def read_cpu_freq_detail(): return _libkperf.PmuReadCpuFreqDetail() -def begin_write(path, pattr): - return _libkperf.PmuBeginWrite(path, pattr) +def begin_write(path, pattr, addIdHdr): + return _libkperf.PmuBeginWrite(path, pattr, addIdHdr) def write_data(file, data): return _libkperf.PmuWriteData(file, data)