-
Notifications
You must be signed in to change notification settings - Fork 35
Developers
C code for the libgputop.so server-side code
-
gputop-string.c- utility api for concatenating formatted text -
gputop-list.c- linux kernel style linked list api -
gputop-util.c- array utility api + malloc wrapper + a few io utilities -
gputop-cpu.c- for /proc cpu stats -
gputop-hash-table.c- what it says on the tin -
gputop-ioctl.c- we wrap ioctl() to track GEM ctx handles -
gputop-ncurses.c- a left over filename this doesn't use ncurses any more. This provides the main entry point for the gputop server code which is linked as a shared library and the entry point is an attribute((constructor)) symbol in here -
gputop-log.c- logging api -
gputop-gl.c- for GL profiling, this deals with tracking contexts and surfaces and wrapping interesting entry GL/GLX/EGL points. -
gputop-main.c- this is linked into a frontend executable for setting environment variables (note the rest of the gputop-server code is not directly linked with this executable, it's linked into a libgputop.so library. After setting environment variables this launches an application with an LD_PRELOAD which will load the rest of the server code. For system-wide monitoring it runs a dummy gputop-system program just to be consistent with profiling a single application. -
gputop.pb-c.c- Generated Protobuf code used for the client/server RPC api -
gputop-server.c- deals with listening for clients to connect, processing RPC requests and forwarding replies and metrics. -
gputop-system.c- dummy program for gputop-main.c to run, only for consistency, when monitoring the system -
gputop-debugfs.c- debugfs utilities -
gputop-perf.c- This is where most of the code for interacting with the kernel is, to interact with the i915-perf/DAPC interface.
Shared code for handling counter normalization. Better suited to C than Javascript.
-
gputop-client-c.c- The entry points into the client-side C code shared by all clients -
gputop-oa-counters.c- given two OA reports at a time, this decodes the OA report format and drives counter normilzation. -
gputop-client-c-runtime.h- the interface between the client-c code and the environment it's embedded (e.g. node, or the browser via Emscripten.) This would need adapting to embed within a Python C module. gputop-client-c-runtime.c - some shared (between different runtime environments) logging utilities -
gputop-client-c.js- Node.js module's 'main' file -
gputop-client-c-bindings.cpp- Node.js Javascript bindings (V8 bindings) for all client-side C entry points -
gputop-client-c-bindings.h- Some types for the Node.js bindings -
gputop-client-c-runtime-bindings.cpp- Implementation of the runtime interface for Node.js -
gputop-web-lib.js- Implementation of the runtime interface for the browser using Emscripten -
Makefile.emscripten- rules for compiling this source using the Emscripten toolchain -
oa-bdw.c- autogenerated code for normalizing OA counters. -
oa-hsw.c -
oa-skl.c -
oa-chv.c