Below is a patch for git.lttng.org/ltt-control/liblttctl/lttctl.h. I hope I have the patch-submission procedure and mailing list format right.
I have two other large patches to submit, for liblttctl/liblttctl.c and lttctl/lttctl.c (more to follow), both about 1500 lines because the code underwent a very thorough rewrite. The intent in both cases is to document the functions, retrofit a version history, improve the error messages, tighten parameter checking and error handling, and fix a number of bugs (memory leaks and the like). Should I submit them like this one, or deposit them elsewhere? lttctl.h.diff ------ --- ../ltt-control-0.89-792f03c/liblttctl/lttctl.h 2011-05-12 08:44:27.000000000 -0400 +++ ../ltt-control-0.89-792f03c.dut/liblttctl/lttctl.h 2011-12-02 15:05:53.959130072 -0500 @@ -20,28 +20,77 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Version History: + * Version 1.0 2009-08-12 Pierre-Marc Fournier pierre-marc.fourn...@polymtl.ca + * Moved out of git.lttng.org trunk/ltt-control. + * Version 1.1 2009-11-12 Mathieu Desnoyers mathieu.desnoy...@efficios.com + * Added lttctl_set_channel_switch_timer. + * Version 1.2 2010-03-03 Mathieu Desnoyers mathieu.desnoy...@efficios.com + * Changed flag from _LIBLTT_H to _LTTCTL_H. + * Version 1.3 2011-11-28 Daniel U. Thibault daniel.thiba...@drdc-rddc.gc.ca + * Retrofitted version history. + * Added defines (some imported from lttctlkerninterface.c) which could be handy elsewhere + * (pieces of debugfs paths, LTT_BUFFERS_MIN_SIZE, LTT_BUFFERS_MAX_SIZE, ROUNDINTUP macro). + * Cosmetic change of the function headers: *name became *tracename. */ #ifndef _LTTCTL_H #define _LTTCTL_H +/* + * Imported from lttctlkerninterface.c (where they are static const char* const) + * The names were prefixed with "LTT_" and suffixed with "_PATH" (as needed) to avoid name collisions + */ +#define LTT_PATH "/ltt" +#define LTTD_PATH "/lttd" +//To these two we appended "/" +#define LTT_CONTROL_PATH "/control/" +#define LTT_CHANNEL_PATH "/channel/" +//#define LTT_MARKERS_PATH "/markers" +//#define LTT_MARKERS_INFO_PATH "/info" +#define LTT_MARKERS_ENABLE_PATH "/enable" +//These are new: +#define LTT_SETUP_TRACE_PATH "/setup_trace" +#define LTT_ALLOC_TRACE_PATH "/alloc" +#define LTT_DESTROY_TRACE_PATH "/destroy_trace" +#define LTT_ENABLE_TRACE_PATH "/enabled" +#define LTT_TRACE_TRANSPORT_PATH "/trans" +#define LTT_BUFFERS_OVERWRITE_PATH "/overwrite" +#define LTT_BUFFERS_NUMBER_PATH "/subbuf_num" +#define LTT_BUFFERS_SIZE_PATH "/subbuf_size" +#define LTT_BUFFERS_TIMER_PATH "/switch_timer" + +#define LTT_BUFFERS_MIN_SIZE (0x100) +//lttctl.c's struct channel_option uses int for its bufsize (sub-buffer size); +//ltt-private.h uses uint32_t for sb_size, the subbuf_size; +//A few files use an unsigned long instead (lttctlkerninterface.c, .h) +//Note that "unsigned" is "unsigned int" according to the C99 spec +//int maxes out with 0x7FFFFFFF, but we want a power of two: +#define LTT_BUFFERS_MAX_SIZE (0x40000000) + +//Based on: Sean Eron Anderson (2005), "Bit Twiddling Hacks: Round up to the next highest power of 2", http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 +//This (rather clunky) macro can handle ints of all byte widths from char (1 byte) to long long (8 bytes); +//It is designed to be invoked on a variable (not an expression), as the standalone line "ROUNDINTUP(variable);" +#define ROUNDINTUP(i) { i--; i |= i >> 1; i |= i >> 2; if (sizeof(i) > 1) { i |= i >> 4; if (sizeof(i) > 2) { i |= i >> 8; if (sizeof(i) > 4) { i |= i >> 16; } } } i++; } + int lttctl_init(void); int lttctl_destroy(void); -int lttctl_setup_trace(const char *name); -int lttctl_destroy_trace(const char *name); -int lttctl_alloc_trace(const char *name); -int lttctl_start(const char *name); -int lttctl_pause(const char *name); -int lttctl_set_trans(const char *name, const char *trans); -int lttctl_set_channel_enable(const char *name, const char *channel, +int lttctl_setup_trace(const char *tracename); +int lttctl_destroy_trace(const char *tracename); +int lttctl_alloc_trace(const char *tracename); +int lttctl_start(const char *tracename); +int lttctl_pause(const char *tracename); +int lttctl_set_trans(const char *tracename, const char *trans); +int lttctl_set_channel_enable(const char *tracename, const char *channel, int enable); -int lttctl_set_channel_overwrite(const char *name, const char *channel, +int lttctl_set_channel_overwrite(const char *tracename, const char *channel, int overwrite); -int lttctl_set_channel_subbuf_num(const char *name, const char *channel, +int lttctl_set_channel_subbuf_num(const char *tracename, const char *channel, unsigned subbuf_num); -int lttctl_set_channel_subbuf_size(const char *name, const char *channel, +int lttctl_set_channel_subbuf_size(const char *tracename, const char *channel, unsigned subbuf_size); -int lttctl_set_channel_switch_timer(const char *name, const char *channel, +int lttctl_set_channel_switch_timer(const char *tracename, const char *channel, unsigned switch_timer); /* Helper functions */ ------ Daniel U. Thibault R & D pour la défense Canada - Valcartier (RDDC Valcartier) / Defence R&D Canada - Valcartier (DRDC Valcartier) Système de systèmes (SdS) / System of Systems (SoS) Solutions informatiques et expérimentations (SIE) / Computing Solutions and Experimentations (CSE) 2459 Boul. Pie XI Nord Québec, QC G3J 1X5 CANADA Vox : (418) 844-4000 x4245 Fax : (418) 844-4538 NAC: 918V QSDJ Gouvernement du Canada / Government of Canada <http://www.valcartier.drdc-rddc.gc.ca/> _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev