svn commit: r310559 - in head/sys/compat/linuxkpi/common: include/linux src
Hans Petter Selasky
hps at selasky.org
Mon Dec 26 09:48:37 UTC 2016
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
More information about the svn-src-all
mailing list