Patch from tito to replace shared memory usage with mlock(), slightly tweaked by me.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -25,6 +25,7 @@ | |
| #include <sys/time.h> | |
| #include <sys/times.h> | |
| #include <sys/mount.h> | |
| + | #include <sys/mman.h> |
| #include <getopt.h> | |
| #include "busybox.h" | |
| #include <linux/types.h> | |
| @@ -1406,36 +1407,20 @@ static void do_time(int flag, int fd) | |
| flag = 1 time_device | |
| */ | |
| { | |
| - | char *buf; |
| struct itimerval e1, e2; | |
| - | int shmid; |
| double elapsed, elapsed2; | |
| unsigned int max_iterations = 1024, total_MB, iterations; | |
| unsigned long long blksize; | |
| + | RESERVE_CONFIG_BUFFER(buf, TIMING_BUF_BYTES); |
| - | if (0 == do_blkgetsize(fd, &blksize)) { |
| - | max_iterations = blksize / (2 * 1024) / TIMING_BUF_MB; |
| + | if (mlock(buf, TIMING_BUF_BYTES)) { |
| + | bb_perror_msg("mlock"); |
| + | goto quit2; |
| } | |
| - | if ((shmid = shmget(IPC_PRIVATE, TIMING_BUF_BYTES, 0600)) == -1) |
| - | { |
| - | bb_perror_msg("shmget"); /*"could not allocate sharedmem buf"*/ |
| - | return; |
| - | } |
| - | if (shmctl(shmid, SHM_LOCK, NULL) == -1) |
| - | { |
| - | bb_perror_msg("shmctl"); /*"could not lock sharedmem buf"*/ |
| - | (void) shmctl(shmid, IPC_RMID, NULL); |
| - | return; |
| - | } |
| - | if ((buf = shmat(shmid, (char *) 0, 0)) == (char *) -1) |
| - | { |
| - | bb_perror_msg("shmat"); /*"could not attach sharedmem buf"*/ |
| - | (void) shmctl(shmid, IPC_RMID, NULL); |
| - | return; |
| + | if (0 == do_blkgetsize(fd, &blksize)) { |
| + | max_iterations = blksize / (2 * 1024) / TIMING_BUF_MB; |
| } | |
| - | if (shmctl(shmid, IPC_RMID, NULL) == -1) |
| - | bb_perror_msg("shmctl"); |
| /* Clear out the device request queues & give them time to complete */ | |
| sync(); | |
| @@ -1505,8 +1490,9 @@ static void do_time(int flag, int fd) | |
| print_timing(total_MB, elapsed); | |
| } | |
| quit: | |
| - | if (-1 == shmdt(buf)) |
| - | bb_perror_msg("shmdt"); /*"could not detach sharedmem buf"*/ |
| + | munlock(buf, TIMING_BUF_BYTES); |
| + | quit2: |
| + | RELEASE_CONFIG_BUFFER(buf); |
| } | |
| static void on_off (unsigned int value) | |