Label _pager_class and provide a function which prints a human-readable description of a pager object.
* libpager/pager-create.c (format_debug_info): New function. (create_class): Label _pager_class. --- libpager/pager-create.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libpager/pager-create.c b/libpager/pager-create.c index 1fc15b8..079aa5c 100644 --- a/libpager/pager-create.c +++ b/libpager/pager-create.c @@ -15,6 +15,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <stdio.h> + #include "priv.h" /* Create and return a new pager with user info UPI. */ @@ -52,6 +54,23 @@ pager_create (struct user_pager_info *upi, return p; } +/* Provide a human-readable description of the given pager object. */ +static error_t +format_debug_info (const void *port, char *buffer, size_t size) +{ + const struct pager *pager = port; + const struct port_info *pi = port; + + snprintf (buffer, size, + "bucket: %s, class: %s, may_cache: %d", + pi->bucket->label, + pi->class->label, + /* XXX I have no idea what might be interesting to print + here, but it is straight forward to add stuff. */ + pager->may_cache); + + return 0; +} /* This causes the function to be run at startup by compiler magic. */ static void create_class (void) __attribute__ ((constructor)); @@ -60,5 +79,6 @@ static void create_class () { _pager_class = ports_create_class (_pager_clean, _pager_real_dropweak); + ports_label_class (_pager_class, "_pager_class", format_debug_info); (void) &create_class; /* Avoid warning */ } -- 2.1.1