From c56a649bc3fcd633217b6979dea67df0b059b296 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Wed, 21 May 2014 18:33:14 +0200 Subject: [PATCH hurd 6/8] libpager: annotate objects managed by libports 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 b583f02..422e8f4 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 + #include "priv.h" /* Create and return a new pager with user info UPI. */ @@ -50,6 +52,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)); @@ -58,5 +77,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.4