Changeset 9dae191e in mainline for kernel/generic/include


Ignore:
Timestamp:
2010-04-18T00:24:40Z (16 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a80687e5
Parents:
d8e3467
Message:

sysinfo API cleanup

  • better support for generated subtrees
  • synchronization
  • memory management (generated items cleanup)
  • simplier sysinfo_dump()

remove separate statistical syscalls, replace with virtual sysinfo items (some functionality is still missing)

  • naming consolidation
  • cleaner API
  • proper synchronization

minor renames

  • zone_print_list() → zones_print_list()
  • zone_busy_and_free() → zones_stats()
Location:
kernel/generic/include
Files:
4 deleted
5 edited
2 moved

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/mm/frame.h

    rd8e3467 r9dae191e  
    169169extern bool zone_merge(size_t, size_t);
    170170extern void zone_merge_all(void);
    171 extern uint64_t zone_total_size(void);
    172 extern void zone_busy_and_free(uint64_t *out_busy, uint64_t *out_free);
     171extern uint64_t zones_total_size(void);
     172extern void zones_stats(uint64_t *, uint64_t *, uint64_t *, uint64_t *);
    173173
    174174/*
    175175 * Console functions
    176176 */
    177 extern void zone_print_list(void);
     177extern void zones_print_list(void);
    178178extern void zone_print_one(size_t);
    179179
  • kernel/generic/include/proc/task.h

    rd8e3467 r9dae191e  
    5656#include <ipc/kbox.h>
    5757#include <mm/as.h>
    58 
    59 #include <ps/taskinfo.h>
     58#include <sysinfo/abi.h>
    6059
    6160struct thread;
     
    8180        task_id_t taskid;
    8281        /** Task security context. */
    83         context_id_t context;   
     82        context_id_t context;
    8483
    8584        /** Number of references (i.e. threads). */
     
    8988
    9089        /** Task capabilities. */
    91         cap_t capabilities;     
     90        cap_t capabilities;
    9291
    9392        /* IPC stuff */
    9493        answerbox_t answerbox;  /**< Communication endpoint */
    9594        phone_t phones[IPC_MAX_PHONES];
    96         task_ipc_info_t ipc_info; /**< IPC statistics */
     95        stats_ipc_t ipc_info;  /**< IPC statistics */
    9796        /**
    9897         * Active asynchronous messages. It is used for limiting uspace to
     
    120119        mutex_t futexes_lock;
    121120        /** B+tree of futexes referenced by this task. */
    122         btree_t futexes;       
     121        btree_t futexes;
    123122       
    124123        /** Accumulated accounting. */
  • kernel/generic/include/proc/thread.h

    rd8e3467 r9dae191e  
    6969#define THREAD_FLAG_NOATTACH    (1 << 3)
    7070
    71 /* We need state_t enum definition */
    72 #include <ps/taskinfo.h>
     71/** Thread states. */
     72typedef enum {
     73        /** It is an error, if thread is found in this state. */
     74        Invalid,
     75        /** State of a thread that is currently executing on some CPU. */
     76        Running,
     77        /** Thread in this state is waiting for an event. */
     78        Sleeping,
     79        /** State of threads in a run queue. */
     80        Ready,
     81        /** Threads are in this state before they are first readied. */
     82        Entering,
     83        /** After a thread calls thread_exit(), it is put into Exiting state. */
     84        Exiting,
     85        /** Threads that were not detached but exited are Lingering. */
     86        Lingering
     87} state_t;
    7388
    7489/** Thread structure. There is one per thread. */
  • kernel/generic/include/syscall/syscall.h

    rd8e3467 r9dae191e  
    7171        SYS_IPC_REGISTER_IRQ,
    7272        SYS_IPC_UNREGISTER_IRQ,
    73 
     73       
    7474        SYS_EVENT_SUBSCRIBE,
    7575       
     
    8989        SYS_DEBUG_ENABLE_CONSOLE,
    9090        SYS_DEBUG_DISABLE_CONSOLE,
    91 
    92         SYS_PS_GET_CPU_INFO,
    93         SYS_PS_GET_MEM_INFO,
    94         SYS_PS_GET_TASKS,
    95         SYS_PS_GET_TASK_INFO,
    96         SYS_PS_GET_THREADS,
    97         SYS_PS_GET_UPTIME,
    98         SYS_PS_GET_LOAD,
    99 
     91       
    10092        SYS_IPC_CONNECT_KBOX,
    10193        SYSCALL_END
  • kernel/generic/include/sysinfo/abi.h

    rd8e3467 r9dae191e  
    11/*
    2  * Copyright (c) 2010 Stanislav Kozina
     2 * Copyright (c) 2010 Martin Decky
    33 * All rights reserved.
    44 *
     
    3333 */
    3434
    35 #ifndef KERN_PS_CPU_H_
    36 #define KERN_PS_CPU_H_
     35#ifndef KERN_ABI_H_
     36#define KERN_ABI_H_
     37
     38#define LOAD_STEPS        3
     39#define TASK_NAME_BUFLEN  20
    3740
    3841typedef struct {
     
    4144        uint64_t idle_ticks;
    4245        uint64_t busy_ticks;
    43 } uspace_cpu_info_t;
     46} stats_cpu_t;
     47
     48typedef struct {
     49        uint64_t total;
     50        uint64_t unavail;
     51        uint64_t used;
     52        uint64_t free;
     53} stats_physmem_t;
     54
     55typedef struct {
     56        uint64_t call_sent;
     57        uint64_t call_recieved;
     58        uint64_t answer_sent;
     59        uint64_t answer_recieved;
     60        uint64_t irq_notif_recieved;
     61        uint64_t forwarded;
     62} stats_ipc_t;
     63
     64typedef struct {
     65        char name[TASK_NAME_BUFLEN];
     66        size_t virtmem;
     67        size_t threads;
     68        uint64_t ucycles;
     69        uint64_t kcycles;
     70        stats_ipc_t ipc_info;
     71} stats_task_t;
     72
     73typedef uint32_t load_t;
    4474
    4575#endif
  • kernel/generic/include/sysinfo/stats.h

    rd8e3467 r9dae191e  
    11/*
    2  * Copyright (c) 2010 Stanislav Kozina
     2 * Copyright (c) 2010 Martin Decky
    33 * All rights reserved.
    44 *
     
    3333 */
    3434
    35 #ifndef KERN_PS_UPTIME_H_
    36 #define KERN_PS_UPTIME_H_
     35#ifndef KERN_STATS_H_
     36#define KERN_STATS_H_
    3737
    38 extern int sys_ps_get_uptime(uint64_t *user_load);
     38extern void kload(void *arg);
     39extern void stats_init(void);
    3940
    4041#endif
  • kernel/generic/include/sysinfo/sysinfo.h

    rd8e3467 r9dae191e  
    5959typedef unative_t (*sysinfo_fn_val_t)(struct sysinfo_item *);
    6060typedef void *(*sysinfo_fn_data_t)(struct sysinfo_item *, size_t *);
    61 typedef struct sysinfo_item *(*sysinfo_fn_subtree_t)(const char *);
    6261
    6362typedef struct {
     
    7372} sysinfo_item_val_t;
    7473
     74typedef struct {
     75        sysinfo_item_val_type_t tag;
     76        union {
     77                unative_t val;
     78                sysinfo_data_t data;
     79        };
     80} sysinfo_return_t;
     81
     82typedef sysinfo_return_t (*sysinfo_fn_subtree_t)(const char *);
     83
    7584typedef union {
    7685        struct sysinfo_item *table;
    77         sysinfo_fn_subtree_t find_item;
     86        sysinfo_fn_subtree_t get_data;
    7887} sysinfo_subtree_t;
    7988
     
    9099} sysinfo_item_t;
    91100
    92 typedef struct {
    93         sysinfo_item_val_type_t tag;
    94         union {
    95                 unative_t val;
    96                 sysinfo_data_t data;
    97         };
    98 } sysinfo_return_t;
    99 
    100 extern void sysinfo_init(void);
    101 
    102101extern void sysinfo_set_item_val(const char *, sysinfo_item_t **, unative_t);
    103102extern void sysinfo_set_item_data(const char *, sysinfo_item_t **, void *,
    104103    size_t);
    105 extern void sysinfo_set_item_val_fn(const char *, sysinfo_item_t **,
     104extern void sysinfo_set_item_fn_val(const char *, sysinfo_item_t **,
    106105    sysinfo_fn_val_t);
    107 extern void sysinfo_set_item_data_fn(const char *, sysinfo_item_t **,
     106extern void sysinfo_set_item_fn_data(const char *, sysinfo_item_t **,
    108107    sysinfo_fn_data_t);
    109108extern void sysinfo_set_item_undefined(const char *, sysinfo_item_t **);
    110109
    111 extern sysinfo_return_t sysinfo_get_item(const char *, sysinfo_item_t **);
    112 extern void sysinfo_dump(sysinfo_item_t **, unsigned int);
     110extern void sysinfo_set_subtree_fn(const char *, sysinfo_item_t **,
     111    sysinfo_fn_subtree_t);
     112
     113extern void sysinfo_init(void);
     114extern void sysinfo_dump(sysinfo_item_t *);
    113115
    114116unative_t sys_sysinfo_get_tag(void *, size_t);
Note: See TracChangeset for help on using the changeset viewer.