On 12/26/16 10:38, Michal Meloun wrote:


On 26.12.2016 2:18, Hans Petter Selasky wrote:
Author: hselasky
Date: Mon Dec 26 01:18:07 2016
New Revision: 310559
URL: https://svnweb.freebsd.org/changeset/base/310559

Log:
  Implement register and unregister chrdev in the LinuxKPI.

  Obtained from:        kmacy @
  MFC after:    1 week
  Sponsored by: Mellanox Technologies

Modified:
  head/sys/compat/linuxkpi/common/include/linux/cdev.h
  head/sys/compat/linuxkpi/common/include/linux/fs.h
  head/sys/compat/linuxkpi/common/src/linux_compat.c

Modified: head/sys/compat/linuxkpi/common/include/linux/cdev.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/cdev.h        Sun Dec 25 
22:32:16 2016        (r310558)
+++ head/sys/compat/linuxkpi/common/include/linux/cdev.h        Mon Dec 26 
01:18:07 2016        (r310559)
@@ -95,7 +95,7 @@ cdev_add(struct linux_cdev *cdev, dev_t
        args.mda_gid = 0;
        args.mda_mode = 0700;
        args.mda_si_drv1 = cdev;
-       args.mda_unit = MINOR(dev);
+       args.mda_unit = dev;

        error = make_dev_s(&args, &cdev->cdev, "%s",
            kobject_name(&cdev->kobj));
@@ -121,7 +121,7 @@ cdev_add_ext(struct linux_cdev *cdev, de
        args.mda_gid = gid;
        args.mda_mode = mode;
        args.mda_si_drv1 = cdev;
-       args.mda_unit = MINOR(dev);
+       args.mda_unit = dev;

        error = make_dev_s(&args, &cdev->cdev, "%s/%d",
            kobject_name(&cdev->kobj), MINOR(dev));
@@ -142,6 +142,8 @@ cdev_del(struct linux_cdev *cdev)
        kobject_put(&cdev->kobj);
 }

+struct linux_cdev *linux_find_cdev(const char *name, unsigned major, unsigned 
minor);
+
 #define        cdev    linux_cdev

 #endif /* _LINUX_CDEV_H_ */

Modified: head/sys/compat/linuxkpi/common/include/linux/fs.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/fs.h  Sun Dec 25 22:32:16 
2016        (r310558)
+++ head/sys/compat/linuxkpi/common/include/linux/fs.h  Mon Dec 26 01:18:07 
2016        (r310559)
@@ -2,7 +2,7 @@
  * Copyright (c) 2010 Isilon Systems, Inc.
  * Copyright (c) 2010 iX Systems, Inc.
  * Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -151,6 +151,39 @@ struct file_operations {
 #define        FMODE_WRITE     FWRITE
 #define        FMODE_EXEC      FEXEC

+int __register_chrdev(unsigned int major, unsigned int baseminor,
+    unsigned int count, const char *name,
+    const struct file_operations *fops);
+int __register_chrdev_p(unsigned int major, unsigned int baseminor,
+    unsigned int count, const char *name,
+    const struct file_operations *fops, uid_t uid,
+    gid_t gid, int mode);
+void __unregister_chrdev(unsigned int major, unsigned int baseminor,
+    unsigned int count, const char *name);
+
+static inline void
+unregister_chrdev(unsigned int major, const char *name)
+{
+
+       __unregister_chrdev(major, 0, 256, name);
+}
+
+static inline int
+register_chrdev(unsigned int major, const char *name,
+    const struct file_operations *fops)
+{
+
+       return (__register_chrdev(major, 0, 256, name, fops));
+}
+
+static inline int
+register_chrdev_p(unsigned int major, const char *name,
+    const struct file_operations *fops, uid_t uid, gid_t gid, int mode)
+{
+
+       return (__register_chrdev_p(major, 0, 256, name, fops, uid, gid, mode));
+}
+
 static inline int
 register_chrdev_region(dev_t dev, unsigned range, const char *name)
 {
@@ -184,7 +217,7 @@ static inline dev_t
 iminor(struct inode *inode)
 {

-       return dev2unit(inode->v_rdev);
+       return (MINOR(dev2unit(inode->v_rdev)));

This breaks many kernels:

 --- all_subdir_ibcore ---
 In file included from
/usr2/Meloun/svn/src/sys/modules/ibcore/../../ofed/drivers/infiniband/core/ucma.c:34:
 In file included from
/usr2/Meloun/svn/src/sys/modules/ibcore/../../compat/linuxkpi/common/include/linux/file.h:41:
 
/usr2/Meloun/svn/src/sys/modules/ibcore/../../compat/linuxkpi/common/include/linux/fs.h:220:10:
 error: implicit declaration of function 'MINOR' is invalid in C99
 [-Werror,-Wimplicit-function-declaration]
         return (MINOR(dev2unit(inode->v_rdev)));
                 ^


I'll fix shortly.

--HPS
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to