PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/thread-self/root/proc/self/root/lib64/python3.6/site-packages/pcp/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/thread-self/root/proc/self/root/lib64/python3.6/site-packages/pcp/pmgui.py |
""" Wrapper module for libpcp_gui - PCP Graphical User Interface clients """ # # Copyright (C) 2012-2015,2019 Red Hat. # Copyright (C) 2009-2012 Michael T. Werner # # This file is part of the "pcp" module, the python interfaces for the # Performance Co-Pilot toolkit. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # ############################################################################## # # imports # # constants adapted from C header file <pcp/pmapi.h> from pcp.pmapi import pmErr from cpmapi import PM_ERR_IPC # for interfacing with libpcp - the client-side C API from ctypes import CDLL, Structure, POINTER, cast, byref from ctypes import c_void_p, c_char_p, c_int, c_long from ctypes.util import find_library ############################################################################## # # dynamic library loads # LIBPCP_GUI = CDLL(find_library("pcp_gui")) LIBC = CDLL(find_library("c")) ############################################################################## # # definition of structures used by C library libpcp, derived from <pcp/pmafm.h> # class pmRecordHost(Structure): """state information between the recording session and the pmlogger """ _fields_ = [("f_config", c_void_p), ("fd_ipc", c_int), ("logfile", c_char_p), ("pid", c_int), ("status", c_int)] ############################################################################## # # GUI API function prototypes # ## # PMAPI Record-Mode Services LIBPCP_GUI.pmRecordSetup.restype = c_long LIBPCP_GUI.pmRecordSetup.argtypes = [c_char_p, c_char_p, c_int] LIBPCP_GUI.pmRecordAddHost.restype = c_int LIBPCP_GUI.pmRecordAddHost.argtypes = [ c_char_p, c_int, POINTER(POINTER(pmRecordHost))] LIBPCP_GUI.pmRecordControl.restype = c_int LIBPCP_GUI.pmRecordControl.argtypes = [POINTER(pmRecordHost), c_int, c_char_p] ############################################################################## # # class GuiClient # # This class wraps the GUI API library functions # class GuiClient(object): """ Provides metric recording and time control interfaces """ ## # Record-Mode Services @staticmethod def pmRecordSetup(folio, creator, replay): """ GUI API - Setup an archive recording session File* file = pmRecordSetup("folio", "creator", 0) """ if not isinstance(folio, bytes): folio = folio.encode('utf-8') if not isinstance(creator, bytes): creator = creator.encode('utf-8') file_result = LIBPCP_GUI.pmRecordSetup(c_char_p(folio), c_char_p(creator), replay) if file_result == 0: raise pmErr(file_result) return file_result @staticmethod def pmRecordAddHost(host, isdefault, config): """ GUI API - Adds host to an archive recording session (status, recordhost) = pmRecordAddHost("host", 1, "configuration") """ if not isinstance(host, bytes): host = host.encode('utf-8') rhp = POINTER(pmRecordHost)() status = LIBPCP_GUI.pmRecordAddHost(c_char_p(host), isdefault, byref(rhp)) if status < 0: raise pmErr(status) if not isinstance(config, bytes): config = config.encode('utf-8') status = LIBC.fputs(c_char_p(config), c_long(rhp.contents.f_config)) if status < 0: LIBC.perror(c_char_p("")) raise pmErr(status) return status, rhp @staticmethod def pmRecordControl(rhp, request, options): """PMAPI - Control an archive recording session status = pmRecordControl(0, cpmgui.PM_RCSETARG, "args") status = pmRecordControl(0, cpmgui.PM_REC_ON) status = pmRecordControl(0, cpmgui.PM_REC_OFF) """ if not isinstance(options, bytes): options = options.encode('utf-8') status = LIBPCP_GUI.pmRecordControl(cast(rhp, POINTER(pmRecordHost)), request, c_char_p(options)) if status < 0 and status != PM_ERR_IPC: raise pmErr(status) return status