Project

General

Profile

Actions

Bug #339

closed

inode.h:88: error: syntax error before "cdev_t"

Added by wa1ter about 18 years ago. Updated about 18 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
Due date:
% Done:

0%

Estimated time:

Description

This is while compiling pkgsrc libgtop2 on -current:

In file included from procmem.c:44:
/usr/include/ufs/ufs/inode.h:88: error: syntax error before "cdev_t"

Here is a snippet of inod.h up to line 88:
struct inode {
struct inode i_next;/ Hash chain /
struct vnode *i_vnode;/
Vnode associated with this inode. /
struct vnode *i_devvp;/
Vnode for block I/O. /
uint32_t i_flag; /
flags, see below /
cdev_t i_dev; /
Device associated with the inode. */

I can't spot any syntax error there, so maybe the error message is
misleading? Any guesses?

Actions #1

Updated by wa1ter about 18 years ago

On Tue, 3 Oct 2006, walt wrote:

Here is my guess:

  1. grep -r ufs1_ino_t /usr/include/*
    /usr/include/fs/ufs/dinode.h:typedef __uint32_t ufs1_ino_t;
    /usr/include/fs/ffs/dinode.h:typedef __uint32_t ufs1_ino_t;
    /usr/include/ufs/ufs/dinode.h:typedef __uint32_t ufs1_ino_t;
    /usr/include/ufs/ffs/dinode.h:typedef __uint32_t ufs1_ino_t;
    /usr/include/vfs/ufs/dinode.h:typedef __uint32_t ufs1_ino_t;
    /usr/include/vfs/ffs/dinode.h:typedef __uint32_t ufs1_ino_t;

AFAICT, ufs1_ino_t is never defined anywhere with a typedef. Would
this be flagged at compile time as a 'syntax error'?

Actions #2

Updated by corecode about 18 years ago

this usually means that "cdev_t" isn't known. However inode.h is being included, they also need to include the file which defines cdev_t.

yes, it would be flagged, but it is defined, about 6 times: typedef works the opposite way than #define:

typedef orig_type new_type;

#define NEW_MACRO old_stuff

cheers
simon

Actions #3

Updated by dillon about 18 years ago

The bug is simply that _KERNEL_STRUCTURES or _KERNEL is not being
defined early enough, causing some #include files to not do the
proper typedefs that later include files need.

If you stick #define _KERNEL_STRUCTURES at the top of procmem.c,
it works.
Of course, there are other problems... MAP_ENTRY_IS_SUB_MAP does not
exist any more, for example, causing additional compilation errors
in procmem.c and procmap.c.
-Matt
Actions #4

Updated by corecode about 18 years ago

can we close this?

Actions

Also available in: Atom PDF