Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Side by Side Diff: src/trusted/service_runtime/sel_ldr.c

Issue 1656133002: Cleanup: Remove various unused functions related to loading nexes over SRPC (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/trusted/service_runtime/sel_ldr.h ('k') | src/trusted/service_runtime/sel_ldr_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 /* 9 /*
10 * NaCl Simple/secure ELF loader (NaCl SEL). 10 * NaCl Simple/secure ELF loader (NaCl SEL).
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 * Environment not set or redirect failed -- handle default inheritance. 739 * Environment not set or redirect failed -- handle default inheritance.
740 */ 740 */
741 NaClAddHostDescriptor(nap, DUP(g_nacl_redir_control[ix].d), 741 NaClAddHostDescriptor(nap, DUP(g_nacl_redir_control[ix].d),
742 g_nacl_redir_control[ix].nacl_flags, (int) ix); 742 g_nacl_redir_control[ix].nacl_flags, (int) ix);
743 } 743 }
744 } 744 }
745 745
746 NaClLog(4, "... done.\n"); 746 NaClLog(4, "... done.\n");
747 } 747 }
748 748
749 void NaClCreateServiceSocket(struct NaClApp *nap) {
750 struct NaClDesc *secure_pair[2];
751 struct NaClDesc *pair[2];
752
753 NaClLog(3, "Entered NaClCreateServiceSocket\n");
754
755 if (NACL_FI_ERROR_COND("NaClCreateServiceSocket__secure_boundsock",
756 0 != NaClCommonDescMakeBoundSock(secure_pair))) {
757 NaClLog(LOG_FATAL, "Cound not create secure service socket\n");
758 }
759 NaClLog(4,
760 "got bound socket at 0x%08"NACL_PRIxPTR", "
761 "addr at 0x%08"NACL_PRIxPTR"\n",
762 (uintptr_t) secure_pair[0],
763 (uintptr_t) secure_pair[1]);
764
765 NaClDescSafeUnref(nap->secure_service_port);
766 nap->secure_service_port = secure_pair[0];
767
768 NaClDescSafeUnref(nap->secure_service_address);
769 nap->secure_service_address = secure_pair[1];
770
771 if (NACL_FI_ERROR_COND("NaClCreateServiceSocket__boundsock",
772 0 != NaClCommonDescMakeBoundSock(pair))) {
773 NaClLog(LOG_FATAL, "Cound not create service socket\n");
774 }
775 NaClLog(4,
776 "got bound socket at 0x%08"NACL_PRIxPTR", "
777 "addr at 0x%08"NACL_PRIxPTR"\n",
778 (uintptr_t) pair[0],
779 (uintptr_t) pair[1]);
780 NaClAppSetDesc(nap, NACL_SERVICE_PORT_DESCRIPTOR, pair[0]);
781 NaClAppSetDesc(nap, NACL_SERVICE_ADDRESS_DESCRIPTOR, pair[1]);
782
783 NaClDescSafeUnref(nap->service_port);
784
785 nap->service_port = pair[0];
786 NaClDescRef(nap->service_port);
787
788 NaClDescSafeUnref(nap->service_address);
789
790 nap->service_address = pair[1];
791 NaClDescRef(nap->service_address);
792
793 NaClLog(4, "Leaving NaClCreateServiceSocket\n");
794 }
795
796 /*
797 * Import the |inherited_desc| descriptor as an IMC handle, save a
798 * reference to it at nap->bootstrap_channel, then send the
799 * service_address over that channel.
800 */
801 void NaClSetUpBootstrapChannel(struct NaClApp *nap,
802 NaClHandle inherited_desc) {
803 struct NaClDescImcDesc *channel;
804 struct NaClImcTypedMsgHdr hdr;
805 struct NaClDesc *descs[2];
806 ssize_t rv;
807
808 NaClLog(4,
809 "NaClSetUpBootstrapChannel(0x%08"NACL_PRIxPTR", %"NACL_PRIdPTR")\n",
810 (uintptr_t) nap,
811 (uintptr_t) inherited_desc);
812
813 channel = (struct NaClDescImcDesc *) malloc(sizeof *channel);
814 if (NULL == channel) {
815 NaClLog(LOG_FATAL, "NaClSetUpBootstrapChannel: no memory\n");
816 }
817 if (!NaClDescImcDescCtor(channel, inherited_desc)) {
818 NaClLog(LOG_FATAL,
819 ("NaClSetUpBootstrapChannel: cannot construct IMC descriptor"
820 " object for inherited descriptor %"NACL_PRIdPTR"\n"),
821 (uintptr_t) inherited_desc);
822 return;
823 }
824 if (NULL == nap->secure_service_address) {
825 NaClLog(LOG_FATAL,
826 "NaClSetUpBootstrapChannel: secure service address not set\n");
827 return;
828 }
829 if (NULL == nap->service_address) {
830 NaClLog(LOG_FATAL,
831 "NaClSetUpBootstrapChannel: service address not set\n");
832 return;
833 }
834 /*
835 * service_address and service_port are set together.
836 */
837 descs[0] = nap->secure_service_address;
838 descs[1] = nap->service_address;
839
840 hdr.iov = (struct NaClImcMsgIoVec *) NULL;
841 hdr.iov_length = 0;
842 hdr.ndescv = descs;
843 hdr.ndesc_length = NACL_ARRAY_SIZE(descs);
844
845 rv = (*NACL_VTBL(NaClDesc, channel)->SendMsg)((struct NaClDesc *) channel,
846 &hdr, 0);
847 NaClXMutexLock(&nap->mu);
848 if (NULL != nap->bootstrap_channel) {
849 NaClLog(LOG_FATAL,
850 "NaClSetUpBootstrapChannel: cannot have two bootstrap channels\n");
851 }
852 nap->bootstrap_channel = (struct NaClDesc *) channel;
853 channel = NULL;
854 NaClXMutexUnlock(&nap->mu);
855
856 NaClLog(1,
857 ("NaClSetUpBootstrapChannel: descriptor %"NACL_PRIdPTR
858 ", error %"NACL_PRIdS"\n"),
859 (uintptr_t) inherited_desc,
860 rv);
861 if (NACL_FI_ERROR_COND("NaClSetUpBootstrapChannel__SendMsg", 0 != rv)) {
862 NaClLog(LOG_FATAL,
863 "NaClSetUpBootstrapChannel: SendMsg failed, rv = %"NACL_PRIdS"\n",
864 rv);
865 }
866 }
867
868 enum NaClModuleInitializationState NaClGetInitState(struct NaClApp *nap) { 749 enum NaClModuleInitializationState NaClGetInitState(struct NaClApp *nap) {
869 enum NaClModuleInitializationState state; 750 enum NaClModuleInitializationState state;
870 NaClXMutexLock(&nap->mu); 751 NaClXMutexLock(&nap->mu);
871 state = nap->module_initialization_state; 752 state = nap->module_initialization_state;
872 NaClXMutexUnlock(&nap->mu); 753 NaClXMutexUnlock(&nap->mu);
873 return state; 754 return state;
874 } 755 }
875 756
876 void NaClSetInitState(struct NaClApp *nap, 757 void NaClSetInitState(struct NaClApp *nap,
877 enum NaClModuleInitializationState state) { 758 enum NaClModuleInitializationState state) {
878 NaClXMutexLock(&nap->mu); 759 NaClXMutexLock(&nap->mu);
879 /* The initialization state should be increasing monotonically. */ 760 /* The initialization state should be increasing monotonically. */
880 CHECK(state > nap->module_initialization_state); 761 CHECK(state > nap->module_initialization_state);
881 nap->module_initialization_state = state; 762 nap->module_initialization_state = state;
882 NaClXCondVarBroadcast(&nap->cv); 763 NaClXCondVarBroadcast(&nap->cv);
883 NaClXMutexUnlock(&nap->mu); 764 NaClXMutexUnlock(&nap->mu);
884 } 765 }
885 766
886 NaClErrorCode NaClWaitForLoadModuleCommand(struct NaClApp *nap) {
887 NaClErrorCode status;
888
889 NaClLog(4, "NaClWaitForLoadModuleCommand started\n");
890 NaClXMutexLock(&nap->mu);
891 while (nap->module_initialization_state < NACL_MODULE_LOADED) {
892 NaClXCondVarWait(&nap->cv, &nap->mu);
893 }
894 status = nap->module_load_status;
895 NaClXMutexUnlock(&nap->mu);
896 NaClLog(4, "NaClWaitForLoadModuleCommand finished\n");
897
898 return status;
899 }
900
901 void NaClRememberLoadStatus(struct NaClApp *nap, NaClErrorCode status) { 767 void NaClRememberLoadStatus(struct NaClApp *nap, NaClErrorCode status) {
902 NaClXMutexLock(&nap->mu); 768 NaClXMutexLock(&nap->mu);
903 /* Remember the first error we encountered. */ 769 /* Remember the first error we encountered. */
904 if (nap->module_load_status == LOAD_OK) { 770 if (nap->module_load_status == LOAD_OK) {
905 nap->module_load_status = status; 771 nap->module_load_status = status;
906 } 772 }
907 NaClXMutexUnlock(&nap->mu); 773 NaClXMutexUnlock(&nap->mu);
908 } 774 }
909 775
910 776
911 NaClErrorCode NaClGetLoadStatus(struct NaClApp *nap) { 777 NaClErrorCode NaClGetLoadStatus(struct NaClApp *nap) {
912 NaClErrorCode status; 778 NaClErrorCode status;
913 NaClXMutexLock(&nap->mu); 779 NaClXMutexLock(&nap->mu);
914 status = nap->module_load_status; 780 status = nap->module_load_status;
915 NaClXMutexUnlock(&nap->mu); 781 NaClXMutexUnlock(&nap->mu);
916 return status; 782 return status;
917 } 783 }
918 784
919 NaClErrorCode NaClWaitForStartModuleCommand(struct NaClApp *nap) {
920 NaClErrorCode status;
921
922 NaClLog(4, "NaClWaitForStartModuleCommand started\n");
923 NaClXMutexLock(&nap->mu);
924 while (nap->module_initialization_state < NACL_MODULE_STARTED) {
925 NaClXCondVarWait(&nap->cv, &nap->mu);
926 }
927 status = nap->module_load_status;
928 NaClXMutexUnlock(&nap->mu);
929 NaClLog(4, "NaClWaitForStartModuleCommand finished\n");
930
931 return status;
932 }
933
934 void NaClBlockIfCommandChannelExists(struct NaClApp *nap) {
935 if (NULL != nap->secure_service) {
936 for (;;) {
937 struct nacl_abi_timespec req;
938 req.tv_sec = 1000;
939 req.tv_nsec = 0;
940 NaClNanosleep(&req, (struct nacl_abi_timespec *) NULL);
941 }
942 }
943 }
944
945 void NaClSecureCommandChannel(struct NaClApp *nap) {
946 struct NaClSecureService *secure_command_server;
947
948 NaClLog(4, "Entered NaClSecureCommandChannel\n");
949
950 secure_command_server = (struct NaClSecureService *) malloc(
951 sizeof *secure_command_server);
952 if (NACL_FI_ERROR_COND("NaClSecureCommandChannel__malloc",
953 NULL == secure_command_server)) {
954 NaClLog(LOG_FATAL, "Out of memory for secure command channel\n");
955 }
956 if (NACL_FI_ERROR_COND("NaClSecureCommandChannel__NaClSecureServiceCtor",
957 !NaClSecureServiceCtor(secure_command_server,
958 nap,
959 nap->secure_service_port,
960 nap->secure_service_address))) {
961 NaClLog(LOG_FATAL, "NaClSecureServiceCtor failed\n");
962 }
963 nap->secure_service = secure_command_server;
964
965 NaClLog(4, "NaClSecureCommandChannel: starting service thread\n");
966 if (NACL_FI_ERROR_COND(
967 "NaClSecureCommandChannel__NaClSimpleServiceStartServiceThread",
968 !NaClSimpleServiceStartServiceThread((struct NaClSimpleService *)
969 secure_command_server))) {
970 NaClLog(LOG_FATAL,
971 "Could not start secure command channel service thread\n");
972 }
973
974 NaClLog(4, "Leaving NaClSecureCommandChannel\n");
975 }
976
977
978 void NaClAppLoadModule(struct NaClApp *nap, 785 void NaClAppLoadModule(struct NaClApp *nap,
979 struct NaClDesc *nexe, 786 struct NaClDesc *nexe,
980 void (*load_cb)(void *instance_data, 787 void (*load_cb)(void *instance_data,
981 NaClErrorCode status), 788 NaClErrorCode status),
982 void *instance_data) { 789 void *instance_data) {
983 NaClErrorCode status = LOAD_OK; 790 NaClErrorCode status = LOAD_OK;
984 int is_double_init = NaClGetInitState(nap) != NACL_MODULE_UNINITIALIZED; 791 int is_double_init = NaClGetInitState(nap) != NACL_MODULE_UNINITIALIZED;
985 792
986 NaClLog(4, 793 NaClLog(4,
987 ("Entered NaClAppLoadModule: nap 0x%"NACL_PRIxPTR"," 794 ("Entered NaClAppLoadModule: nap 0x%"NACL_PRIxPTR","
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1197 nacl_global_xlate_base = mem_start; 1004 nacl_global_xlate_base = mem_start;
1198 1005
1199 NaClSandboxMemoryStartForValgrind(mem_start); 1006 NaClSandboxMemoryStartForValgrind(mem_start);
1200 1007
1201 _ovly_debug_event(); 1008 _ovly_debug_event();
1202 } 1009 }
1203 1010
1204 void NaClGdbHook(struct NaClApp const *nap) { 1011 void NaClGdbHook(struct NaClApp const *nap) {
1205 StopForDebuggerInit(nap->mem_start); 1012 StopForDebuggerInit(nap->mem_start);
1206 } 1013 }
OLDNEW
« no previous file with comments | « src/trusted/service_runtime/sel_ldr.h ('k') | src/trusted/service_runtime/sel_ldr_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698