Re: another IDE cleanup: kill duplicated code

Martin Dalecki
2002-02-13T11:12:25Z

Pavel Machek wrote:

>Hi!
>
>>>Well, after looking at yours code close engough I have one advice for
>>>you as well: LEARN C.
>>>
>>I specialize in storage, and C is self taught.
>>
>
>Okay, few things to keep in mind:
>
>*) cut-copy-paste is bad. If you fix error in one copy, it is _very_
>easy not to fix it in other copies.
>
>*) void *'s and casts are bad. They hide real errors. If you have
>
>struct foo {} bar;
>
>and want
>
>bar * baz;
>
>later;
>
>You can write it as struct foo * baz. That will make type checks
>actually work and save you lot of casts.
>
>*) hungarian notation is considered evil in kernel.
>
>struct bla_s {} bla_t;
>
>*is* evil -- why have two types when one is enough? In kernel land,
>right way is to do
>
>struct bla {};
>
>and then use "struct bla" everywhere you'd use bla_t. It might be
>slightly longer, but it helps you with casts (above) and everyone can
>see what is going on.
>

Add the following:
Silly code like that:

ide_add_setting(drive, "bios_cyl",
SETTING_RW,
ide_add_setting(drive, "bios_sect",
SETTING_RW,
ide_add_setting(drive, "bswap",
SETTING_READ,
ide_add_setting(drive, "multcount", id ? SETTING_RW
: SETTIN

Can be replaced with somthing along:

struct resource_record {
} rr = {
{ asjdkasdh, asdjhasjkd, asdjhjaskd }
....
{ asdjaksd, adsjaksd, asdhjasdhasd }
}

....

for (i; i < nuofmemebers(rr); ++i )
{
ide_add_setting(rr[i]);
}

to save you *a lot* of push stack call function and so on...