diff --git a/libcutils/Android.bp b/libcutils/Android.bp
index 58e59d6d9bb452ed77d71d8e869e57e21eb34205..37afb986737584a2d70e79dcbdee8ed7417dcfe3 100644
--- a/libcutils/Android.bp
+++ b/libcutils/Android.bp
@@ -20,6 +20,7 @@
 libcutils_nonwindows_sources = [
     "android_get_control_file.cpp",
     "fs.cpp",
+    "hashmap.cpp",
     "multiuser.cpp",
     "socket_inaddr_any_server_unix.cpp",
     "socket_local_client_unix.cpp",
@@ -61,7 +62,6 @@ cc_library {
         "config_utils.cpp",
         "fs_config.cpp",
         "canned_fs_config.cpp",
-        "hashmap.cpp",
         "iosched_policy.cpp",
         "load_file.cpp",
         "native_handle.cpp",
diff --git a/libcutils/hashmap.cpp b/libcutils/hashmap.cpp
index 2a4a52e1a6920a0151e06ff79294bf9845098fe3..57d60067cf1463132afef3fb99f1404a1c12688a 100644
--- a/libcutils/hashmap.cpp
+++ b/libcutils/hashmap.cpp
@@ -18,7 +18,7 @@
 
 #include <assert.h>
 #include <errno.h>
-#include <cutils/threads.h>
+#include <pthread.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
@@ -36,7 +36,7 @@ struct Hashmap {
     size_t bucketCount;
     int (*hash)(void* key);
     bool (*equals)(void* keyA, void* keyB);
-    mutex_t lock;
+    pthread_mutex_t lock;
     size_t size;
 };
 
@@ -69,7 +69,7 @@ Hashmap* hashmapCreate(size_t initialCapacity,
     map->hash = hash;
     map->equals = equals;
 
-    mutex_init(&map->lock);
+    pthread_mutex_init(&map->lock, nullptr);
 
     return map;
 }
@@ -129,11 +129,11 @@ static void expandIfNecessary(Hashmap* map) {
 }
 
 void hashmapLock(Hashmap* map) {
-    mutex_lock(&map->lock);
+    pthread_mutex_lock(&map->lock);
 }
 
 void hashmapUnlock(Hashmap* map) {
-    mutex_unlock(&map->lock);
+    pthread_mutex_unlock(&map->lock);
 }
 
 void hashmapFree(Hashmap* map) {
@@ -147,7 +147,7 @@ void hashmapFree(Hashmap* map) {
         }
     }
     free(map->buckets);
-    mutex_destroy(&map->lock);
+    pthread_mutex_destroy(&map->lock);
     free(map);
 }