Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / src / lwip / standalone / arch / perf.h
1 /*
2  *
3  *    Copyright (c) 2020 Project CHIP Authors
4  *    Copyright (c) 2014-2017 Nest Labs, Inc.
5  *    Copyright (c) 2001-2003 Swedish Institute of Computer Science.
6  *    All rights reserved.
7  *
8  *    Licensed under the Apache License, Version 2.0 (the "License");
9  *    you may not use this file except in compliance with the License.
10  *    You may obtain a copy of the License at
11  *
12  *        http://www.apache.org/licenses/LICENSE-2.0
13  *
14  *    Unless required by applicable law or agreed to in writing, software
15  *    distributed under the License is distributed on an "AS IS" BASIS,
16  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  *    See the License for the specific language governing permissions and
18  *    limitations under the License.
19  */
20
21 /*
22  * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
23  * All rights reserved.
24  *
25  * Redistribution and use in source and binary forms, with or without modification,
26  * are permitted provided that the following conditions are met:
27  *
28  * 1. Redistributions of source code must retain the above copyright notice,
29  *    this list of conditions and the following disclaimer.
30  * 2. Redistributions in binary form must reproduce the above copyright notice,
31  *    this list of conditions and the following disclaimer in the documentation
32  *    and/or other materials provided with the distribution.
33  * 3. The name of the author may not be used to endorse or promote products
34  *    derived from this software without specific prior written permission.
35  *
36  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
38  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
39  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
40  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
41  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
42  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
43  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
44  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
45  * OF SUCH DAMAGE.
46  *
47  * This file is part of the lwIP TCP/IP stack.
48  *
49  * Author: Adam Dunkels <adam@sics.se>
50  *
51  */
52 #ifndef __ARCH_PERF_H__
53 #define __ARCH_PERF_H__
54
55 #include <sys/times.h>
56
57 #ifdef PERF
58 #define PERF_START                                                                                                                 \
59     {                                                                                                                              \
60         unsigned long __c1l, __c1h, __c2l, __c2h;                                                                                  \
61         __asm__(".byte 0x0f, 0x31" : "=a"(__c1l), "=d"(__c1h))
62 #define PERF_STOP(x)                                                                                                               \
63     __asm__(".byte 0x0f, 0x31" : "=a"(__c2l), "=d"(__c2h));                                                                        \
64     perf_print(__c1l, __c1h, __c2l, __c2h, x);                                                                                     \
65     }
66
67 /*#define PERF_START do { \
68                      struct tms __perf_start, __perf_end; \
69                      times(&__perf_start)
70 #define PERF_STOP(x) times(&__perf_end); \
71                      perf_print_times(&__perf_start, &__perf_end, x);\
72                      } while(0)*/
73 #else                /* PERF */
74 #define PERF_START   /* null definition */
75 #define PERF_STOP(x) /* null definition */
76 #endif               /* PERF */
77
78 void perf_print(unsigned long c1l, unsigned long c1h, unsigned long c2l, unsigned long c2h, char * key);
79
80 void perf_print_times(struct tms * start, struct tms * end, char * key);
81
82 void perf_init(char * fname);
83
84 #define sys_profile_interval_set_pbuf_highwatermark(x, y)
85 #define sys_profile_pbuf_allocate(pbuf)
86 #define sys_profile_pbuf_free(pbuf)
87 #define sys_profile_pbuf_transfer(x, y)
88
89 #endif /* __ARCH_PERF_H__ */