/*
 *
 *    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- and operating
 *      system- specific constants and types required for building
 *      LwIP against DARWIN.
 *
 */

#ifndef NL_LWIP_DARWIN_ARCH_SYS_ARCH_H
#define NL_LWIP_DARWIN_ARCH_SYS_ARCH_H

/* Preprocessor Macros */

#define SYS_MBOX_NULL NULL
#define SYS_SEM_NULL  NULL

/* Forward Declarations */

struct sys_mbox;
struct sys_sem;
struct sys_thread;

/* Type Definitions */

typedef struct sys_mbox *sys_mbox_t;
typedef struct sys_sem *sys_sem_t;
typedef struct sys_thread *sys_thread_t;


#endif /* NL_LWIP_DARWIN_ARCH_SYS_ARCH_H */
