2002-12-02 Joel Sherrill <joel@OARcorp.com>

* include/rtems/libio.h: Internally use a union of an unsigned64
	and major/minor device so we don't get into trouble shifting.
	The h8300 seemed to be impossible to remove warnings otherwise.
	Eventually the structure definition of a dev_t might be better anyway.
	* include/sys/ioccom.h: Added casts to remove warnings on 16 bit
	targets.
This commit is contained in:
Joel Sherrill
2002-12-02 19:13:26 +00:00
parent 25f37e8618
commit 7e476f0279
3 changed files with 57 additions and 1 deletions

View File

@@ -455,6 +455,7 @@ typedef int (*rtems_libio_lseek_t)(
* Macros
*/
#if 0
#define rtems_filesystem_make_dev_t( _major, _minor ) \
((((dev_t)(_major)) << 32) | (dev_t)(_minor))
@@ -463,6 +464,52 @@ typedef int (*rtems_libio_lseek_t)(
#define rtems_filesystem_dev_minor_t( _dev ) \
(rtems_device_minor_number) ((_dev) & 0xFFFFFFFF)
#else
#include <unistd.h>
union __dev_t {
dev_t device;
struct {
rtems_device_major_number major;
rtems_device_minor_number minor;
} __overlay;
};
static inline dev_t rtems_filesystem_make_dev_t(
rtems_device_major_number _major,
rtems_device_minor_number _minor
)
{
union __dev_t temp;
temp.__overlay.major = _major;
temp.__overlay.minor = _minor;
return temp.device;
}
static inline rtems_device_major_number rtems_filesystem_dev_major_t(
dev_t device
)
{
union __dev_t temp;
temp.device = device;
return temp.__overlay.major;
}
static inline rtems_device_minor_number rtems_filesystem_dev_minor_t(
dev_t device
)
{
union __dev_t temp;
temp.device = device;
return temp.__overlay.minor;
}
#endif
#define rtems_filesystem_split_dev_t( _dev, _major, _minor ) \
do { \

View File

@@ -55,7 +55,7 @@
#define IOC_DIRMASK 0xe0000000 /* mask for IN/OUT/VOID */
#define _IOC(inout,group,num,len) \
(inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))
((unsigned32)inout | (unsigned32) ((unsigned32)((unsigned32)len & IOCPARM_MASK) << 16) | (unsigned32)((group) << 8) | (unsigned32)(num))
#define _IO(g,n) _IOC(IOC_VOID, (g), (n), 0)
#define _IOR(g,n,t) _IOC(IOC_OUT, (g), (n), sizeof(t))
#define _IOW(g,n,t) _IOC(IOC_IN, (g), (n), sizeof(t))