@@ -74,20 +74,6 @@ extern "C" int __sys_sigaction(int signum, const struct sigaction *act,
74
74
# include < thread.h>
75
75
# endif
76
76
77
- # if SANITIZER_ANDROID
78
- # include < android/api-level.h>
79
- # if !defined(CPU_COUNT) && !defined(__aarch64__)
80
- # include < dirent.h>
81
- # include < fcntl.h>
82
- struct __sanitizer ::linux_dirent {
83
- long d_ino;
84
- off_t d_off;
85
- unsigned short d_reclen;
86
- char d_name[];
87
- };
88
- # endif
89
- # endif
90
-
91
77
# if !SANITIZER_ANDROID
92
78
# include < elf.h>
93
79
# include < unistd.h>
@@ -857,42 +843,6 @@ u32 GetNumberOfCPUs() {
857
843
req[1 ] = HW_NCPU;
858
844
CHECK_EQ (internal_sysctl (req, 2 , &ncpu, &len, NULL , 0 ), 0 );
859
845
return ncpu;
860
- # elif SANITIZER_ANDROID && !defined(CPU_COUNT) && !defined(__aarch64__)
861
- // Fall back to /sys/devices/system/cpu on Android when cpu_set_t doesn't
862
- // exist in sched.h. That is the case for toolchains generated with older
863
- // NDKs.
864
- // This code doesn't work on AArch64 because internal_getdents makes use of
865
- // the 64bit getdents syscall, but cpu_set_t seems to always exist on AArch64.
866
- uptr fd = internal_open (" /sys/devices/system/cpu" , O_RDONLY | O_DIRECTORY);
867
- if (internal_iserror (fd))
868
- return 0 ;
869
- InternalMmapVector<u8 > buffer (4096 );
870
- uptr bytes_read = buffer.size ();
871
- uptr n_cpus = 0 ;
872
- u8 *d_type;
873
- struct linux_dirent *entry = (struct linux_dirent *)&buffer[bytes_read];
874
- while (true ) {
875
- if ((u8 *)entry >= &buffer[bytes_read]) {
876
- bytes_read = internal_getdents (fd, (struct linux_dirent *)buffer.data (),
877
- buffer.size ());
878
- if (internal_iserror (bytes_read) || !bytes_read)
879
- break ;
880
- entry = (struct linux_dirent *)buffer.data ();
881
- }
882
- d_type = (u8 *)entry + entry->d_reclen - 1 ;
883
- if (d_type >= &buffer[bytes_read] ||
884
- (u8 *)&entry->d_name [3 ] >= &buffer[bytes_read])
885
- break ;
886
- if (entry->d_ino != 0 && *d_type == DT_DIR) {
887
- if (entry->d_name [0 ] == ' c' && entry->d_name [1 ] == ' p' &&
888
- entry->d_name [2 ] == ' u' && entry->d_name [3 ] >= ' 0' &&
889
- entry->d_name [3 ] <= ' 9' )
890
- n_cpus++;
891
- }
892
- entry = (struct linux_dirent *)(((u8 *)entry) + entry->d_reclen );
893
- }
894
- internal_close (fd);
895
- return n_cpus;
896
846
# elif SANITIZER_SOLARIS
897
847
return sysconf (_SC_NPROCESSORS_ONLN);
898
848
# else
0 commit comments