Page Menu
Home
Search
Configure Global Search
Log In
Files
F1074813
test.c
Peter Schlaile (schlaile)
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Authored By
Peter Schlaile (schlaile)
Oct 29 2017, 11:36 AM
Size
1 KB
Subscribers
None
test.c
View Options
#include
<stdio.h>
#include
<stdlib.h>
static
inline
int
doit1
(
int
v1
,
int
v2
)
{
return
v1
+
v2
;
}
static
inline
int
doit2
(
int
v1
,
int
v2
)
{
return
v1
*
v2
;
}
typedef
int
(
*
func_t
)(
int
,
int
);
struct
handler
{
func_t
h
;
};
static
inline
struct
handler
get_handler1
(
int
i
)
{
struct
handler
rv
;
if
(
i
==
0
)
{
rv
.
h
=
doit1
;
}
else
{
rv
.
h
=
doit2
;
}
return
rv
;
}
static
inline
func_t
get_handler2
(
int
i
)
{
func_t
rv
;
if
(
i
==
0
)
{
return
doit1
;
}
else
{
return
doit2
;
}
}
inline
void
proc1
(
int
*
in1
,
int
*
in2
,
int
*
out
,
int
range
,
struct
handler
hnd
)
{
int
i
;
int
j
;
for
(
j
=
0
;
j
<
1024000
;
j
++
)
{
for
(
i
=
0
;
i
<
range
;
i
++
)
{
out
[
i
]
=
hnd
.
h
(
in1
[
i
],
in2
[
i
]);
}
}
}
inline
void
proc2
(
int
*
in1
,
int
*
in2
,
int
*
out
,
int
range
,
func_t
h
)
{
int
i
;
int
j
;
for
(
j
=
0
;
j
<
1024000
;
j
++
)
{
for
(
i
=
0
;
i
<
range
;
i
++
)
{
out
[
i
]
=
h
(
in1
[
i
],
in2
[
i
]);
}
}
}
int
main
(
int
argc
,
const
char
**
argv
)
{
int
in1
[
1024
];
int
in2
[
1024
];
int
out
[
1024
];
FILE
*
fp
;
int
kernel
;
int
codepath
;
if
(
argc
!=
3
)
{
fprintf
(
stderr
,
"Usage: test kernel codepath
\n
"
);
return
-1
;
}
fp
=
fopen
(
"/dev/urandom"
,
"rb"
);
fread
(
in1
,
sizeof
(
int
),
1024
,
fp
);
fread
(
in2
,
sizeof
(
int
),
1024
,
fp
);
fclose
(
fp
);
kernel
=
atoi
(
argv
[
1
]);
codepath
=
atoi
(
argv
[
2
]);
switch
(
codepath
)
{
case
0
:
proc1
(
in1
,
in2
,
out
,
1024
,
get_handler1
(
kernel
));
break
;
case
1
:
proc2
(
in1
,
in2
,
out
,
1024
,
get_handler2
(
kernel
));
break
;
case
2
:
switch
(
kernel
)
{
case
0
:
proc2
(
in1
,
in2
,
out
,
1024
,
doit1
);
break
;
case
1
:
proc2
(
in1
,
in2
,
out
,
1024
,
doit2
);
break
;
}
break
;
}
fp
=
fopen
(
"/tmp/test_out"
,
"wb"
);
fwrite
(
out
,
sizeof
(
int
),
1024
,
fp
);
fclose
(
fp
);
return
0
;
}
File Metadata
Details
Attached
Mime Type
text/x-c
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
bc/99/31bd6a815d97fe6d94d0322ca657
Attached To
D2872: Add Screen and Overlay blend mode to VSE
Event Timeline
Log In to Comment