2.6.17.8-rt8: Compile Error in module realtime-lsm/realcap.c and misdn/avm_fritz.c - error: syntax error before string constant

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I'm not a programmer at all, but I tried to compile a new kernel due to 
needed realtime capabilities for JACK audio server, though.

I followed mainly this howto 
http://ubuntustudio.com/wiki/index.php/Dapper:Vanilla_Kernel_With_Realtime_Preemption

But I ran into problems with the needed rt patch of Ingo Molnar: 
http://people.redhat.com/mingo/realtime-preempt/patch-2.6.17-rt8

It failed on the 2.6.17.8 in 1 chunk on the Makefile and 1 chunk of 
kernel/sched.c .

Therefore I searched the mentioned first lines, and did it by 'hand' :-(

=================
This is what I changed in Makefile:
=================

EXTRAVERSION = .8-rt8

=================
This is what I did in kernel/sched.c:
=================

   4763
   4764 /*
   4765  * cond_resched_lock() - if a reschedule is pending, drop the 
given lock,
   4766  * call schedule, and on return reacquire the lock.
   4767  *
   4768  * This works OK both with and without CONFIG_PREEMPT.  We do 
strange low-level
   4769  * operations here to prevent schedule() from being called twice 
(once via
   4770  *    * spin_unlock(), once by hand).
   4771  *       */
   4772  int __cond_resched_raw_spinlock(raw_spinlock_t *lock)
   4773   {
   4774         int ret = 0;
   4775
   4776         if (need_lockbreak_raw(lock)) {
   4777                 spin_unlock(lock);
   4778                 cpu_relax();
   4779                 spin_lock(lock);
   4780                 ret = 1;
   4781         }
   4782         if (need_resched()) {
   4783                 spin_unlock_no_resched(lock);
   4784                 __cond_resched();
   4785                 spin_lock(lock);
   4786                 ret = 1;
   4787         }
   4788         return ret;
   4789   }
   4790
   4791  EXPORT_SYMBOL(__cond_resched_raw_spinlock);
   4792
   4793  #ifdef CONFIG_PREEMPT_RT
   4794
   4795  int __cond_resched_spinlock(spinlock_t *lock)
   4796  {
   4797  #if (defined(CONFIG_SMP) && defined(CONFIG_PREEMPT)) || 
defined(CONFIG_PREEMPT_RT)
   4798         if (lock->break_lock) {
   4799                 lock->break_lock = 0;
   4800                 _spin_unlock(lock);
   4801                 __cond_resched();
   4802                 _spin_lock(lock);
   4803                 return 1;
   4804         }
   4805 #endif
   4806         return 0;
   4807  }
   4808
   4809  EXPORT_SYMBOL(__cond_resched_spinlock);
   4810
   4811  #endif
   4812
   4813
   4814  /*
   4815   * Preempt a softirq context if necessary:
   4816   */
   4817   int __sched cond_resched_softirq(void)
   4818   {
   4819  #ifndef CONFIG_PREEMPT_RT
   4820         BUG_ON(!in_softirq());
   4821
   4822         if (softirq_need_resched()) {
   4823                 __local_bh_enable();
   4824                 __cond_resched();
   4825                 local_bh_disable();
   4826                 return 1;
   4827         }
   4828  #endif
   4829         return 0;
   4830  }
   4831
   4832  EXPORT_SYMBOL(cond_resched_softirq);
   4833
   4834  /*
   4835   * Preempt a hardirq context if necessary:
   4836   */
   4837  int cond_resched_hardirq(void)
   4838  {
   4839         BUG_ON(!in_irq());
   4840
   4841         if (hardirq_need_resched()) {
   4842                 irq_exit();
   4843                 __cond_resched();
   4844                 irq_enter();
   4845                 return 1;
   4846         }
   4847         return 0;
   4848  }
   4849
   4850  EXPORT_SYMBOL(cond_resched_hardirq);
   4851
   4852  /*
   4853   * Preempt any context:
   4854   */
   4855  int cond_resched_all(void)
   4856  {
   4857         if (hardirq_count())
   4858                 return cond_resched_hardirq();
   4859         if (softirq_count())
   4860                 return cond_resched_softirq();
   4861         return cond_resched();
   4862  }
   4863
   4864  EXPORT_SYMBOL(cond_resched_all);
   4865
   4866  #ifdef CONFIG_PREEMPT_VOLUNTARY
   4867
   4868  int voluntary_preemption = 1;
   4869
   4870  EXPORT_SYMBOL(voluntary_preemption);
   4871
   4872  static int __init voluntary_preempt_setup (char *str)
   4873  {
   4874         if (!strncmp(str, "off", 3))
   4875                 voluntary_preemption = 0;
   4876         else
   4877                 get_option(&str, &voluntary_preemption);
   4878         if (!voluntary_preemption)
   4879                 printk("turning off voluntary preemption!\n");
   4880
   4881         return 1;
   4882  }
   4883
   4884  __setup("voluntary-preempt=", voluntary_preempt_setup);
   4885
   4886  #endif
   4887
   4888  /**
   4889  *    * yield - yield the current processor to other threads.
   4890  *
   4891  *
   4892  * this is a shortcut for kernel-space yielding - it marks the
   4893  * thread runnable and calls sys_sched_yield().
   4894  */

====================
diff -u format kernel/sched.c
====================

root@ubuntu:/usr/src/linux # diff -u  ../../sched.c.old  kernel/sched.c
--- ../../sched.c.old   2006-08-12 19:01:20.000000000 +0200
+++ kernel/sched.c      2006-08-12 19:21:09.000000000 +0200
@@ -4767,45 +4767,127 @@
  *
  * This works OK both with and without CONFIG_PREEMPT.  We do strange 
low-level
  * operations here to prevent schedule() from being called twice (once 
via
- * spin_unlock(), once by hand).
- */
-int cond_resched_lock(spinlock_t *lock)
-{
-       int ret = 0;
-
-       if (need_lockbreak(lock)) {
-               spin_unlock(lock);
-               cpu_relax();
+ *    * spin_unlock(), once by hand).
+ *       */
+ int __cond_resched_raw_spinlock(raw_spinlock_t *lock)
+  {
+       int ret = 0;
+
+       if (need_lockbreak_raw(lock)) {
+               spin_unlock(lock);
+               cpu_relax();
+               spin_lock(lock);
                ret = 1;
-               spin_lock(lock);
+       }
+       if (need_resched()) {
+               spin_unlock_no_resched(lock);
+               __cond_resched();
+               spin_lock(lock);
+               ret = 1;
+       }
+       return ret;
+  }
+
+ EXPORT_SYMBOL(__cond_resched_raw_spinlock);
+
+ #ifdef CONFIG_PREEMPT_RT
+
+ int __cond_resched_spinlock(spinlock_t *lock)
+ {
+ #if (defined(CONFIG_SMP) && defined(CONFIG_PREEMPT)) || 
defined(CONFIG_PREEMPT_RT)
+       if (lock->break_lock) {
+               lock->break_lock = 0;
+               _spin_unlock(lock);
+               __cond_resched();
+               _spin_lock(lock);
+               return 1;
        }
-       if (need_resched() && __resched_legal(1)) {
-               _raw_spin_unlock(lock);
-               preempt_enable_no_resched();
-               __cond_resched();
-               ret = 1;
-               spin_lock(lock);
-       }
-       return ret;
-}
-EXPORT_SYMBOL(cond_resched_lock);
-
-int __sched cond_resched_softirq(void)
-{
-       BUG_ON(!in_softirq());
-
-       if (need_resched() && __resched_legal(0)) {
-               __local_bh_enable();
-               __cond_resched();
-               local_bh_disable();
+#endif
+       return 0;
+ }
+
+ EXPORT_SYMBOL(__cond_resched_spinlock);
+
+ #endif
+
+
+ /*
+  * Preempt a softirq context if necessary:
+  */
+  int __sched cond_resched_softirq(void)
+  {
+ #ifndef CONFIG_PREEMPT_RT
+       BUG_ON(!in_softirq());
+
+       if (softirq_need_resched()) {
+               __local_bh_enable();
+               __cond_resched();
+               local_bh_disable();
                return 1;
        }
+ #endif
+       return 0;
+ }
+
+ EXPORT_SYMBOL(cond_resched_softirq);
+
+ /*
+  * Preempt a hardirq context if necessary:
+  */
+ int cond_resched_hardirq(void)
+ {
+       BUG_ON(!in_irq());
+
+       if (hardirq_need_resched()) {
+               irq_exit();
+               __cond_resched();
+               irq_enter();
+               return 1;
+       }
        return 0;
-}
-EXPORT_SYMBOL(cond_resched_softirq);
-
-/**
- * yield - yield the current processor to other threads.
+ }
+
+ EXPORT_SYMBOL(cond_resched_hardirq);
+
+ /*
+  * Preempt any context:
+  */
+ int cond_resched_all(void)
+ {
+       if (hardirq_count())
+               return cond_resched_hardirq();
+       if (softirq_count())
+               return cond_resched_softirq();
+       return cond_resched();
+ }
+
+ EXPORT_SYMBOL(cond_resched_all);
+
+ #ifdef CONFIG_PREEMPT_VOLUNTARY
+
+ int voluntary_preemption = 1;
+
+ EXPORT_SYMBOL(voluntary_preemption);
+
+ static int __init voluntary_preempt_setup (char *str)
+ {
+       if (!strncmp(str, "off", 3))
+               voluntary_preemption = 0;
+       else
+               get_option(&str, &voluntary_preemption);
+       if (!voluntary_preemption)
+               printk("turning off voluntary preemption!\n");
+
+       return 1;
+ }
+
+ __setup("voluntary-preempt=", voluntary_preempt_setup);
+
+ #endif
+
+ /**
+ *    * yield - yield the current processor to other threads.
+ *
  *
  * this is a shortcut for kernel-space yielding - it marks the
  * thread runnable and calls sys_sched_yield().


==================
Now I get this errors on compiling the modules:
==================

make[1]: Entering directory `/usr/src/modules/realtime-lsm'
/usr/bin/make -w -f debian/rules kdist_clean kdist_config binary-modules
make[2]: Entering directory `/usr/src/modules/realtime-lsm'
dh_clean
make COMMONCAP=none clean
make[3]: Entering directory `/usr/src/modules/realtime-lsm'
rm -f *.ko *.o none
rm -f *.mod.* .*.cmd
make[3]: Leaving directory `/usr/src/modules/realtime-lsm'
/usr/bin/gcc-4.0
for templ 
in /usr/src/modules/realtime-lsm/debian/realtime-lsm-module-_KVERS_.postinst /usr/src/modules/realtime-lsm/debian/realtime-lsm-module-_KVERS_.postinst.modules.in; 
do \
    cp $templ `echo $templ | sed -e 's/_KVERS_/2.6.17.8-rt8/g'` ; \
  done
for templ in `ls debian/*.modules.in` ; do \
    test -e ${templ%.modules.in}.backup || cp ${templ%.modules.in} 
${templ%.modules.in}.backup 2>/dev/null || true; \
    sed -e 's/##KVERS##/2.6.17.8-rt8/g ;s/#KVERS#/2.6.17.8-rt8/g ; 
s/_KVERS_/2.6.17.8-rt8/g ; s/##KDREV##/1/g ; s/#KDREV#/1/g ; 
s/_KDREV_/1/g' < $templ > ${templ%.modules.in}; \
  done
dh_testdir
dh_testroot
dh_clean -k
make KERNEL_DIR=/usr/src/linux MODVERSIONS=detect 
KERNEL=linux-2.6.17.8-rt8 COMMONCAP=none
make[3]: Entering directory `/usr/src/modules/realtime-lsm'
CONFIG_SECURITY_CAPABILITIES=m
make CC=gcc-4.0 modules -C /usr/src/linux 
SUBDIRS=/usr/src/modules/realtime-lsm
make[4]: Entering directory `/usr/src/linux-2.6.17-rt8'
  CC [M]  /usr/src/modules/realtime-lsm/realcap.o
/usr/src/modules/realtime-lsm/realcap.c:1: warning: -ffunction-sections 
disabled; it makes profiling impossible
/usr/src/modules/realtime-lsm/realcap.c:36: error: syntax error before 
string constant
/usr/src/modules/realtime-lsm/realcap.c:36: warning: type defaults 
to 'int' in declaration of 'MODULE_PARM'
/usr/src/modules/realtime-lsm/realcap.c:36: warning: function 
declaration isn't a prototype
/usr/src/modules/realtime-lsm/realcap.c:36: warning: data definition has 
no type or storage class
/usr/src/modules/realtime-lsm/realcap.c:40: error: syntax error before 
string constant
/usr/src/modules/realtime-lsm/realcap.c:40: warning: type defaults 
to 'int' in declaration of 'MODULE_PARM'
/usr/src/modules/realtime-lsm/realcap.c:40: warning: function 
declaration isn't a prototype
/usr/src/modules/realtime-lsm/realcap.c:40: warning: data definition has 
no type or storage class
/usr/src/modules/realtime-lsm/realcap.c:44: error: syntax error before 
string constant
/usr/src/modules/realtime-lsm/realcap.c:44: warning: type defaults 
to 'int' in declaration of 'MODULE_PARM'
/usr/src/modules/realtime-lsm/realcap.c:44: warning: function 
declaration isn't a prototype
/usr/src/modules/realtime-lsm/realcap.c:44: warning: data definition has 
no type or storage class
/usr/src/modules/realtime-lsm/realcap.c:48: error: syntax error before 
string constant
/usr/src/modules/realtime-lsm/realcap.c:48: warning: type defaults 
to 'int' in declaration of 'MODULE_PARM'
/usr/src/modules/realtime-lsm/realcap.c:48: warning: function 
declaration isn't a prototype
/usr/src/modules/realtime-lsm/realcap.c:48: warning: data definition has 
no type or storage class
make[5]: *** [/usr/src/modules/realtime-lsm/realcap.o] Error 1
make[4]: *** [_module_/usr/src/modules/realtime-lsm] Error 2
make[4]: Leaving directory `/usr/src/linux-2.6.17-rt8'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/usr/src/modules/realtime-lsm'
make[2]: *** [binary-modules] Error 2
make[2]: Leaving directory `/usr/src/modules/realtime-lsm'
make[1]: *** [kdist_build] Error 2
make[1]: Leaving directory `/usr/src/modules/realtime-lsm'
Module /usr/src/modules/realtime-lsm failed.
Hit return to Continue
[...]
make[1]: Entering directory `/usr/src/modules/misdn'
/usr/bin/make -w -f debian/rules  binary-modules
make[2]: Entering directory `/usr/src/modules/misdn'
sed -e 's/@@Kernel\-Version@@/2.6.17.8-rt8.8-rt8/' \
            debian/control.in > debian/control
dh_testdir
dh_testroot
dh_clean -k
dh_clean: Compatibility levels before 4 are deprecated.
echo "kpkg:Kernel-Version=2.6.17.8-rt8.8-rt8" > \
            debian/misdn-kernel-modules-2.6.17.8-rt8.8-rt8.substvars
/usr/bin/make -C /usr/src/linux M=/usr/src/modules/misdn   modules
make[3]: Entering directory `/usr/src/linux-2.6.17-rt8'
  CC [M]  /usr/src/modules/misdn/avm_fritz.o
/usr/src/modules/misdn/avm_fritz.c:1: warning: -ffunction-sections 
disabled; it makes profiling impossible
In file included from /usr/src/modules/misdn/avm_fritz.c:24:
/usr/src/modules/misdn/helper.h: In function 'alloc_stack_skb':
/usr/src/modules/misdn/helper.h:60: warning: format '%d' expects 
type 'int', but argument 3 has type 'size_t'
/usr/src/modules/misdn/helper.h:60: warning: format '%d' expects 
type 'int', but argument 4 has type 'size_t'
/usr/src/modules/misdn/avm_fritz.c: At top level:
/usr/src/modules/misdn/avm_fritz.c:1013: error: syntax error before 
string constant
/usr/src/modules/misdn/avm_fritz.c:1013: warning: type defaults to 'int' 
in declaration of 'MODULE_PARM'
/usr/src/modules/misdn/avm_fritz.c:1013: warning: function declaration 
isn't a prototype
/usr/src/modules/misdn/avm_fritz.c:1013: warning: data definition has no 
type or storage class
/usr/src/modules/misdn/avm_fritz.c:1014: error: syntax error before 
string constant
/usr/src/modules/misdn/avm_fritz.c:1014: warning: type defaults to 'int' 
in declaration of 'MODULE_PARM'
/usr/src/modules/misdn/avm_fritz.c:1014: warning: function declaration 
isn't a prototype
/usr/src/modules/misdn/avm_fritz.c:1014: warning: data definition has no 
type or storage class
/usr/src/modules/misdn/avm_fritz.c:1015: error: syntax error before 
string constant
/usr/src/modules/misdn/avm_fritz.c:1015: warning: type defaults to 'int' 
in declaration of 'MODULE_PARM'
/usr/src/modules/misdn/avm_fritz.c:1015: warning: function declaration 
isn't a prototype
/usr/src/modules/misdn/avm_fritz.c:1015: warning: data definition has no 
type or storage class
make[4]: *** [/usr/src/modules/misdn/avm_fritz.o] Error 1
make[3]: *** [_module_/usr/src/modules/misdn] Error 2
make[3]: Leaving directory `/usr/src/linux-2.6.17-rt8'
make[2]: *** [binary-modules] Error 2
make[2]: Leaving directory `/usr/src/modules/misdn'
make[1]: *** [kdist_image] Error 2
make[1]: Leaving directory `/usr/src/modules/misdn'
Module /usr/src/modules/misdn failed.
Hit return to Continue

=================
=================

I got in almost every line this warning:
warning: -ffunction-sections disabled; it makes profiling impossible

I think that does not affect the kernel ?

Can someone help me to get the realtime-lsm compiled on the new 2.6.17.8 
kernel, please?

Kind regards

Gerhard Gaußling
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux