lkml.org 
[lkml]   [2003]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] Atari NCR5380 SCSI: bitops operate on long
Atari NCR5380 SCSI: bitops operate on long, not char.

This also introduces the DECLARE_BITMAP() and CLEAR_BITMAP() macros we have in
2.5.x.

--- linux-2.4.x/drivers/scsi/atari_NCR5380.c Fri Mar 1 17:28:31 2002
+++ linux-m68k-2.4.x/drivers/scsi/atari_NCR5380.c Sat Mar 2 14:31:07 2002
@@ -309,13 +309,8 @@
#undef TAG_NONE
#define TAG_NONE 0xff

-/* For the m68k, the number of bits in 'allocated' must be a multiple of 32! */
-#if (MAX_TAGS % 32) != 0
-#error "MAX_TAGS must be a multiple of 32!"
-#endif
-
typedef struct {
- char allocated[MAX_TAGS/8];
+ DECLARE_BITMAP(allocated, MAX_TAGS);
int nr_allocated;
int queue_size;
} TAG_ALLOC;
@@ -334,7 +329,7 @@
for( target = 0; target < 8; ++target ) {
for( lun = 0; lun < 8; ++lun ) {
ta = &TagAlloc[target][lun];
- memset( &ta->allocated, 0, MAX_TAGS/8 );
+ CLEAR_BITMAP( ta->allocated, MAX_TAGS );
ta->nr_allocated = 0;
/* At the beginning, assume the maximum queue size we could
* support (MAX_TAGS). This value will be decreased if the target
@@ -394,8 +389,8 @@
else {
TAG_ALLOC *ta = &TagAlloc[cmd->target][cmd->lun];

- cmd->tag = find_first_zero_bit( &ta->allocated, MAX_TAGS );
- set_bit( cmd->tag, &ta->allocated );
+ cmd->tag = find_first_zero_bit( ta->allocated, MAX_TAGS );
+ set_bit( cmd->tag, ta->allocated );
ta->nr_allocated++;
TAG_PRINTK( "scsi%d: using tag %d for target %d lun %d "
"(now %d tags in use)\n",
@@ -424,7 +419,7 @@
}
else {
TAG_ALLOC *ta = &TagAlloc[cmd->target][cmd->lun];
- clear_bit( cmd->tag, &ta->allocated );
+ clear_bit( cmd->tag, ta->allocated );
ta->nr_allocated--;
TAG_PRINTK( "scsi%d: freed tag %d for target %d lun %d\n",
H_NO(cmd), cmd->tag, cmd->target, cmd->lun );
@@ -443,7 +438,7 @@
for( target = 0; target < 8; ++target ) {
for( lun = 0; lun < 8; ++lun ) {
ta = &TagAlloc[target][lun];
- memset( &ta->allocated, 0, MAX_TAGS/8 );
+ CLEAR_BITMAP( ta->allocated, MAX_TAGS );
ta->nr_allocated = 0;
}
}
--- linux-2.4.x/include/linux/types.h Wed May 29 10:14:25 2002
+++ linux-m68k-2.4.x/include/linux/types.h Sun Mar 2 15:58:24 2003
@@ -3,6 +3,13 @@

#ifdef __KERNEL__
#include <linux/config.h>
+
+#define BITS_TO_LONGS(bits) \
+ (((bits)+BITS_PER_LONG-1)/BITS_PER_LONG)
+#define DECLARE_BITMAP(name,bits) \
+ unsigned long name[BITS_TO_LONGS(bits)]
+#define CLEAR_BITMAP(name,bits) \
+ memset(name, 0, BITS_TO_LONGS(bits)*sizeof(unsigned long))
#endif

#include <linux/posix_types.h>
Gr{oetje,eeting}s,
Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:34    [W:0.031 / U:0.332 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site