2004-01-19 22:18:20

by john moser

[permalink] [raw]
Subject: struct task_struct -> task_t

It has come to my attention that in some places in the kernel, 'struct task_struct'
is used; and in others, 'task_t' is used. Also, 'task_t' is
'typedef struct task_struct task_t;'.

I made a small script to change around as much as I could so that everything uses
task_t, but all the forward declarations make it difficult. The script doesn't
work as-is, so it will take you a few tries to compile and remove duplicate
declarations of task_t. If anyone's interested in changing all of these to be
consistent, this is your starting point.

running this in the top level of the source tree should get you started:

for i in `find . -type f`; do echo $i; cat $i | \
sed -e "s/struct task_struct/task_t/g" | \
sed -e "s/^\s*task_t;/struct task_struct;\ntypedef struct task_struct task_t;/g" \
> /tmp/tmpkernel; \
cat /tmp/tmpkernel > $i; rm /tmp/tmpkernel; done; \
cat include/linux/sched.h | \
sed -e "s/typedef task_t task_t/typedef struct task_struct task_t/g" | \
sed -e "s/task_t {/struct task_struct {/g" > /tmp/tmpkernel; \
cat /tmp/tmpkernel > include/linux/sched.h; rm /tmp/tmpkernel


That should also switch the forward declarations of struct task_struct over to
'struct task_struct; typedef struct task_struct task_t;' pairs. This leaves a few
holes, as there are some places where the typedef occurs after one has already
occured, and so these need to be fixed.

I am only able to deal with i386, and there's a lot of stuff in the asm includes
that needs to be adjusted by hand after running the above script.

_____________________________________________________________
Linux.Net -->Open Source to everyone
Powered by Linare Corporation
http://www.linare.com/


2004-01-19 22:24:40

by Al Viro

[permalink] [raw]
Subject: Re: struct task_struct -> task_t

On Mon, Jan 19, 2004 at 02:17:57PM -0800, john moser wrote:
> It has come to my attention that in some places in the kernel, 'struct task_struct'
> is used; and in others, 'task_t' is used. Also, 'task_t' is
> 'typedef struct task_struct task_t;'.
>
> I made a small script to change around as much as I could so that everything uses
> task_t,

What the fsck for? If anything, the opposite (and removal of that typedef)
would be preferable.

2004-01-19 23:58:21

by Martin Hicks

[permalink] [raw]
Subject: Re: struct task_struct -> task_t


On Mon, Jan 19, 2004 at 10:24:34PM +0000, [email protected] wrote:
> On Mon, Jan 19, 2004 at 02:17:57PM -0800, john moser wrote:
> > It has come to my attention that in some places in the kernel, 'struct task_struct'
> > is used; and in others, 'task_t' is used. Also, 'task_t' is
> > 'typedef struct task_struct task_t;'.
> >
> > I made a small script to change around as much as I could so that everything uses
> > task_t,
>
> What the fsck for? If anything, the opposite (and removal of that typedef)
> would be preferable.

John,

As Al is trying to point out, we try to discourage the use of typedefs
in the kernel. It is much easier to see that blah_t is really a struct
if we always use 'struct blah'.

mh

--
Martin Hicks || [email protected] || PGP/GnuPG: 0x4C7F2BEE

2004-01-21 02:08:42

by Albert Cahalan

[permalink] [raw]
Subject: Re: struct task_struct -> task_t

Martin Hicks writes:
> On Mon, Jan 19, 2004 at 10:24:34PM +0000, [email protected] wrote:
>> On Mon, Jan 19, 2004 at 02:17:57PM -0800, john moser wrote:

>>> It has come to my attention that in some places
>>> in the kernel, 'struct task_struct' is used; and
>>> in others, 'task_t' is used. Also, 'task_t' is
>>> 'typedef struct task_struct task_t;'.
>>>
>>> I made a small script to change around as much
>>> as I could so that everything uses task_t,
>>
>> What the fsck for? If anything, the opposite
>> (and removal of that typedef) would be preferable.
>
> John,
>
> As Al is trying to point out, we try to discourage
> the use of typedefs in the kernel. It is much
> easier to see that blah_t is really a struct if
> we always use 'struct blah'.

That's no good for variable usage. We don't
write "struct current".

You're giving the argument for Hungarian
notation. Not that I'd suggest it, but that
is where your argument leads.

IMHO, we type too much already.


2004-01-21 10:05:27

by J.A. Magallon

[permalink] [raw]
Subject: Re: struct task_struct -> task_t


On 01.21, Albert Cahalan wrote:
> Martin Hicks writes:
> > On Mon, Jan 19, 2004 at 10:24:34PM +0000, [email protected] wrote:
> >> On Mon, Jan 19, 2004 at 02:17:57PM -0800, john moser wrote:
>
> >>> It has come to my attention that in some places
> >>> in the kernel, 'struct task_struct' is used; and
> >>> in others, 'task_t' is used. Also, 'task_t' is
> >>> 'typedef struct task_struct task_t;'.
> >>>
> >>> I made a small script to change around as much
> >>> as I could so that everything uses task_t,
> >>
> >> What the fsck for? If anything, the opposite
> >> (and removal of that typedef) would be preferable.
> >
> > John,
> >
> > As Al is trying to point out, we try to discourage
> > the use of typedefs in the kernel. It is much
> > easier to see that blah_t is really a struct if
> > we always use 'struct blah'.
>
> That's no good for variable usage. We don't
> write "struct current".
>
> You're giving the argument for Hungarian
> notation. Not that I'd suggest it, but that
> is where your argument leads.
>
> IMHO, we type too much already.
>

At least, don't be redundant.
If you want explicit struct, let the type be 'struct task'
(ie, kill the second _struct).
If you want to use struct types as the rest of types, typedef
a task_t.
But 'struct task_struct' is redundand, long and ugly.

--
J.A. Magallon <jamagallon()able!es> \ Software is like sex:
werewolf!able!es \ It's better when it's free
Mandrake Linux release 10.0 (Cooker) for i586
Linux 2.6.1-jam4 (gcc 3.3.2 (Mandrake Linux 10.0 3.3.2-4mdk))