Linux-2.6.39とPT1キャラクタデバイスドライバ

7月 19, 2011

GentooもStableが2.6.39にアップデートされました。それを受けて、当サーバもカーネルバージョンをアップデート!そしたらば~、PT1のキャラクタデバイスドライバがコンパイル通らなくなりました…

CONFIG_BKLが廃止されたからだそうですね。lock_kernel/unlock_kernelのシステムコールによる排他機構が無くなったもんでです。で、このBig Kernel Lock機構の代わりに、spin_lockを用いた排他に順次置き換えられているそうで、こんなパッチを作ってみたとです。

— pt1-7662d0ecd74b/driver/pt1_pci.c 2010-11-19 11:19:25.000000000 +0900
+++ pt1-linux-2.6.39/driver/pt1_pci.c 2011-07-18 19:59:53.000000000 +0900
@@ -33,8 +33,12 @@
#include

#include +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39) #include
+#else
+#include +static spinlock_t pt1_drv_spinlock;
+#endif
#include “pt1_com.h”
#include “pt1_pci.h”
#include “pt1_tuner.h”
@@ -572,11 +576,18 @@
static long pt1_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg0)
{
long ret;

+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39) lock_kernel(); +#else + spin_lock(&pt1_drv_spinlock); +#endif ret = pt1_do_ioctl(file, cmd, arg0); - unlock_kernel(); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39) + unlock_kernel(); +#else + spin_unlock(&pt1_drv_spinlock); +#endif return ret; } @@ -701,6 +712,10 @@ int i; struct resource *dummy; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)
+ spin_lock_init(&pt1_drv_spinlock);
+#endif
rc = pci_enable_device(pdev);
if (rc)
return rc;

とりあえず、今のところは問題なく動いている模様ですね。でも、今は、DVB_PT1がはやりなのかなー。Linuxカーネルにも正式に取り込まれてたりしますしねぇ…fuseドライバとのコラボレーションを組み上げてみる必要が、あるとかなー。ま、もうちょっと調べてみますかね…今日のところはめでたし、めでたし…

posted in コンピュータ, マイサーバー by maruo

Follow comments via the RSS Feed | Leave a comment | Trackback URL

Leave Your Comment

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org
ページ内検索

ログイン

ユーザー名:


パスワード:





パスワード紛失

メインメニュー

サブメニュー
自宅鯖計画

Gentoo Linuxな生活

玄箱HGにGentoo格闘記

航空ショーへ行こう

モータースポーツな世界

奥深き写真の世界への誘い

我思う ゆえに我あり



携帯用QRコード