Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f872d4e authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 7067

* changes:
  add a ctor to Mutex to specify the type, which can be shared. This is used by sf and af an soon will allow some optimization in the kernel for non shared mutexes
parents 03cc5581 fb4f266a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -98,6 +98,8 @@ struct layer_cblk_t // (128 bytes)

struct per_client_cblk_t   // 4KB max
{
    per_client_cblk_t() : lock(Mutex::SHARED) { }

                Mutex           lock;
                Condition       cv;
                layer_cblk_t    layers[NUM_LAYERS_MAX] __attribute__((aligned(32)));
+17 −0
Original line number Diff line number Diff line
@@ -190,8 +190,14 @@ inline thread_id_t getThreadId() {
 */
class Mutex {
public:
    enum {
        NORMAL = 0,
        SHARED = 1
    };
    
                Mutex();
                Mutex(const char* name);
                Mutex(int type, const char* name = NULL);
                ~Mutex();

    // lock or unlock the mutex
@@ -235,6 +241,17 @@ inline Mutex::Mutex() {
inline Mutex::Mutex(const char* name) {
    pthread_mutex_init(&mMutex, NULL);
}
inline Mutex::Mutex(int type, const char* name) {
    if (type == SHARED) {
        pthread_mutexattr_t attr;
        pthread_mutexattr_init(&attr);
        pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
        pthread_mutex_init(&mMutex, &attr);
        pthread_mutexattr_destroy(&attr);
    } else {
        pthread_mutex_init(&mMutex, NULL);
    }
}
inline Mutex::~Mutex() {
    pthread_mutex_destroy(&mMutex);
}
+1 −1
Original line number Diff line number Diff line
@@ -891,7 +891,7 @@ void AudioTrack::AudioTrackThread::onFirstRef()
// =========================================================================

audio_track_cblk_t::audio_track_cblk_t()
    : user(0), server(0), userBase(0), serverBase(0), buffers(0), frameCount(0),
    : lock(Mutex::SHARED), user(0), server(0), userBase(0), serverBase(0), buffers(0), frameCount(0),
    loopStart(UINT_MAX), loopEnd(UINT_MAX), loopCount(0), volumeLR(0), flowControlFlag(1), forceReady(0)
{
}