# Starboard Shared Implementations

`src/starboard/shared` and subdirectories contain all implementation code that
could concievably be shared between platforms.

## Organization

As much code as possible is pushed into the shared directory. Each subdirectory
`foo` means "files in here depend on *foo*."

All source locations are specified relative to `src/starboard/`.

 * `shared/iso/` - Implementation files that follow ISO C and C++ standards, but
    standards that are either new, or have historically had poor support on a
    variety of embedded platforms. Platforms that are ISO-compliant with the
    latest standards should be able to use these.
 * `shared/libevent/` - libevent-specific implementation files, for platforms
   that can build and run libevent. See `shared/libevent/README.md` for more
   information.
 * `shared/posix/` - POSIX-specific implementation files. Starboard
   implementations may pull some or all of this directory to implement Starboard
   APIs, if the platform is POSIX-compliant.
 * `shared/pthread/` - pthread-specific implementation files, for platforms that
   provide a *reasonable* implementation of POSIX threads. This is called out
   separately from POSIX, because we've found that there are some platforms that
   are fairly POSIX-y, except in their threading APIs.
 * `shared/starboard/` - Implementations of Starboard API functions that only
   rely on other Starboard API functions. Code in here should be reusable on any
   platform that implements the needed APIs.

