1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */
2*4dc78e53SAndroid Build Coastguard Worker /*
3*4dc78e53SAndroid Build Coastguard Worker * Copyright (c) 2013 Sassano Systems LLC <[email protected]>
4*4dc78e53SAndroid Build Coastguard Worker */
5*4dc78e53SAndroid Build Coastguard Worker
6*4dc78e53SAndroid Build Coastguard Worker #include "nl-default.h"
7*4dc78e53SAndroid Build Coastguard Worker
8*4dc78e53SAndroid Build Coastguard Worker #include <netlink/idiag/meminfo.h>
9*4dc78e53SAndroid Build Coastguard Worker
10*4dc78e53SAndroid Build Coastguard Worker #include "nl-idiag.h"
11*4dc78e53SAndroid Build Coastguard Worker
12*4dc78e53SAndroid Build Coastguard Worker /**
13*4dc78e53SAndroid Build Coastguard Worker * @ingroup idiag
14*4dc78e53SAndroid Build Coastguard Worker * @defgroup idiagnl_meminfo Inet Diag Memory Info
15*4dc78e53SAndroid Build Coastguard Worker *
16*4dc78e53SAndroid Build Coastguard Worker * @details
17*4dc78e53SAndroid Build Coastguard Worker * @idiagnl_doc{idiagnl_meminfo, Inet Diag Memory Info Documentation}
18*4dc78e53SAndroid Build Coastguard Worker * @{
19*4dc78e53SAndroid Build Coastguard Worker */
idiagnl_meminfo_alloc(void)20*4dc78e53SAndroid Build Coastguard Worker struct idiagnl_meminfo *idiagnl_meminfo_alloc(void)
21*4dc78e53SAndroid Build Coastguard Worker {
22*4dc78e53SAndroid Build Coastguard Worker return (struct idiagnl_meminfo *) nl_object_alloc(&idiagnl_meminfo_obj_ops);
23*4dc78e53SAndroid Build Coastguard Worker }
24*4dc78e53SAndroid Build Coastguard Worker
idiagnl_meminfo_get(struct idiagnl_meminfo * minfo)25*4dc78e53SAndroid Build Coastguard Worker void idiagnl_meminfo_get(struct idiagnl_meminfo *minfo)
26*4dc78e53SAndroid Build Coastguard Worker {
27*4dc78e53SAndroid Build Coastguard Worker nl_object_get((struct nl_object *) minfo);
28*4dc78e53SAndroid Build Coastguard Worker }
29*4dc78e53SAndroid Build Coastguard Worker
idiagnl_meminfo_put(struct idiagnl_meminfo * minfo)30*4dc78e53SAndroid Build Coastguard Worker void idiagnl_meminfo_put(struct idiagnl_meminfo *minfo)
31*4dc78e53SAndroid Build Coastguard Worker {
32*4dc78e53SAndroid Build Coastguard Worker nl_object_put((struct nl_object *) minfo);
33*4dc78e53SAndroid Build Coastguard Worker }
34*4dc78e53SAndroid Build Coastguard Worker
35*4dc78e53SAndroid Build Coastguard Worker /**
36*4dc78e53SAndroid Build Coastguard Worker * @name Attributes
37*4dc78e53SAndroid Build Coastguard Worker * @{
38*4dc78e53SAndroid Build Coastguard Worker */
idiagnl_meminfo_get_rmem(const struct idiagnl_meminfo * minfo)39*4dc78e53SAndroid Build Coastguard Worker uint32_t idiagnl_meminfo_get_rmem(const struct idiagnl_meminfo *minfo)
40*4dc78e53SAndroid Build Coastguard Worker {
41*4dc78e53SAndroid Build Coastguard Worker return minfo->idiag_rmem;
42*4dc78e53SAndroid Build Coastguard Worker }
43*4dc78e53SAndroid Build Coastguard Worker
idiagnl_meminfo_set_rmem(struct idiagnl_meminfo * minfo,uint32_t rmem)44*4dc78e53SAndroid Build Coastguard Worker void idiagnl_meminfo_set_rmem(struct idiagnl_meminfo *minfo, uint32_t rmem)
45*4dc78e53SAndroid Build Coastguard Worker {
46*4dc78e53SAndroid Build Coastguard Worker minfo->idiag_rmem = rmem;
47*4dc78e53SAndroid Build Coastguard Worker }
48*4dc78e53SAndroid Build Coastguard Worker
idiagnl_meminfo_get_wmem(const struct idiagnl_meminfo * minfo)49*4dc78e53SAndroid Build Coastguard Worker uint32_t idiagnl_meminfo_get_wmem(const struct idiagnl_meminfo *minfo)
50*4dc78e53SAndroid Build Coastguard Worker {
51*4dc78e53SAndroid Build Coastguard Worker return minfo->idiag_wmem;
52*4dc78e53SAndroid Build Coastguard Worker }
53*4dc78e53SAndroid Build Coastguard Worker
idiagnl_meminfo_set_wmem(struct idiagnl_meminfo * minfo,uint32_t wmem)54*4dc78e53SAndroid Build Coastguard Worker void idiagnl_meminfo_set_wmem(struct idiagnl_meminfo *minfo, uint32_t wmem)
55*4dc78e53SAndroid Build Coastguard Worker {
56*4dc78e53SAndroid Build Coastguard Worker minfo->idiag_wmem = wmem;
57*4dc78e53SAndroid Build Coastguard Worker }
58*4dc78e53SAndroid Build Coastguard Worker
idiagnl_meminfo_get_fmem(const struct idiagnl_meminfo * minfo)59*4dc78e53SAndroid Build Coastguard Worker uint32_t idiagnl_meminfo_get_fmem(const struct idiagnl_meminfo *minfo)
60*4dc78e53SAndroid Build Coastguard Worker {
61*4dc78e53SAndroid Build Coastguard Worker return minfo->idiag_fmem;
62*4dc78e53SAndroid Build Coastguard Worker }
63*4dc78e53SAndroid Build Coastguard Worker
idiagnl_meminfo_set_fmem(struct idiagnl_meminfo * minfo,uint32_t fmem)64*4dc78e53SAndroid Build Coastguard Worker void idiagnl_meminfo_set_fmem(struct idiagnl_meminfo *minfo, uint32_t fmem)
65*4dc78e53SAndroid Build Coastguard Worker {
66*4dc78e53SAndroid Build Coastguard Worker minfo->idiag_fmem = fmem;
67*4dc78e53SAndroid Build Coastguard Worker }
68*4dc78e53SAndroid Build Coastguard Worker
idiagnl_meminfo_get_tmem(const struct idiagnl_meminfo * minfo)69*4dc78e53SAndroid Build Coastguard Worker uint32_t idiagnl_meminfo_get_tmem(const struct idiagnl_meminfo *minfo)
70*4dc78e53SAndroid Build Coastguard Worker {
71*4dc78e53SAndroid Build Coastguard Worker return minfo->idiag_tmem;
72*4dc78e53SAndroid Build Coastguard Worker }
73*4dc78e53SAndroid Build Coastguard Worker
idiagnl_meminfo_set_tmem(struct idiagnl_meminfo * minfo,uint32_t tmem)74*4dc78e53SAndroid Build Coastguard Worker void idiagnl_meminfo_set_tmem(struct idiagnl_meminfo *minfo, uint32_t tmem)
75*4dc78e53SAndroid Build Coastguard Worker {
76*4dc78e53SAndroid Build Coastguard Worker minfo->idiag_tmem = tmem;
77*4dc78e53SAndroid Build Coastguard Worker }
78*4dc78e53SAndroid Build Coastguard Worker /** @} */
79*4dc78e53SAndroid Build Coastguard Worker
80*4dc78e53SAndroid Build Coastguard Worker /** @cond SKIP */
idiagnl_meminfo_compare(struct nl_object * _a,struct nl_object * _b,uint64_t attrs,int flags)81*4dc78e53SAndroid Build Coastguard Worker static uint64_t idiagnl_meminfo_compare(struct nl_object *_a, struct nl_object *_b,
82*4dc78e53SAndroid Build Coastguard Worker uint64_t attrs, int flags)
83*4dc78e53SAndroid Build Coastguard Worker {
84*4dc78e53SAndroid Build Coastguard Worker struct idiagnl_meminfo *a = (struct idiagnl_meminfo *) _a;
85*4dc78e53SAndroid Build Coastguard Worker struct idiagnl_meminfo *b = (struct idiagnl_meminfo *) _b;
86*4dc78e53SAndroid Build Coastguard Worker
87*4dc78e53SAndroid Build Coastguard Worker /* meminfo is a very simple object. It has no attribe flags (ce_mask),
88*4dc78e53SAndroid Build Coastguard Worker * hence compare just returns 0 or 1, not a bit mask of attributes. */
89*4dc78e53SAndroid Build Coastguard Worker return a->idiag_rmem != b->idiag_rmem ||
90*4dc78e53SAndroid Build Coastguard Worker a->idiag_wmem != b->idiag_wmem ||
91*4dc78e53SAndroid Build Coastguard Worker a->idiag_fmem != b->idiag_fmem ||
92*4dc78e53SAndroid Build Coastguard Worker a->idiag_tmem != b->idiag_tmem;
93*4dc78e53SAndroid Build Coastguard Worker }
94*4dc78e53SAndroid Build Coastguard Worker
95*4dc78e53SAndroid Build Coastguard Worker struct nl_object_ops idiagnl_meminfo_obj_ops = {
96*4dc78e53SAndroid Build Coastguard Worker .oo_name = "idiag/idiag_meminfo",
97*4dc78e53SAndroid Build Coastguard Worker .oo_size = sizeof(struct idiagnl_meminfo),
98*4dc78e53SAndroid Build Coastguard Worker .oo_compare = idiagnl_meminfo_compare,
99*4dc78e53SAndroid Build Coastguard Worker };
100*4dc78e53SAndroid Build Coastguard Worker /** @endcond */
101*4dc78e53SAndroid Build Coastguard Worker /** @} */
102