← Commit list

4ae2f511c

Rob Landley
Rob Landley
2006-05-19
SOURCE BUG Duration: 55s

Subject

Patch from tito to replace shared memory usage with mlock(), slightly tweaked by me.

SOURCE BUG

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)

→ Bu hatanin tam hikayesini ve duzeltme diffini gor

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

miscutils/hdparm.c+10 -24
@@ -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)