Red Hat Bugzilla – Bug 249811
Type __s64 may be not decleared
Last modified: 2014-06-18 04:00:13 EDT
Description of problem:
Type __s64 may be not declared in the file /usr/include/linux/videodev2.h on
line 622 and compiler exit with an error. I think it will be not bad to use #if
Version-Release number of selected component (if applicable):
[root@build linux]# rpm -qf videodev2.h
Small patch attached.
Created attachment 160104 [details]
Patch to /usr/include/linux/videodev2.patch
It seems, you have incorrect videodev2.h header, probably derived from somewhere
else. Please, check twice yours kernel-header package. It must contain correct
version of mentioned header.
Please, inform me about the result. And provide me your kernel-header package in
Created attachment 160728 [details]
[root@build ~]# rpm -q kernel-headers
It's unmodified RPM-package from RHEL5 distr.
So you have non original videodev2.h. As you can see there is correct header
in the original rpm, for sure.
Please, reinstall this package on your pc.
I think you don't understand my question.
On the line 622 you can see "__s64 value64;". Where the type "__s64" declared?
I've compile a program and compilation failed because of undeclared type so as a
variant I propose to use "#if defined" before this line.
Yep, I've got it... But I can't reproduce this problem, I mean, I have no
problem with __s64 type using in this struct. Can you write some reproducing
this bug code.
I found that while I compiled kopete 0.12.2 http://kopete.kde.org/releases.php
(Source package link).
Type "__s64" declared in the asm/types.h. We can see "#if defined(__GNUC__) &&
!defined(__STRICT_ANSI__)" above this declaration. But there is no checking of
this condition in videodev2.h.
Ok. The fix proposed by you is not the root of the problem. This problem was
already discussed on LKML: http://marc.info/?l=linux-kernel&m=115830263230795&w=2
I think, the best for you in this case to use the same construction as used for
__u64, for the same reason, in kopete/libkopete/avdevice/videodevice.h, just add
the following lines to this header:
#ifndef __s64 //required by videodev.h
#define __s64 __signed__ long long
#endif // __s64
Well, I can solve problem myself. If it is not a problem of kernel-headers it's
good. Thank you!