lmc_ver.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _IF_LMC_LINUXVER_
  2. #define _IF_LMC_LINUXVER_
  3.  /*
  4.   * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
  5.   * All rights reserved.  www.lanmedia.com
  6.   *
  7.   * This code is written by:
  8.   * Andrew Stanley-Jones (asj@cban.com)
  9.   * Rob Braun (bbraun@vix.com),
  10.   * Michael Graff (explorer@vix.com) and
  11.   * Matt Thomas (matt@3am-software.com).
  12.   *
  13.   * This software may be used and distributed according to the terms
  14.   * of the GNU General Public License version 2, incorporated herein by reference.
  15.   */
  16.  /*
  17.   * This file defines and controls all linux version
  18.   * differences.
  19.   *
  20.   * This is being done to keep 1 central location where all linux
  21.   * version differences can be kept and maintained.  as this code was
  22.   * found version issues where pepered throughout the source code and
  23.   * made the souce code not only hard to read but version problems hard
  24.   * to track down.  If I'm overiding a function/etc with something in
  25.   * this file it will be prefixed by "LMC_" which will mean look
  26.   * here for the version dependant change that's been done.
  27.   *
  28.   */
  29. #if LINUX_VERSION_CODE < 0x20363
  30. #define net_device device
  31. #endif
  32. #if LINUX_VERSION_CODE < 0x20363
  33. #define LMC_XMITTER_BUSY(x) (x)->tbusy = 1
  34. #define LMC_XMITTER_FREE(x) (x)->tbusy = 0
  35. #define LMC_XMITTER_INIT(x) (x)->tbusy = 0
  36. #else
  37. #define LMC_XMITTER_BUSY(x) netif_stop_queue(x)
  38. #define LMC_XMITTER_FREE(x) netif_wake_queue(x)
  39. #define LMC_XMITTER_INIT(x) netif_start_queue(x)
  40. #endif
  41. #if LINUX_VERSION_CODE < 0x20100
  42. //typedef unsigned int u_int32_t;
  43. #define  LMC_SETUP_20_DEV {
  44.                              int indx; 
  45.                              for (indx = 0; indx < DEV_NUMBUFFS; indx++) 
  46.                                 skb_queue_head_init (&dev->buffs[indx]); 
  47.                           } 
  48.                           dev->family = AF_INET; 
  49.                           dev->pa_addr = 0; 
  50.                           dev->pa_brdaddr = 0; 
  51.                           dev->pa_mask = 0xFCFFFFFF; 
  52.                           dev->pa_alen = 4; /* IP addr.  sizeof(u32) */
  53. #else
  54. #define LMC_SETUP_20_DEV
  55. #endif
  56. #if LINUX_VERSION_CODE < 0x20155 /* basically 2.2 plus */
  57. #define LMC_DEV_KFREE_SKB(skb) dev_kfree_skb((skb), FREE_WRITE)
  58. #define LMC_PCI_PRESENT() pcibios_present()
  59. #else /* Mostly 2.0 kernels */
  60. #define LMC_DEV_KFREE_SKB(skb) dev_kfree_skb(skb)
  61. #define LMC_PCI_PRESENT() pci_present()
  62. #endif
  63. #if LINUX_VERSION_CODE < 0x20200
  64. #else
  65. #endif
  66. #if LINUX_VERSION_CODE < 0x20100
  67. #define LMC_SKB_FREE(skb, val) (skb->free = val)
  68. #else
  69. #define LMC_SKB_FREE(skb, val)
  70. #endif
  71. #if (LINUX_VERSION_CODE >= 0x20200)
  72. #define LMC_SPIN_FLAGS                unsigned long flags;
  73. #define LMC_SPIN_LOCK_INIT(x)         spin_lock_init(&(x)->lmc_lock);
  74. #define LMC_SPIN_UNLOCK(x)            ((x)->lmc_lock = SPIN_LOCK_UNLOCKED)
  75. #define LMC_SPIN_LOCK_IRQSAVE(x)      spin_lock_irqsave (&(x)->lmc_lock, flags);
  76. #define LMC_SPIN_UNLOCK_IRQRESTORE(x) spin_unlock_irqrestore (&(x)->lmc_lock, flags);
  77. #else
  78. #define LMC_SPIN_FLAGS
  79. #define LMC_SPIN_LOCK_INIT(x)
  80. #define LMC_SPIN_UNLOCK(x)
  81. #define LMC_SPIN_LOCK_IRQSAVE(x)
  82. #define LMC_SPIN_UNLOCK_IRQRESTORE(x)
  83. #endif
  84. #if LINUX_VERSION_CODE >= 0x20100
  85. #define LMC_COPY_FROM_USER(x, y, z) if(copy_from_user ((x), (y), (z))) return -EFAULT
  86. #define LMC_COPY_TO_USER(x, y, z) if(copy_to_user ((x), (y), (z))) return -EFAULT
  87. #else
  88. #define LMC_COPY_FROM_USER(x, y, z) if(verify_area(VERIFY_READ, (y), (z))) 
  89.                return -EFAULT; 
  90.                                     memcpy_fromfs ((x), (y), (z))
  91. #define LMC_COPY_TO_USER(x, y, z)   if(verify_area(VERIFY_WRITE, (x), (z))) 
  92.                                return -EFAULT; 
  93.                                     memcpy_tofs ((x), (y), (z))
  94. #endif
  95. #endif