Skip navigation


Currently Being Moderated

Getting MHDDK to work with Linux Kernel 2.6.39

VERSION 2  Click to view document history
Created on: Sep 1, 2011 10:39 AM by Steven_T - Last Modified:  Sep 1, 2011 11:07 AM by Steven_T

Only a few months since MHDDK 2.0 released and Linux has already changed something!  I guess thats not a big surprise.


Changes to Linux Kernel 2.6.39 include the removal of the big kernel lock completely.  Since the ioctl of the MHDDK kernel component used the lock, things obviously broke.  Moving forward, drivers are encouraged to use their own locks instead of relying on the big kernel lock.  We made the changes and tested them without any weird side-effects.  The following changes should be made to nirlpk.c.


1. Remove linux/smp_lock.h


// Base module includes
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/smp_lock.h>


2. Declare a new driver lock


#ifndef nNIRLP_kDefineSemaphore
static DECLARE_MUTEX(nNIRLP_lock);


3. Use the new lock instead of the big kernel lock, if the system kernel has an unlocked ioctl.


#define nNIRLP_LOCK()
#define nNIRLP_UNLOCK()
#define nNIRLP_LOCK() down(&nNIRLP_IOCTL_lock);
#define nNIRLP_UNLOCK() up(&nNIRLP_IOCTL_lock);


This new lock gives us the same protection that we had from the big kernel lock in MHDDK 2.0.



Comments (0)

Bookmarked By (0)

More Like This

  • Retrieving data ...