hdparm: flag variables can easily be smaller than long

function                                             old     new   delta
process_dev                                         5247    5325     +78
bb_ioctl_on_off                                       72      78      +6
unregister_hwif                                        4       1      -3
...
perform_reset                                          4       1      -3
parse_xfermode                                       111     108      -3
noisy_piomode                                          4       1      -3
...
do_flush                                               4       1      -3
do_ctimings                                            4       1      -3
static.parm                                            4       -      -4
static.multcount                                       4       -      -4
parse_opts                                            54      48      -6
hdparm_main                                         1435    1383     -52
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 2/61 up/down: 84/-243)         Total: -159 bytes
This commit is contained in:
Denis Vlasenko
2007-03-28 01:00:45 +00:00
parent 7c282a2078
commit 0eec4abb13

View File

@ -459,9 +459,12 @@ static int bb_ioctl_alt(int fd, int cmd, unsigned char *args, int alt, const cha
return bb_ioctl(fd, cmd, args, string); return bb_ioctl(fd, cmd, args, string);
} }
static void on_off(unsigned int value); static void on_off(int value)
{
printf(value ? " (on)\n" : " (off)\n");
}
static void print_flag_on_off(unsigned long get_arg, const char *s, unsigned long arg) static void print_flag_on_off(int get_arg, const char *s, unsigned long arg)
{ {
if (get_arg) { if (get_arg) {
printf(" setting %s to %ld", s, arg); printf(" setting %s to %ld", s, arg);
@ -476,7 +479,7 @@ static void bb_ioctl_on_off(int fd, int request, void *argp, const char *string,
bb_perror_msg(" %s", string); bb_perror_msg(" %s", string);
else { else {
printf(" %s\t= %2ld", str, (unsigned long) argp); printf(" %s\t= %2ld", str, (unsigned long) argp);
on_off((unsigned long) argp); on_off(((unsigned long) argp) != 0);
} }
} }
@ -701,7 +704,7 @@ static void identify(uint16_t *id_supplied)
jj >>= 1; jj >>= 1;
} }
} }
printf("%s\n", (!kk) ? "\n\tLikely used CD-ROM ATAPI-1" : "" ); printf("%s\n", kk ? "" : "\n\tLikely used CD-ROM ATAPI-1");
/* the cdrom stuff is more like ATA-2 than anything else, so: */ /* the cdrom stuff is more like ATA-2 than anything else, so: */
like_std = 2; like_std = 2;
} }
@ -714,7 +717,8 @@ static void identify(uint16_t *id_supplied)
if ((eqpt != CDROM) && (like_std == 1)) { if ((eqpt != CDROM) && (like_std == 1)) {
jj = val[GEN_CONFIG] >> 1; jj = val[GEN_CONFIG] >> 1;
for (ii = 1; ii < 15; ii++) { for (ii = 1; ii < 15; ii++) {
if (jj & 0x0001) printf("\t%s\n", ata1_cfg_str[ii]); if (jj & 0x0001)
printf("\t%s\n", ata1_cfg_str[ii]);
jj >>=1; jj >>=1;
} }
} }
@ -1016,62 +1020,71 @@ static void identify(uint16_t *id_supplied)
} }
#endif #endif
static int get_identity, get_geom; static smallint get_identity, get_geom;
static int do_flush; static smallint do_flush;
static int do_ctimings, do_timings; static smallint do_ctimings, do_timings;
static unsigned long set_readahead, get_readahead, Xreadahead; static smallint reread_partn;
static unsigned long set_readonly, get_readonly, readonly;
static unsigned long set_unmask, get_unmask, unmask; static smallint set_piomode, noisy_piomode;
static unsigned long set_mult, get_mult, mult; static smallint set_readahead, get_readahead;
#if ENABLE_FEATURE_HDPARM_HDIO_GETSET_DMA static smallint set_readonly, get_readonly;
static unsigned long set_dma, get_dma, dma; static smallint set_unmask, get_unmask;
#endif static smallint set_mult, get_mult;
static unsigned long set_dma_q, get_dma_q, dma_q; static smallint set_dma_q, get_dma_q;
static unsigned long set_nowerr, get_nowerr, nowerr; static smallint set_nowerr, get_nowerr;
static unsigned long set_keep, get_keep, keep; static smallint set_keep, get_keep;
static unsigned long set_io32bit, get_io32bit, io32bit; static smallint set_io32bit, get_io32bit;
static unsigned long set_piomode, noisy_piomode;
static int piomode; static int piomode;
static unsigned long Xreadahead;
static unsigned long readonly;
static unsigned long unmask;
static unsigned long mult;
static unsigned long dma_q;
static unsigned long nowerr;
static unsigned long keep;
static unsigned long io32bit;
#if ENABLE_FEATURE_HDPARM_HDIO_GETSET_DMA
static unsigned long dma;
static smallint set_dma, get_dma;
#endif
#ifdef HDIO_DRIVE_CMD #ifdef HDIO_DRIVE_CMD
static unsigned long set_dkeep, get_dkeep, dkeep; static smallint set_xfermode, get_xfermode;
static unsigned long set_standby, get_standby, standby_requested; static smallint set_dkeep, get_dkeep;
static unsigned long set_xfermode, get_xfermode; static smallint set_standby, get_standby;
static smallint set_lookahead, get_lookahead;
static smallint set_prefetch, get_prefetch;
static smallint set_defects, get_defects;
static smallint set_wcache, get_wcache;
static smallint set_doorlock, get_doorlock;
static smallint set_seagate, get_seagate;
static smallint set_standbynow, get_standbynow;
static smallint set_sleepnow, get_sleepnow;
static smallint get_powermode;
static smallint set_apmmode, get_apmmode;
static int xfermode_requested; static int xfermode_requested;
static unsigned long set_lookahead, get_lookahead, lookahead; static unsigned long dkeep;
static unsigned long set_prefetch, get_prefetch, prefetch; static unsigned long standby_requested;
static unsigned long set_defects, get_defects, defects; static unsigned long lookahead;
static unsigned long set_wcache, get_wcache, wcache; static unsigned long prefetch;
static unsigned long set_doorlock, get_doorlock, doorlock; static unsigned long defects;
static unsigned long set_seagate, get_seagate; static unsigned long wcache;
static unsigned long set_standbynow, get_standbynow; static unsigned long doorlock;
static unsigned long set_sleepnow, get_sleepnow; static unsigned long apmmode;
static unsigned long get_powermode;
static unsigned long set_apmmode, get_apmmode, apmmode;
#endif
#if ENABLE_FEATURE_HDPARM_GET_IDENTITY
static int get_IDentity;
#endif
#if ENABLE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
static unsigned long unregister_hwif;
static unsigned long hwif;
#endif #endif
USE_FEATURE_HDPARM_GET_IDENTITY( static smallint get_IDentity;)
USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( static smallint set_busstate, get_busstate;)
USE_FEATURE_HDPARM_HDIO_DRIVE_RESET( static smallint perform_reset;)
USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( static smallint perform_tristate;)
USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF(static smallint unregister_hwif;)
USE_FEATURE_HDPARM_HDIO_SCAN_HWIF( static smallint scan_hwif;)
USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( static unsigned long busstate;)
USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( static unsigned long tristate;)
USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF(static unsigned long hwif;)
#if ENABLE_FEATURE_HDPARM_HDIO_SCAN_HWIF #if ENABLE_FEATURE_HDPARM_HDIO_SCAN_HWIF
static unsigned long scan_hwif;
static unsigned long hwif_data; static unsigned long hwif_data;
static unsigned long hwif_ctrl; static unsigned long hwif_ctrl;
static unsigned long hwif_irq; static unsigned long hwif_irq;
#endif #endif
#if ENABLE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
static unsigned long set_busstate, get_busstate, busstate;
#endif
static int reread_partn;
#if ENABLE_FEATURE_HDPARM_HDIO_DRIVE_RESET
static int perform_reset;
#endif /* FEATURE_HDPARM_HDIO_DRIVE_RESET */
#if ENABLE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
static unsigned long perform_tristate, tristate;
#endif /* FEATURE_HDPARM_HDIO_TRISTATE_HWIF */
// Historically, if there was no HDIO_OBSOLETE_IDENTITY, then // Historically, if there was no HDIO_OBSOLETE_IDENTITY, then
// then the HDIO_GET_IDENTITY only returned 142 bytes. // then the HDIO_GET_IDENTITY only returned 142 bytes.
@ -1128,8 +1141,8 @@ static void dump_identity(const struct hd_driveid *id)
printf(" CurCHS=%u/%u/%u, CurSects=%lu, LBA=%s", id->cur_cyls, id->cur_heads, printf(" CurCHS=%u/%u/%u, CurSects=%lu, LBA=%s", id->cur_cyls, id->cur_heads,
id->cur_sectors, id->cur_sectors,
(BB_BIG_ENDIAN) ? (BB_BIG_ENDIAN) ?
(long unsigned int)(id->cur_capacity0 << 16) | id->cur_capacity1 : (unsigned long)(id->cur_capacity0 << 16) | id->cur_capacity1 :
(long unsigned int)(id->cur_capacity1 << 16) | id->cur_capacity0, (unsigned long)(id->cur_capacity1 << 16) | id->cur_capacity0,
((id->capability&2) == 0) ? "no" : "yes"); ((id->capability&2) == 0) ? "no" : "yes");
if (id->capability & 2) if (id->capability & 2)
@ -1296,7 +1309,7 @@ static void do_time(int flag, int fd)
struct itimerval e1, e2; struct itimerval e1, e2;
double elapsed, elapsed2; double elapsed, elapsed2;
unsigned int max_iterations = 1024, total_MB, iterations; unsigned max_iterations = 1024, total_MB, iterations;
unsigned long long blksize; unsigned long long blksize;
RESERVE_CONFIG_BUFFER(buf, TIMING_BUF_BYTES); RESERVE_CONFIG_BUFFER(buf, TIMING_BUF_BYTES);
@ -1380,13 +1393,8 @@ quit2:
RELEASE_CONFIG_BUFFER(buf); RELEASE_CONFIG_BUFFER(buf);
} }
static void on_off (unsigned int value)
{
printf(value ? " (on)\n" : " (off)\n");
}
#if ENABLE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF #if ENABLE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
static void bus_state_value(unsigned int value) static void bus_state_value(unsigned value)
{ {
if (value == BUSSTATE_ON) if (value == BUSSTATE_ON)
on_off(1); on_off(1);
@ -1400,9 +1408,9 @@ static void bus_state_value(unsigned int value)
#endif #endif
#ifdef HDIO_DRIVE_CMD #ifdef HDIO_DRIVE_CMD
static void interpret_standby(unsigned int standby) static void interpret_standby(unsigned standby)
{ {
unsigned int t; unsigned t;
printf(" ("); printf(" (");
if (standby == 0) if (standby == 0)
@ -1415,8 +1423,7 @@ static void interpret_standby(unsigned int standby)
printf("Reserved"); printf("Reserved");
else if (standby == 255) else if (standby == 255)
printf("21 minutes + 15 seconds"); printf("21 minutes + 15 seconds");
else { else if (standby <= 240) {
if (standby <= 240) {
t = standby * 5; t = standby * 5;
printf("%u minutes + %u seconds", t / 60, t % 60); printf("%u minutes + %u seconds", t / 60, t % 60);
} else if (standby <= 251) { } else if (standby <= 251) {
@ -1424,7 +1431,6 @@ static void interpret_standby(unsigned int standby)
printf("%u hours + %u minutes", t / 60, t % 60); printf("%u hours + %u minutes", t / 60, t % 60);
} else } else
printf("illegal value"); printf("illegal value");
}
printf(")\n"); printf(")\n");
} }
@ -1487,7 +1493,7 @@ static int translate_xfermode(char * name)
return -1; return -1;
} }
static void interpret_xfermode(unsigned int xfermode) static void interpret_xfermode(unsigned xfermode)
{ {
printf(" ("); printf(" (");
if (xfermode == 0) if (xfermode == 0)
@ -1508,7 +1514,7 @@ static void interpret_xfermode(unsigned int xfermode)
} }
#endif /* HDIO_DRIVE_CMD */ #endif /* HDIO_DRIVE_CMD */
static void print_flag(unsigned long flag, const char *s, unsigned long value) static void print_flag(int flag, const char *s, unsigned long value)
{ {
if (flag) if (flag)
printf(" setting %s to %ld\n", s, value); printf(" setting %s to %ld\n", s, value);
@ -1517,7 +1523,7 @@ static void print_flag(unsigned long flag, const char *s, unsigned long value)
static void process_dev(char *devname) static void process_dev(char *devname)
{ {
int fd; int fd;
static long parm, multcount; long parm, multcount;
#ifndef HDIO_DRIVE_CMD #ifndef HDIO_DRIVE_CMD
int force_operation = 0; int force_operation = 0;
#endif #endif
@ -1631,8 +1637,7 @@ static void process_dev(char *devname)
if (set_xfermode) { if (set_xfermode) {
args[1] = xfermode_requested; args[1] = xfermode_requested;
args[2] = 3; args[2] = 3;
if (get_xfermode) if (get_xfermode) {
{
print_flag(1, "xfermode", xfermode_requested); print_flag(1, "xfermode", xfermode_requested);
interpret_xfermode(xfermode_requested); interpret_xfermode(xfermode_requested);
} }
@ -1729,7 +1734,7 @@ static void process_dev(char *devname)
bb_perror_msg("HDIO_GET_MULTCOUNT"); bb_perror_msg("HDIO_GET_MULTCOUNT");
} else if (get_mult) { } else if (get_mult) {
printf(fmt, "multcount", multcount); printf(fmt, "multcount", multcount);
on_off(multcount); on_off(multcount != 0);
} }
} }
if (get_io32bit) { if (get_io32bit) {
@ -1762,7 +1767,7 @@ static void process_dev(char *devname)
if (parm == 8) if (parm == 8)
printf(" (DMA-Assisted-PIO)\n"); printf(" (DMA-Assisted-PIO)\n");
else else
on_off(parm); on_off(parm != 0);
} }
} }
#endif #endif
@ -1809,7 +1814,7 @@ static void process_dev(char *devname)
args[0] = WIN_CHECKPOWERMODE1; args[0] = WIN_CHECKPOWERMODE1;
if (bb_ioctl_alt(fd, HDIO_DRIVE_CMD, args, WIN_CHECKPOWERMODE2, 0)) { if (bb_ioctl_alt(fd, HDIO_DRIVE_CMD, args, WIN_CHECKPOWERMODE2, 0)) {
if (errno != EIO || args[0] != 0 || args[1] != 0) if (errno != EIO || args[0] != 0 || args[1] != 0)
state = "Unknown"; state = "unknown";
else else
state = "sleeping"; state = "sleeping";
} else } else
@ -1919,7 +1924,7 @@ static void identify_from_stdin(void)
#endif #endif
/* busybox specific stuff */ /* busybox specific stuff */
static void parse_opts(unsigned long *get, unsigned long *set, unsigned long *value, int min, int max) static void parse_opts(smallint *get, smallint *set, unsigned long *value, int min, int max)
{ {
if (get) { if (get) {
*get = 1; *get = 1;
@ -1930,7 +1935,7 @@ static void parse_opts(unsigned long *get, unsigned long *set, unsigned long *va
} }
} }
static void parse_xfermode(int flag, unsigned long *get, unsigned long *set, int *value) static void parse_xfermode(int flag, smallint *get, smallint *set, int *value)
{ {
if (flag) { if (flag) {
*get = 1; *get = 1;