/*
 *
 *    Copyright (c) 2012-2013 Nest Labs, Inc.
 *    All rights reserved.
 *
 *    This document is the property of Nest. It is considered
 *    confidential and proprietary information.
 *
 *    This document may not be reproduced or transmitted in any form,
 *    in whole or in part, without the express written permission of
 *    Nest.
 *
 *    Description:
 *      This file defines processor-architecture-specific constants,
 *      interfaces and types required for LwIP performance
 *      measurement.
 *
 */

#ifndef NL_LWIP_LINUX_ARCH_PERF_H
#define NL_LWIP_LINUX_ARCH_PERF_H

#define PERF_START
#define PERF_STOP(s)

#define sys_profile_interval_set_pbuf_highwatermark(x,y)

#endif /* NL_LWIP_LINUX_ARCH_PERF_H */
