Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1554386

[PATCH] libata-eh: Use switch() instead of sparse array for protocol strings

From Geert Uytterhoeven <geert@linux-m68k.org>
Newsgroups linux.kernel
Subject [PATCH] libata-eh: Use switch() instead of sparse array for protocol strings
Date 2017-01-09 16:00 +0100
Message-ID <sXJAu-5tx-33@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


Replace the sparse 256-pointer array for looking up protocol strings by
a switch() statement to reduce kernel size.

According to bloat-o-meter, this saves 910 bytes on m68k (32-bit), and
1892 bytes on arm64 (64-bit).

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
 drivers/ata/libata-eh.c | 44 +++++++++++++++++++++++++++++++-------------
 1 file changed, 31 insertions(+), 13 deletions(-)

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 0e1ec37070d19b64..e7196fc29ff09434 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2606,21 +2606,39 @@ static void ata_eh_link_report(struct ata_link *link)
 				[DMA_TO_DEVICE]		= "out",
 				[DMA_FROM_DEVICE]	= "in",
 			};
-			static const char *prot_str[] = {
-				[ATA_PROT_UNKNOWN]	= "unknown",
-				[ATA_PROT_NODATA]	= "nodata",
-				[ATA_PROT_PIO]		= "pio",
-				[ATA_PROT_DMA]		= "dma",
-				[ATA_PROT_NCQ]		= "ncq dma",
-				[ATA_PROT_NCQ_NODATA]	= "ncq nodata",
-				[ATAPI_PROT_NODATA]	= "nodata",
-				[ATAPI_PROT_PIO]	= "pio",
-				[ATAPI_PROT_DMA]	= "dma",
-			};
+			const char *prot_str = NULL;
 
+			switch (qc->tf.protocol) {
+			case ATA_PROT_UNKNOWN:
+				prot_str = "unknown";
+				break;
+			case ATA_PROT_NODATA:
+				prot_str = "nodata";
+				break;
+			case ATA_PROT_PIO:
+				prot_str = "pio";
+				break;
+			case ATA_PROT_DMA:
+				prot_str = "dma";
+				break;
+			case ATA_PROT_NCQ:
+				prot_str = "ncq dma";
+				break;
+			case ATA_PROT_NCQ_NODATA:
+				prot_str = "ncq nodata";
+				break;
+			case ATAPI_PROT_NODATA:
+				prot_str = "nodata";
+				break;
+			case ATAPI_PROT_PIO:
+				prot_str = "pio";
+				break;
+			case ATAPI_PROT_DMA:
+				prot_str = "dma";
+				break;
+			}
 			snprintf(data_buf, sizeof(data_buf), " %s %u %s",
-				 prot_str[qc->tf.protocol], qc->nbytes,
-				 dma_str[qc->dma_dir]);
+				 prot_str, qc->nbytes, dma_str[qc->dma_dir]);
 		}
 
 		if (ata_is_atapi(qc->tf.protocol)) {
-- 
1.9.1

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH] libata-eh: Use switch() instead of sparse array for protocol strings Geert Uytterhoeven <geert@linux-m68k.org> - 2017-01-09 16:00 +0100
  Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Tejun Heo <tj@kernel.org> - 2017-01-09 16:30 +0100
    Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Geert Uytterhoeven <geert@linux-m68k.org> - 2017-01-09 16:50 +0100
      Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Tejun Heo <tj@kernel.org> - 2017-01-09 17:10 +0100
        Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Christoph Hellwig <hch@infradead.org> - 2017-01-09 17:30 +0100
          Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Christoph Hellwig <hch@infradead.org> - 2017-01-09 18:30 +0100
            Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Tejun Heo <tj@kernel.org> - 2017-01-09 18:40 +0100
        Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Geert Uytterhoeven <geert@linux-m68k.org> - 2017-01-09 17:40 +0100
          Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Christoph Hellwig <hch@infradead.org> - 2017-01-09 18:30 +0100
            Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Tejun Heo <tj@kernel.org> - 2017-01-09 18:40 +0100
              Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Geert Uytterhoeven <geert@linux-m68k.org> - 2017-01-09 19:30 +0100
                Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Tejun Heo <tj@kernel.org> - 2017-01-09 20:50 +0100
                Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Geert Uytterhoeven <geert@linux-m68k.org> - 2017-01-09 21:30 +0100
                Re: [PATCH] libata-eh: Use switch() instead of sparse array for  protocol strings Tejun Heo <tj@kernel.org> - 2017-01-09 21:40 +0100

csiph-web