Changeset 196c253 in mainline for kernel/generic/src/sysinfo/sysinfo.c


Ignore:
Timestamp:
2012-03-02T15:53:49Z (13 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3113d47
Parents:
efb8d15
Message:

add support for private/instance data also for the other sysinfo generated content

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/sysinfo/sysinfo.c

    refb8d15 r196c253  
    11/*
    22 * Copyright (c) 2006 Jakub Vana
     3 * Copyright (c) 2012 Martin Decky
    34 * All rights reserved.
    45 *
     
    358359 *             a new root item (NULL for global sysinfo root).
    359360 * @param fn   Numeric value generator function.
    360  *
    361  */
    362 void sysinfo_set_item_fn_val(const char *name, sysinfo_item_t **root,
    363     sysinfo_fn_val_t fn)
     361 * @param data Private data.
     362 *
     363 */
     364void sysinfo_set_item_gen_val(const char *name, sysinfo_item_t **root,
     365    sysinfo_fn_val_t fn, void *data)
    364366{
    365367        /* Protect sysinfo tree consistency */
     
    372374        if (item != NULL) {
    373375                item->val_type = SYSINFO_VAL_FUNCTION_VAL;
    374                 item->val.fn_val = fn;
     376                item->val.gen_val.fn = fn;
     377                item->val.gen_val.data = data;
    375378        }
    376379       
     
    389392 *             a new root item (NULL for global sysinfo root).
    390393 * @param fn   Binary data generator function.
    391  *
    392  */
    393 void sysinfo_set_item_fn_data(const char *name, sysinfo_item_t **root,
    394     sysinfo_fn_data_t fn)
     394 * @param data Private data.
     395 *
     396 */
     397void sysinfo_set_item_gen_data(const char *name, sysinfo_item_t **root,
     398    sysinfo_fn_data_t fn, void *data)
    395399{
    396400        /* Protect sysinfo tree consistency */
     
    403407        if (item != NULL) {
    404408                item->val_type = SYSINFO_VAL_FUNCTION_DATA;
    405                 item->val.fn_data = fn;
     409                item->val.gen_data.fn = fn;
     410                item->val.gen_data.data = data;
    406411        }
    407412       
     
    512517                        break;
    513518                case SYSINFO_VAL_FUNCTION_VAL:
    514                         val = cur->val.fn_val(cur);
     519                        val = cur->val.gen_val.fn(cur, cur->val.gen_val.data);
    515520                        printf(" -> %" PRIun" (%#" PRIxn ") [generated]\n", val,
    516521                            val);
     
    518523                case SYSINFO_VAL_FUNCTION_DATA:
    519524                        /* N.B.: No data was actually returned (only a dry run) */
    520                         (void) cur->val.fn_data(cur, &size, true);
     525                        (void) cur->val.gen_data.fn(cur, &size, true,
     526                            cur->val.gen_data.data);
    521527                        printf(" (%zu bytes) [generated]\n", size);
    522528                        break;
     
    604610                        break;
    605611                case SYSINFO_VAL_FUNCTION_VAL:
    606                         ret.val = item->val.fn_val(item);
     612                        ret.val = item->val.gen_val.fn(item, item->val.gen_val.data);
    607613                        break;
    608614                case SYSINFO_VAL_FUNCTION_DATA:
    609                         ret.data.data = item->val.fn_data(item, &ret.data.size,
    610                             dry_run);
     615                        ret.data.data = item->val.gen_data.fn(item, &ret.data.size,
     616                            dry_run, item->val.gen_data.data);
    611617                        break;
    612618                }
Note: See TracChangeset for help on using the changeset viewer.