1/* 2 * Copyright (c) 2008 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * The contents of this file constitute Original Code as defined in and 7 * are subject to the Apple Public Source License Version 1.1 (the 8 * "License"). You may not use this file except in compliance with the 9 * License. Please obtain a copy of the License at 10 * http://www.apple.com/publicsource and read it before using this file. 11 * 12 * This Original Code and all software distributed under the License are 13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17 * License for the specific language governing rights and limitations 18 * under the License. 19 * 20 * @APPLE_LICENSE_HEADER_END@ 21 */ 22 23#include <string.h> 24#include <stdlib.h> 25#include <assert.h> 26#include "libtop.h" 27#include "user.h" 28#include "generic.h" 29#include "uinteger.h" 30 31static bool sysmach_insert_cell(struct statistic *s, const void *sample) { 32 const libtop_psamp_t *psamp = sample; 33 char buf[GENERIC_INT_SIZE]; 34 35 if(top_uinteger_format_result(buf, sizeof(buf), 36 psamp->syscalls_mach.now, 37 psamp->syscalls_mach.previous, 38 psamp->syscalls_mach.began)) { 39 return true; 40 } 41 42 return generic_insert_cell(s, buf); 43} 44 45static struct statistic_callbacks callbacks = { 46 .draw = generic_draw, 47 .resize_cells = generic_resize_cells, 48 .move_cells = generic_move_cells, 49 .get_request_size = generic_get_request_size, 50 .get_minimum_size = generic_get_minimum_size, 51 .insert_cell = sysmach_insert_cell, 52 .reset_insertion = generic_reset_insertion 53}; 54 55struct statistic *top_sysmach_create(WINDOW *parent, const char *name) { 56 return create_statistic(STATISTIC_SYSMACH, parent, NULL, &callbacks, 57 name); 58} 59 60 61static bool sysbsd_insert_cell(struct statistic *s, const void *sample) { 62 const libtop_psamp_t *psamp = sample; 63 char buf[GENERIC_INT_SIZE]; 64 65 if(top_uinteger_format_result(buf, sizeof(buf), 66 psamp->syscalls_bsd.now, 67 psamp->syscalls_bsd.previous, 68 psamp->syscalls_bsd.began)) { 69 return true; 70 } 71 72 return generic_insert_cell(s, buf); 73} 74 75static struct statistic_callbacks sysbsd_callbacks = { 76 .draw = generic_draw, 77 .resize_cells = generic_resize_cells, 78 .move_cells = generic_move_cells, 79 .get_request_size = generic_get_request_size, 80 .get_minimum_size = generic_get_minimum_size, 81 .insert_cell = sysbsd_insert_cell, 82 .reset_insertion = generic_reset_insertion 83}; 84 85struct statistic *top_sysbsd_create(WINDOW *parent, const char *name) { 86 return create_statistic(STATISTIC_SYSBSD, parent, NULL, &sysbsd_callbacks, 87 name); 88} 89 90