+struct globals {
+ smallint get_identity, get_geom;
+ smallint do_flush;
+ smallint do_ctimings, do_timings;
+ smallint reread_partn;
+ smallint set_piomode, noisy_piomode;
+ smallint set_readahead, get_readahead;
+ smallint set_readonly, get_readonly;
+ smallint set_unmask, get_unmask;
+ smallint set_mult, get_mult;
+#ifdef HDIO_GET_QDMA
+ smallint get_dma_q;
+#ifdef HDIO_SET_QDMA
+ smallint set_dma_q;
+#endif
+#endif
+ smallint set_nowerr, get_nowerr;
+ smallint set_keep, get_keep;
+ smallint set_io32bit, get_io32bit;
+ int piomode;
+ unsigned long Xreadahead;
+ unsigned long readonly;
+ unsigned long unmask;
+ unsigned long mult;
+#ifdef HDIO_SET_QDMA
+ unsigned long dma_q;
+#endif
+ unsigned long nowerr;
+ unsigned long keep;
+ unsigned long io32bit;
+#if ENABLE_FEATURE_HDPARM_HDIO_GETSET_DMA
+ unsigned long dma;
+ smallint set_dma, get_dma;
+#endif
+#ifdef HDIO_DRIVE_CMD
+ smallint set_xfermode, get_xfermode;
+ smallint set_dkeep, get_dkeep;
+ smallint set_standby, get_standby;
+ smallint set_lookahead, get_lookahead;
+ smallint set_prefetch, get_prefetch;
+ smallint set_defects, get_defects;
+ smallint set_wcache, get_wcache;
+ smallint set_doorlock, get_doorlock;
+ smallint set_seagate, get_seagate;
+ smallint set_standbynow, get_standbynow;
+ smallint set_sleepnow, get_sleepnow;
+ smallint get_powermode;
+ smallint set_apmmode, get_apmmode;
+ int xfermode_requested;
+ unsigned long dkeep;
+ unsigned long standby_requested; /* 0..255 */
+ unsigned long lookahead;
+ unsigned long prefetch;
+ unsigned long defects;
+ unsigned long wcache;
+ unsigned long doorlock;
+ unsigned long apmmode;
+#endif
+ USE_FEATURE_HDPARM_GET_IDENTITY( smallint get_IDentity;)
+ USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( smallint set_busstate, get_busstate;)
+ USE_FEATURE_HDPARM_HDIO_DRIVE_RESET( smallint perform_reset;)
+ USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( smallint perform_tristate;)
+ USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF(smallint unregister_hwif;)
+ USE_FEATURE_HDPARM_HDIO_SCAN_HWIF( smallint scan_hwif;)
+ USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( unsigned long busstate;)
+ USE_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( unsigned long tristate;)
+ USE_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF(unsigned long hwif;)
+#if ENABLE_FEATURE_HDPARM_HDIO_SCAN_HWIF
+ unsigned long hwif_data;
+ unsigned long hwif_ctrl;
+ unsigned long hwif_irq;
+#endif
+#ifdef DO_FLUSHCACHE
+ unsigned char flushcache[4] = { WIN_FLUSHCACHE, 0, 0, 0 };
+#endif
+};
+#define G (*(struct globals*)&bb_common_bufsiz1)
+struct BUG_G_too_big {
+ char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1];
+};
+#define get_identity (G.get_identity )
+#define get_geom (G.get_geom )
+#define do_flush (G.do_flush )
+#define do_ctimings (G.do_ctimings )
+#define do_timings (G.do_timings )
+#define reread_partn (G.reread_partn )
+#define set_piomode (G.set_piomode )
+#define noisy_piomode (G.noisy_piomode )
+#define set_readahead (G.set_readahead )
+#define get_readahead (G.get_readahead )
+#define set_readonly (G.set_readonly )
+#define get_readonly (G.get_readonly )
+#define set_unmask (G.set_unmask )
+#define get_unmask (G.get_unmask )
+#define set_mult (G.set_mult )
+#define get_mult (G.get_mult )
+#define set_dma_q (G.set_dma_q )
+#define get_dma_q (G.get_dma_q )
+#define set_nowerr (G.set_nowerr )
+#define get_nowerr (G.get_nowerr )
+#define set_keep (G.set_keep )
+#define get_keep (G.get_keep )
+#define set_io32bit (G.set_io32bit )
+#define get_io32bit (G.get_io32bit )
+#define piomode (G.piomode )
+#define Xreadahead (G.Xreadahead )
+#define readonly (G.readonly )
+#define unmask (G.unmask )
+#define mult (G.mult )
+#define dma_q (G.dma_q )
+#define nowerr (G.nowerr )
+#define keep (G.keep )
+#define io32bit (G.io32bit )
+#define dma (G.dma )
+#define set_dma (G.set_dma )
+#define get_dma (G.get_dma )
+#define set_xfermode (G.set_xfermode )
+#define get_xfermode (G.get_xfermode )
+#define set_dkeep (G.set_dkeep )
+#define get_dkeep (G.get_dkeep )
+#define set_standby (G.set_standby )
+#define get_standby (G.get_standby )
+#define set_lookahead (G.set_lookahead )
+#define get_lookahead (G.get_lookahead )
+#define set_prefetch (G.set_prefetch )
+#define get_prefetch (G.get_prefetch )
+#define set_defects (G.set_defects )
+#define get_defects (G.get_defects )
+#define set_wcache (G.set_wcache )
+#define get_wcache (G.get_wcache )
+#define set_doorlock (G.set_doorlock )
+#define get_doorlock (G.get_doorlock )
+#define set_seagate (G.set_seagate )
+#define get_seagate (G.get_seagate )
+#define set_standbynow (G.set_standbynow )
+#define get_standbynow (G.get_standbynow )
+#define set_sleepnow (G.set_sleepnow )
+#define get_sleepnow (G.get_sleepnow )
+#define get_powermode (G.get_powermode )
+#define set_apmmode (G.set_apmmode )
+#define get_apmmode (G.get_apmmode )
+#define xfermode_requested (G.xfermode_requested )
+#define dkeep (G.dkeep )
+#define standby_requested (G.standby_requested )
+#define lookahead (G.lookahead )
+#define prefetch (G.prefetch )
+#define defects (G.defects )
+#define wcache (G.wcache )
+#define doorlock (G.doorlock )
+#define apmmode (G.apmmode )
+#define get_IDentity (G.get_IDentity )
+#define set_busstate (G.set_busstate )
+#define get_busstate (G.get_busstate )
+#define perform_reset (G.perform_reset )
+#define perform_tristate (G.perform_tristate )
+#define unregister_hwif (G.unregister_hwif )
+#define scan_hwif (G.scan_hwif )
+#define busstate (G.busstate )
+#define tristate (G.tristate )
+#define hwif (G.hwif )
+#define hwif_data (G.hwif_data )
+#define hwif_ctrl (G.hwif_ctrl )
+#define hwif_irq (G.hwif_irq )