aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-08-06 08:57:35 +0000
committerEric Andersen <andersen@codepoet.org>2003-08-06 08:57:35 +0000
commit0a57a79e387060e790d99e7d186be919dee3f92f (patch)
treeaa5a9cb452a81f7226a55d6554adce918fcb64c0
parent4b4e09854c55b060fb36ffc17b7dc08b98a9f387 (diff)
downloadbusybox-w32-0a57a79e387060e790d99e7d186be919dee3f92f.tar.gz
busybox-w32-0a57a79e387060e790d99e7d186be919dee3f92f.tar.bz2
busybox-w32-0a57a79e387060e790d99e7d186be919dee3f92f.zip
Patch from Steven Scholz:
should we rename the define into CONFIG_FEATURE_HDPARM_HDIO_DMA and use it for "set" and "get" ??? Since although CONFIG_FEATURE_HDPARM_HDIO_GET_DMA is _not_ set I still can use "hdparm -d 1 /dev/hda" to switch the DMA on. Is this desireable or meant to be like that? So how about the applied patch?
-rw-r--r--include/usage.h8
-rw-r--r--miscutils/Config.in8
-rw-r--r--miscutils/hdparm.c6
3 files changed, 20 insertions, 2 deletions
diff --git a/include/usage.h b/include/usage.h
index 60a9f99f2..1e489a5c6 100644
--- a/include/usage.h
+++ b/include/usage.h
@@ -835,6 +835,12 @@
835#define USAGE_TRISTATE_HWIF(a) 835#define USAGE_TRISTATE_HWIF(a)
836#endif 836#endif
837 837
838#ifdef CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
839#define USAGE_GETSET_DMA(a) a
840#else
841#define USAGE_GETSET_DMA(a)
842#endif
843
838#define hdparm_trivial_usage \ 844#define hdparm_trivial_usage \
839 "[options] [device] .." 845 "[options] [device] .."
840#define hdparm_full_usage \ 846#define hdparm_full_usage \
@@ -845,7 +851,7 @@
845 " -B set Advanced Power Management setting (1-255)\n" \ 851 " -B set Advanced Power Management setting (1-255)\n" \
846 " -c get/set IDE 32-bit IO setting\n" \ 852 " -c get/set IDE 32-bit IO setting\n" \
847 " -C check IDE power mode status\n" \ 853 " -C check IDE power mode status\n" \
848 " -d get/set using_dma flag\n" \ 854 USAGE_GETSET_DMA(" -d get/set using_dma flag\n") \
849 " -D enable/disable drive defect-mgmt\n" \ 855 " -D enable/disable drive defect-mgmt\n" \
850 " -f flush buffer cache for device on exit\n" \ 856 " -f flush buffer cache for device on exit\n" \
851 " -g display drive geometry\n" \ 857 " -g display drive geometry\n" \
diff --git a/miscutils/Config.in b/miscutils/Config.in
index 0c56f0ee9..a994c5096 100644
--- a/miscutils/Config.in
+++ b/miscutils/Config.in
@@ -100,6 +100,14 @@ config CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
100 and the '-b' option to get/set bus state. This is dangerous 100 and the '-b' option to get/set bus state. This is dangerous
101 stuff, so you should probably say N. 101 stuff, so you should probably say N.
102 102
103config CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
104 bool " get/set using_dma flag (DANGEROUS)"
105 default n
106 depends on CONFIG_HDPARM
107 help
108 Enables the 'hdparm -d' option to get/set using_dma flag.
109 This is dangerous stuff, so you should probably say N.
110
103config CONFIG_MAKEDEVS 111config CONFIG_MAKEDEVS
104 bool "makedevs" 112 bool "makedevs"
105 default n 113 default n
diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c
index eb4991ef3..0263f2893 100644
--- a/miscutils/hdparm.c
+++ b/miscutils/hdparm.c
@@ -1820,6 +1820,7 @@ static void process_dev (char *devname)
1820 if (ioctl(fd, HDIO_SET_UNMASKINTR, unmask)) 1820 if (ioctl(fd, HDIO_SET_UNMASKINTR, unmask))
1821 bb_perror_msg(" HDIO_SET_UNMASKINTR failed"); 1821 bb_perror_msg(" HDIO_SET_UNMASKINTR failed");
1822 } 1822 }
1823#ifdef CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
1823 if (set_dma) { 1824 if (set_dma) {
1824 no_scsi(); 1825 no_scsi();
1825 if (get_dma) { 1826 if (get_dma) {
@@ -1829,6 +1830,7 @@ static void process_dev (char *devname)
1829 if (ioctl(fd, HDIO_SET_DMA, dma)) 1830 if (ioctl(fd, HDIO_SET_DMA, dma))
1830 bb_perror_msg(" HDIO_SET_DMA failed"); 1831 bb_perror_msg(" HDIO_SET_DMA failed");
1831 } 1832 }
1833#endif /* CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA */
1832 if (set_dma_q) { 1834 if (set_dma_q) {
1833 no_scsi(); 1835 no_scsi();
1834 if (get_dma_q) { 1836 if (get_dma_q) {
@@ -2080,7 +2082,7 @@ static void process_dev (char *devname)
2080 } 2082 }
2081 } 2083 }
2082 2084
2083#ifdef CONFIG_FEATURE_HDPARM_HDIO_GET_DMA 2085#ifdef CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
2084 if ((verbose && !is_scsi_hd) || get_dma) { 2086 if ((verbose && !is_scsi_hd) || get_dma) {
2085 no_scsi(); 2087 no_scsi();
2086 if (ioctl(fd, HDIO_GET_DMA, &parm)) 2088 if (ioctl(fd, HDIO_GET_DMA, &parm))
@@ -2382,6 +2384,7 @@ int hdparm_main(int argc, char **argv)
2382 unmask = *p++ - '0'; 2384 unmask = *p++ - '0';
2383 } 2385 }
2384 break; 2386 break;
2387#ifdef CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
2385 case 'd': 2388 case 'd':
2386 get_dma = noisy; 2389 get_dma = noisy;
2387 noisy = 1; 2390 noisy = 1;
@@ -2392,6 +2395,7 @@ int hdparm_main(int argc, char **argv)
2392 dma = *p++ - '0'; 2395 dma = *p++ - '0';
2393 } 2396 }
2394 break; 2397 break;
2398#endif /* CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA */
2395 case 'n': 2399 case 'n':
2396 get_nowerr = noisy; 2400 get_nowerr = noisy;
2397 noisy = 1; 2401 noisy = 1;