Import Linux's percpu_counter
[akaros.git] / kern / include / linux_compat.h
index a2fd051..d4ca975 100644 (file)
 //#define CONFIG_INET 1        // will deal with this manually
 #define CONFIG_PCI_MSI 1
 
-#define __rcu
-#define rcu_read_lock()
-#define rcu_read_unlock()
-#define rcu_dereference(x) (x)
-#define rcu_dereference_protected(x, y) (x)
-#ifndef rcu_assign_pointer
-#define rcu_assign_pointer(dst, src) (dst) = (src)
-#endif
-#define RCU_INIT_POINTER(dst, src) rcu_assign_pointer(dst, src)
-#define synchronize_rcu()
-#define synchronize_sched()
+static inline void synchronize_sched(void)
+{
+       synchronize_rcu();
+}
 
 #define atomic_cmpxchg(_addr, _old, _new)                                      \
 ({                                                                             \
@@ -207,7 +200,7 @@ static void msleep(unsigned int msecs)
 
 /* Linux printk front ends */
 #ifndef pr_fmt
-#define pr_fmt(fmt) "bnx2x:" fmt
+#define pr_fmt(fmt) fmt
 #endif
 
 #define KERN_EMERG ""
@@ -243,24 +236,28 @@ static void msleep(unsigned int msecs)
        printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
 #define pr_cont(fmt, ...) \
        printk(KERN_CONT pr_fmt(fmt), ##__VA_ARGS__)
+
+#define __print_netif_name(dev) (dev)->drv_name[0] ? (dev)->drv_name : "netdev"
+
 #define netdev_printk(lvl, dev, fmt, ...) \
-       printk("[netdev]: " fmt, ##__VA_ARGS__)
+       printk("[%s]: " fmt, __print_netif_name(dev), ##__VA_ARGS__)
 #define netdev_err(dev, fmt, ...) \
-       printk("[netdev]: " fmt, ##__VA_ARGS__)
+       printk("[%s]: " fmt, __print_netif_name(dev), ##__VA_ARGS__)
 #define netdev_info(dev, fmt, ...) \
-       printk("[netdev]: " fmt, ##__VA_ARGS__)
+       printk("[%s]: " fmt, __print_netif_name(dev), ##__VA_ARGS__)
 #define netdev_dbg(dev, fmt, ...) \
-       printk("[netdev]: " fmt, ##__VA_ARGS__)
+       printk("[%s]: " fmt, __print_netif_name(dev), ##__VA_ARGS__)
 #define netif_err(priv, type, dev, fmt, ...) \
-       printk("[netdev]: " fmt, ##__VA_ARGS__)
+       printk("[%s]: " fmt, __print_netif_name(dev), ##__VA_ARGS__)
 #define netif_warn(priv, type, dev, fmt, ...) \
-       printk("[netdev]: " fmt, ##__VA_ARGS__)
+       printk("[%s]: " fmt, __print_netif_name(dev), ##__VA_ARGS__)
 #define netif_notice(priv, type, dev, fmt, ...) \
-       printk("[netdev]: " fmt, ##__VA_ARGS__)
+       printk("[%s]: " fmt, __print_netif_name(dev), ##__VA_ARGS__)
 #define netif_info(priv, type, dev, fmt, ...) \
-       printk("[netdev]: " fmt, ##__VA_ARGS__)
+       printk("[%s]: " fmt, __print_netif_name(dev), ##__VA_ARGS__)
 #define netif_dbg(priv, type, dev, fmt, ...) \
-       printk("[netdev]: " fmt, ##__VA_ARGS__)
+       printk("[%s]: " fmt, __print_netif_name(dev), ##__VA_ARGS__)
+
 #define dev_err(dev, fmt, ...) \
        printk("[dev]: " fmt, ##__VA_ARGS__)
 #define dev_info(dev, fmt, ...) \
@@ -520,18 +517,13 @@ static void free_netdev(struct ether *dev)
 /* u64 on linux, but a u32 on plan 9.  the typedef is probably a good idea */
 typedef unsigned int netdev_features_t;
 
-/* Linux has features, hw_features, and a couple others.  Plan 9 just has
- * features.  This #define should work for merging hw and regular features.  We
- * spatched away the hw_enc and vlan feats. */
-#define hw_features feat
-
 /* Attempted conversions for plan 9 features.  For some things, like rx
  * checksums, the driver flags the block (e.g. Budpck) to say if a receive
  * checksum was already done.  There is no flag for saying the device can do
  * it.  For transmits, the stack needs to know in advance if the device can
  * handle the checksum or not. */
 #define NETIF_F_RXHASH                         0
-#define NETIF_F_RXCSUM                         0
+#define NETIF_F_RXCSUM                         NETF_RXCSUM
 #define NETIF_F_LRO                                    NETF_LRO
 #define NETIF_F_GRO                                    0
 #define NETIF_F_LOOPBACK                       0
@@ -602,7 +594,7 @@ typedef enum netdev_tx netdev_tx_t;
 #define ASSERT_RTNL(...)
 
 #define synchronize_irq(x) warn_once("Asked to sync IRQ %d, unsupported", x)
-#define HZ 100
+#define HZ 1000
 
 /* Linux has a PCI device id struct.  Drivers make tables of their supported
  * devices, and this table is handled by higher level systems.  We don't have
@@ -815,8 +807,6 @@ static bool pci_dev_run_wake(struct pci_device *dev)
  * using them, but we can leave the functions around to remind us what the code
  * is supposed to do, especially for things we don't support yet. */
 #define SET_NETDEV_DEV(...)
-#define netif_carrier_off(...)
-#define netif_carrier_on(...)
 /* May need to do something with edev's queues or flags. */
 #define netif_tx_wake_all_queues(...)
 #define netif_tx_wake_queue(...)
@@ -872,14 +862,14 @@ static inline int request_firmware(const struct firmware **fwp,
                                                                   struct device *ignored)
 {
        struct firmware *ret_fw;
-       struct file *fw_file;
+       struct file_or_chan *fw_file;
        void *fw_data;
        char dirname[] = "/lib/firmware/";
        /* could dynamically allocate the min of this and some MAX */
        char fullpath[sizeof(dirname) + strlen(file_name) + 1];
 
        snprintf(fullpath, sizeof(fullpath), "%s%s", dirname, file_name);
-       fw_file = do_file_open(fullpath, O_READ, 0);
+       fw_file = foc_open(fullpath, O_READ, 0);
        if (!fw_file) {
                printk("Unable to find firmware file %s!\n", fullpath);
                return -1;
@@ -887,14 +877,14 @@ static inline int request_firmware(const struct firmware **fwp,
        fw_data = kread_whole_file(fw_file);
        if (!fw_data) {
                printk("Unable to load firmware file %s!\n", fullpath);
-               kref_put(&fw_file->f_kref);
+               foc_decref(fw_file);
                return -1;
        }
        ret_fw = kmalloc(sizeof(struct firmware), MEM_WAIT);
        ret_fw->data = fw_data;
-       ret_fw->size = fw_file->f_dentry->d_inode->i_size;
+       ret_fw->size = foc_get_len(fw_file);
        *fwp = ret_fw;
-       kref_put(&fw_file->f_kref);
+       foc_decref(fw_file);
        return 0;
 }