/*
 *
 *    Copyright (c) 2012 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_FREERTOS_ARCH_PERF_H
#define NL_LWIP_FREERTOS_ARCH_PERF_H

#define PERF_START
#define PERF_STOP(s)

#define sys_profile_interval_set_pbuf_highwatermark(x,y)
#define sys_profile_pbuf_allocate(pbuf)
#define sys_profile_pbuf_free(pbuf)
#define sys_profile_pbuf_transfer(x, y)

#endif /* NL_LWIP_FREERTOS_ARCH_PERF_H */
