From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quentin Monnet Subject: Re: [PATCH bpf-next 2/3] bpf: btf: add btf json print functionality Date: Fri, 22 Jun 2018 11:39:13 +0100 Message-ID: References: <20180620203051.223156973@fb.com> <20180620203703.101156292@fb.com> <3db6047a-101a-2ed1-9ca3-9e90b45ea00f@netronome.com> <20180622102428.GA3050@w1t1fb> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: Daniel Borkmann , Martin KaFai Lau , Alexei Starovoitov , Yonghong Song , Jakub Kicinski , "David S. Miller" , netdev@vger.kernel.org, kernel-team@fb.com, linux-kernel@vger.kernel.org To: Okash Khawaja Return-path: In-Reply-To: <20180622102428.GA3050@w1t1fb> Content-Language: en-GB Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org 2018-06-22 11:24 UTC+0100 ~ Okash Khawaja > On Thu, Jun 21, 2018 at 11:42:59AM +0100, Quentin Monnet wrote: >> Hi Okash, > hi and sorry about delay in responding. the email got routed to > incorrect folder. >> >> 2018-06-20 13:30 UTC-0700 ~ Okash Khawaja >>> This consumes functionality exported in the previous patch. It does the >>> main job of printing with BTF data. This is used in the following patch >>> to provide a more readable output of a map's dump. It relies on >>> json_writer to do json printing. Below is sample output where map keys >>> are ints and values are of type struct A: >>> >>> typedef int int_type; >>> enum E { >>> E0, >>> E1, >>> }; >>> >>> struct B { >>> int x; >>> int y; >>> }; >>> >>> struct A { >>> int m; >>> unsigned long long n; >>> char o; >>> int p[8]; >>> int q[4][8]; >>> enum E r; >>> void *s; >>> struct B t; >>> const int u; >>> int_type v; >>> unsigned int w1: 3; >>> unsigned int w2: 3; >>> }; >>> >>> $ sudo bpftool map dump -p id 14 >>> [{ >>> "key": 0 >>> },{ >>> "value": { >>> "m": 1, >>> "n": 2, >>> "o": "c", >>> "p": [15,16,17,18,15,16,17,18 >>> ], >>> "q": [[25,26,27,28,25,26,27,28 >>> ],[35,36,37,38,35,36,37,38 >>> ],[45,46,47,48,45,46,47,48 >>> ],[55,56,57,58,55,56,57,58 >>> ] >>> ], >>> "r": 1, >>> "s": 0x7ffff6f70568, >> >> Hexadecimal values, without quotes, are not valid JSON. Please stick to >> decimal values. > ah sorry, i used a buggy json validator. this should be a quick fix. > which would be better: pointers be output hex strings or integers? I would go for integers. Although this is harder to read for humans, it is easier to process for machines, which remain the primary targets for JSON output. Quentin