git-svn-id: http://webrtc.googlecode.com/svn/trunk@6 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/system_wrappers/source/thread_linux.h b/system_wrappers/source/thread_linux.h
new file mode 100644
index 0000000..3e2b908
--- /dev/null
+++ b/system_wrappers/source/thread_linux.h
@@ -0,0 +1,69 @@
+/*
+ *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_LINUX_H_
+#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_LINUX_H_
+
+#include "thread_wrapper.h"
+#include <pthread.h>
+
+namespace webrtc {
+class EventWrapper;
+
+class ThreadLinux : public ThreadWrapper
+{
+public:
+    static ThreadWrapper* Create(ThreadRunFunction func, ThreadObj obj,
+                                 ThreadPriority prio, const char* threadName);
+
+    ThreadLinux(ThreadRunFunction func, ThreadObj obj, ThreadPriority prio,
+                const char* threadName);
+    ~ThreadLinux();
+
+    // From ThreadWrapper
+    virtual void SetNotAlive();
+    virtual bool Start(unsigned int& id);
+    // Not implemented on Mac
+    virtual bool SetAffinity(const int* processorNumbers,
+                             unsigned int amountOfProcessors);
+    virtual bool Stop();
+    virtual bool Shutdown();
+
+    void Run();
+
+private:
+    int Construct();
+
+private:
+    // processing function
+    ThreadRunFunction   _runFunction;
+    ThreadObj           _obj;
+
+    // internal state
+    bool                    _alive;
+    bool                    _dead;
+    ThreadPriority          _prio;
+    EventWrapper*           _event;
+
+    // zero-terminated thread name string
+    char                    _name[kThreadMaxNameLength];
+    bool                    _setThreadName;
+
+    // handle to thread
+    pthread_attr_t          _attr;
+    pthread_t               _thread;
+#ifdef WEBRTC_LINUX
+    pid_t                   _linuxPid;
+#endif
+
+};
+} // namespace webrtc
+
+#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_LINUX_H_