[PATCH] usb: Fix switch statement in ohci-tmio.c

Greg Freemyer greg.freemyer at gmail.com
Thu Aug 14 22:16:22 EDT 2014


On Thu, Aug 14, 2014 at 7:46 PM, Nick Krause <xerofoify at gmail.com> wrote:
> On Thu, Aug 14, 2014 at 6:12 PM, Nick Krause <xerofoify at gmail.com> wrote:
>> On Thu, Aug 14, 2014 at 5:38 PM,  <Valdis.Kletnieks at vt.edu> wrote:
>>> On Thu, 14 Aug 2014 17:13:28 -0400, Nick Krause said:
>>>> I am learned C. Perhaps I am a little rusty and need to review.
>>>
>>> We've seen very little evidence that you *ever* really understood C
>>> at all, and you're *far* from "a little rusty".  It's been some 23
>>> years since I've hacked any code in IBM's Pascal/VS, and 29 since I
>>> had to do maintenance work on PL/I code, and I *still* remember more
>>> of those than you remember of C.  (I'll admit that my mad Snobol4 skilz
>>> have pretty much evaporated, though ;)
>>>
>>> http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
>>  I learned C like two years ago and never really practiced it that
>> much to be honest.
>>  In addition I will come back in the future about I have read The C Programming
>>  Language.
>> Cheers Nick
> Thanks for pointing me in the right direction , I really do need to
> brush up on my C.
> Sorry for wasting your time.
> Nick

Nick,

The linux kernel has some of the most complex c code on the planet.
It is seriously not a place to "brush-up", "practice", or "learn".

A few _years_ of current c experience is pretty much a must to truly
grok the kernel.  Once you have that as a base, then it takes a lot of
real study to comprehend the complex use cases used in the linux
kernel.

I suggest you find a userspace project and work with it for a year or
two before you jump back into the kernel.  Personally, I find the
libyal family of userspace c libraries interesting.  The code base is
much smaller, but works with filesystems and is has multi-threaded
needs.  The main author is crazy smart (works for Google), so I'm not
saying he needs your help.  I'm saying the code base is small enough
you might be able to get your arms around it and really understand it.
That can help you understand the data structures used in filesystems,
complex volume systems, and encryption.

https://code.google.com/p/libyal/wiki/Overview

You said you have an interest in filesystems (as do I).

Looking at the filesystem section of that overview a couple of his
targeted libraries haven't even been started yet.  You code will
likely be throwaway code for your first effort or two, but
File systems

Several libraries for different types of filesystems don't even have code yet.

libfsclfs; Common Log File System (CLFS) format
libfshfs; Hierarchical File System (HFS) format - at the moment
documentation only
libfsntfs; New Technology File System (NTFS) format - at the moment
documentation only
libfsrefs; Resilient File System (ReFS) format - at the moment
documentation only

For me, if I was trying to learn about filesystems, that would be a
fun way to hack away at new code.  Also, libyal has lots of low level
libraries you can build upon so your not starting from scratch.
Further there are lots of "tools" written that provide high-level
end-user applications.

If you'd rather look at volumes (similar to device mapper code), there
are these projects:

libbde; BitLocker drive encryption (BDE)
libfvde; FileVault drive encryption (FVDE)
libluksde; LUKS Disk Encryption - at the moment documentation only
libvslvm; Linux Logical Volume Manager (LVM) volume system format - at
the moment documentation only
libvshadow; Volume Shadow Snapshot (VSS) format
libvslibs; several libraries for different types of volume systems. -
at the moment documentation only

Or maybe you'd like to learn about virtual disks such as VMs use:

Image formats

Several libraries for accessing different types of storage media:

libodraw; optical disc (split) RAW image format (bin/cue, iso/cue)
libsmdev; storage media devices
libsmraw; (split) RAW image format
libewf; Expert Witness Compression Format (EWF) image format
libqcow; QEMU Copy-On-Write (QCOW) image format
libvhdi; Virtual Hard Disk (VHD) image format
libvmdk; VMware Virtual Disk (VMDK) format

FYI: I maintain many of the above for openSUSE and have the packages
in the main distro.  My to do list for this weekend is to package up
libqcow, libvhdi, and libvmdk.  That being my weekend plan is why I
have libyal in my head at the moment.

Greg



More information about the Kernelnewbies mailing list