am 27976c4..27976c4 from mirror-m-wireless-internal-release

27976c4 Introduction of the new SAP-UIM socket

Change-Id: I9ab9d65f230edd83037e2d1779b3bdd3b32a0aa7
diff --git a/libril/ril.cpp b/libril/ril.cpp
index 30e51c6..4aea484 100644
--- a/libril/ril.cpp
+++ b/libril/ril.cpp
@@ -698,6 +698,7 @@
     int32_t t;
     status_t status;
 
+    RLOGD("dispatchSmsWrite");
     memset (&args, 0, sizeof(args));
 
     status = p.readInt32(&t);
@@ -750,6 +751,7 @@
     int32_t uusPresent;
     status_t status;
 
+    RLOGD("dispatchDial");
     memset (&dial, 0, sizeof(dial));
 
     dial.address = strdupReadString(p);
@@ -854,6 +856,7 @@
     int size;
     status_t status;
 
+    RLOGD("dispatchSIM_IO");
     memset (&simIO, 0, sizeof(simIO));
 
     // note we only check status at the end
@@ -931,6 +934,7 @@
     status_t status;
     RIL_SIM_APDU apdu;
 
+    RLOGD("dispatchSIM_APDU");
     memset (&apdu, 0, sizeof(RIL_SIM_APDU));
 
     // Note we only check status at the end. Any single failure leads to
@@ -1000,6 +1004,7 @@
     int32_t t;
     status_t status;
 
+    RLOGD("dispatchCallForward");
     memset (&cff, 0, sizeof(cff));
 
     // note we only check status at the end
@@ -1174,7 +1179,7 @@
 dispatchCdmaSms(Parcel &p, RequestInfo *pRI) {
     RIL_CDMA_SMS_Message rcsm;
 
-    ALOGD("dispatchCdmaSms");
+    RLOGD("dispatchCdmaSms");
     if (NO_ERROR != constructCdmaSms(p, pRI, rcsm)) {
         goto invalid;
     }
@@ -1197,7 +1202,7 @@
     RIL_IMS_SMS_Message rism;
     RIL_CDMA_SMS_Message rcsm;
 
-    ALOGD("dispatchImsCdmaSms: retry=%d, messageRef=%d", retry, messageRef);
+    RLOGD("dispatchImsCdmaSms: retry=%d, messageRef=%d", retry, messageRef);
 
     if (NO_ERROR != constructCdmaSms(p, pRI, rcsm)) {
         goto invalid;
@@ -1231,7 +1236,7 @@
     status_t status;
     size_t datalen;
     char **pStrings;
-    ALOGD("dispatchImsGsmSms: retry=%d, messageRef=%d", retry, messageRef);
+    RLOGD("dispatchImsGsmSms: retry=%d, messageRef=%d", retry, messageRef);
 
     status = p.readInt32 (&countStrings);
 
@@ -1304,7 +1309,7 @@
     uint8_t retry;
     int32_t messageRef;
 
-    ALOGD("dispatchImsSms");
+    RLOGD("dispatchImsSms");
     if (status != NO_ERROR) {
         goto invalid;
     }
@@ -1343,6 +1348,7 @@
     status_t status;
     int32_t digitCount;
 
+    RLOGD("dispatchCdmaSmsAck");
     memset(&rcsa, 0, sizeof(rcsa));
 
     status = p.readInt32(&t);
@@ -4282,7 +4288,7 @@
 
     char rildebug[MAX_DEBUG_SOCKET_NAME_LENGTH] = SOCKET_NAME_RIL_DEBUG;
     if (inst != NULL) {
-        strncat(rildebug, inst, MAX_DEBUG_SOCKET_NAME_LENGTH);
+        strlcat(rildebug, inst, MAX_DEBUG_SOCKET_NAME_LENGTH);
     }
 
     s_fdDebug = android_get_control_socket(rildebug);
@@ -4482,11 +4488,7 @@
 wakeTimeoutCallback (void *param) {
     // We're using "param != NULL" as a cancellation mechanism
     if (param == NULL) {
-        //RLOGD("wakeTimeout: releasing wake lock");
-
         releaseWakeLock();
-    } else {
-        //RLOGD("wakeTimeout: releasing wake lock CANCELLED");
     }
 }
 
@@ -4610,11 +4612,11 @@
 
 #if defined(ANDROID_MULTI_SIM)
 extern "C"
-void RIL_onUnsolicitedResponse(int unsolResponse, void *data,
+void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
                                 size_t datalen, RIL_SOCKET_ID socket_id)
 #else
 extern "C"
-void RIL_onUnsolicitedResponse(int unsolResponse, void *data,
+void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
                                 size_t datalen)
 #endif
 {
diff --git a/libril/ril_event.cpp b/libril/ril_event.cpp
index 9d2954e..84b8b72 100644
--- a/libril/ril_event.cpp
+++ b/libril/ril_event.cpp
@@ -95,14 +95,10 @@
 
 static void getNow(struct timeval * tv)
 {
-#ifdef HAVE_POSIX_CLOCKS
     struct timespec ts;
     clock_gettime(CLOCK_MONOTONIC, &ts);
     tv->tv_sec = ts.tv_sec;
     tv->tv_usec = ts.tv_nsec/1000;
-#else
-    gettimeofday(tv, NULL);
-#endif
 }
 
 static void init_list(struct ril_event * list)
@@ -124,18 +120,20 @@
 
 static void removeFromList(struct ril_event * ev)
 {
-    dlog("~~~~ Removing event ~~~~");
+    dlog("~~~~ +removeFromList ~~~~");
     dump_event(ev);
 
     ev->next->prev = ev->prev;
     ev->prev->next = ev->next;
     ev->next = NULL;
     ev->prev = NULL;
+    dlog("~~~~ -removeFromList ~~~~");
 }
 
 
 static void removeWatch(struct ril_event * ev, int index)
 {
+    dlog("~~~~ +removeWatch ~~~~");
     watch_table[index] = NULL;
     ev->index = -1;
 
@@ -154,6 +152,7 @@
         nfds = n + 1;
         dlog("~~~~ nfds = %d ~~~~", nfds);
     }
+    dlog("~~~~ -removeWatch ~~~~");
 }
 
 static void processTimeouts()
diff --git a/rild/rild.c b/rild/rild.c
index 268170e..6324253 100644
--- a/rild/rild.c
+++ b/rild/rild.c
@@ -31,6 +31,8 @@
 #include <cutils/sockets.h>
 #include <sys/capability.h>
 #include <sys/prctl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
 #include <libril/ril_ex.h>
 
 #include <private/android_filesystem_config.h>
@@ -55,6 +57,7 @@
 extern void RIL_onRequestComplete(RIL_Token t, RIL_Errno e,
         void *response, size_t responselen);
 
+extern void RIL_setRilSocketName(char *);
 
 #if defined(ANDROID_MULTI_SIM)
 extern void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
@@ -95,6 +98,8 @@
  * Our group, cache, was set by init.
  */
 void switchUser() {
+    char debuggable[PROP_VALUE_MAX];
+
     prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);
     setuid(AID_RADIO);
 
@@ -116,6 +121,15 @@
         RLOGE("capset failed: %s", strerror(errno));
         exit(EXIT_FAILURE);
     }
+
+    /*
+     * Debuggable build only:
+     * Set DUMPABLE that was cleared by setuid() to have tombstone on RIL crash
+     */
+    property_get("ro.debuggable", debuggable, "0");
+    if (strcmp(debuggable, "1") == 0) {
+        prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
+    }
 }
 
 int main(int argc, char **argv) {