ThingWorx Edge C SDK > Porting to Another Platform > Requirements for Platforms
  
Requirements for Platforms
The ThingWorx Edge C SDK is designed for easy porting to even the most basic of platforms. The key requirements for the platform are as follows:
ANSI C compiler and run time support
TCP/IP stack
Dynamic memory allocation (malloc, calloc, free)
Millisecond granularity timer, preferably with a Real Time Clock
Some form of Mutual Exclusion capability (Mutex, Critical Section, Spinlock, etc.)
Tick Timer Interrupt/Callback capability (if using the built-in tasker)
File System functions if using the File Transfer capability of the SDK
Threads (optional)
All custom configurations for a platform are typically encapsulated in a single C source and header file pair. For example, the SDK comes with example ports for Windows and Linux (or any POSIX environment). The files are located in the porting directory and are twWindows.h/twWindows.c and twLinux.h/twLinux.c respectively. It is strongly recommended that you start with one of these files as the basis for your porting efforts. The Linux port will be used as an example in the sections that follow.
For the platforms supported by this release of the ThingWorx C SDK, refer to the ThingWorx Edge Requirements and Compatibility Matrix, which is available on the PTC Support site, Reference Documents page for ThingWorx products.