Statistics
| Branch: | Revision:

root / drivers / tapdisk-stats.h @ abdb293f

History | View | Annotate | Download (2.4 kB)

1
/*
2
 * Copyright (c) 2010, Citrix Systems, Inc.
3
 *
4
 * All rights reserved.
5
 *
6
 * Redistribution and use in source and binary forms, with or without
7
 * modification, are permitted provided that the following conditions are met:
8
 *     * Redistributions of source code must retain the above copyright
9
 *       notice, this list of conditions and the following disclaimer.
10
 *     * Redistributions in binary form must reproduce the above copyright
11
 *       notice, this list of conditions and the following disclaimer in the
12
 *       documentation and/or other materials provided with the distribution.
13
 *     * Neither the name of XenSource Inc. nor the names of its contributors
14
 *       may be used to endorse or promote products derived from this software
15
 *       without specific prior written permission.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21
 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
 */
29

    
30
#ifndef _TAPDISK_STATS_H_
31
#define _TAPDISK_STATS_H_
32

    
33
#include <string.h>
34

    
35
#define TD_STATS_MAX_DEPTH 8
36

    
37
struct tapdisk_stats_ctx {
38
        void           *pos;
39

    
40
        void           *buf;
41
        size_t          size;
42

    
43
        int             n_elem[TD_STATS_MAX_DEPTH];
44
        int             depth;
45
};
46

    
47
typedef struct tapdisk_stats_ctx td_stats_t;
48

    
49
static inline void
50
tapdisk_stats_init(td_stats_t *st, char *buf, size_t size)
51
{
52
        memset(st, 0, sizeof(*st));
53

    
54
        st->pos  = buf;
55
        st->buf  = buf;
56
        st->size = size;
57
}
58

    
59
static inline size_t
60
tapdisk_stats_length(td_stats_t *st)
61
{
62
        return st->pos - st->buf;
63
}
64

    
65
void tapdisk_stats_enter(td_stats_t *st, char t);
66
void tapdisk_stats_leave(td_stats_t *st, char t);
67
void tapdisk_stats_field(td_stats_t *st, const char *key, const char *conv, ...);
68
void tapdisk_stats_val(td_stats_t *st, const char *conv, ...);
69

    
70
#endif /* _TAPDISK_STATS_H_ */