OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [20001124-1.c] - Blame information for rev 801

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 688 jeremybenn
 
2
struct inode {
3
        long long               i_size;
4
        struct super_block      *i_sb;
5
};
6
 
7
struct file {
8
        long long               f_pos;
9
};
10
 
11
struct super_block {
12
        int                     s_blocksize;
13
        unsigned char           s_blocksize_bits;
14
        int                     s_hs;
15
};
16
 
17
static char *
18
isofs_bread(unsigned int block)
19
{
20
        if (block)
21
          abort ();
22
        exit(0);
23
}
24
 
25
static int
26
do_isofs_readdir(struct inode *inode, struct file *filp)
27
{
28
        int bufsize = inode->i_sb->s_blocksize;
29
        unsigned char bufbits = inode->i_sb->s_blocksize_bits;
30
        unsigned int block, offset;
31
        char *bh = 0;
32
        int hs;
33
 
34
        if (filp->f_pos >= inode->i_size)
35
                return 0;
36
 
37
        offset = filp->f_pos & (bufsize - 1);
38
        block = filp->f_pos >> bufbits;
39
        hs = inode->i_sb->s_hs;
40
 
41
        while (filp->f_pos < inode->i_size) {
42
                if (!bh)
43
                        bh = isofs_bread(block);
44
 
45
                hs += block << bufbits;
46
 
47
                if (hs == 0)
48
                        filp->f_pos++;
49
 
50
                if (offset >= bufsize)
51
                        offset &= bufsize - 1;
52
 
53
                if (*bh)
54
                        filp->f_pos++;
55
 
56
                filp->f_pos++;
57
        }
58
        return 0;
59
}
60
 
61
struct super_block s;
62
struct inode i;
63
struct file f;
64
 
65
int
66
main(int argc, char **argv)
67
{
68
        s.s_blocksize = 512;
69
        s.s_blocksize_bits = 9;
70
        i.i_size = 2048;
71
        i.i_sb = &s;
72
        f.f_pos = 0;
73
 
74
        do_isofs_readdir(&i,&f);
75
        abort ();
76
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.