uaccess.h ( File view )

  • By 雨的声音 2013-11-28
  • View(s):263
  • Download(s):7
  • Point(s): 2
			/* $Id: uaccess.h,v 1.1.1.1 2002/11/12 07:16:24 jipark Exp $
 *
 * User space memory access functions
 *
 * Copyright (C) 1999  Niibe Yutaka
 *
 *  Based on:
 *     MIPS implementation version 1.15 by
 *              Copyright (C) 1996, 1997, 1998 by Ralf Baechle
 *     and i386 version.
 */
#ifndef __ASM_SH_UACCESS_H
#define __ASM_SH_UACCESS_H

#include <linux/errno.h>
#include <linux/sched.h>

#define VERIFY_READ    0
#define VERIFY_WRITE   1

/*
 * The fs value determines whether argument validity checking should be
 * performed or not.  If get_fs() == USER_DS, checking is performed, with
 * get_fs() == KERNEL_DS, checking is bypassed.
 *
 * For historical reasons (Data Segment Register?), these macros are misnamed.
 */

#define MAKE_MM_SEG(s)	((mm_segment_t) {
 (s) 
})

#define KERNEL_DS	MAKE_MM_SEG(0xFFFFFFFF)
#define USER_DS		MAKE_MM_SEG(0x80000000)

#define get_ds()	(KERNEL_DS)
#define get_fs()        (current->addr_limit)
#define set_fs(x)       (current->addr_limit=(x))

#define segment_eq(a,b)	((a).seg == (b).seg)

#define __addr_ok(addr) ((unsigned long)(addr) < (current->addr_limit.seg))

/*
 * Uhhuh, this needs 33-bit arithmetic. We have a carry..
 *
 * sum := addr + size;  carry? --> flag = true;
 * if (sum >= addr_limit) flag = true;
 */
#define __range_ok(addr,size) ({
					      \
	unsigned long flag,sum; 					      \
	__asm__("clrt; addc %3, %1; movt %0; cmp/hi %4, %1; rotcl %0"	      \
		:"=&r" (flag), "=r" (sum) 				      \
		:"1" (addr), "r" ((int)(size)), "r" (current->addr_limit.seg) \
		:"t"); 							      \
	flag; 
})

#define access_ok(type,addr,size) (__range_ok(addr,size) == 0)
#define __access_ok(addr,size) (__range_ok(addr,size) == 0)

static inline int verify_area(int type, const void * addr, unsigned long size)
{

	return access_ok(type,addr,size) ? 0 : -EFAULT;

}

/*
 * Uh, these should become the main single-value transfer routines ...
 * They automatically use the right size if we just have the right
 * pointer type ...
 *
 * As SuperH uses the same address space for kernel and user data, we
 * can just do these as direct assignments.
 *
 * Careful to not
 * (a) re-use the arguments for side effects (sizeof is ok)
 * (b) require any knowledge of processes at this stage
 */
#define put_user(x,ptr)	__put_user_check((x),(ptr),sizeof(*(ptr)))
#define get_user(x,ptr) __get_user_check((x),(ptr),sizeof(*(ptr)))

/*
 * The "__xxx" versions do not do address space checking, useful when
 * doing multiple accesses to the same area (the user has to do the
 * checks by hand with "access_ok()")
 */
#define __put_user(x,ptr) __put_user_nocheck((x),(ptr),sizeof(*(ptr)))
#define __get_user(x,ptr) __get_user_nocheck((x),(ptr),sizeof(*(ptr)))

struct __large_struct {
 unsigned long buf[100]; 
};
#define __m(x) (*(struct __large_struct *)(x))

#define __get_user_nocheck(x,ptr,size) ({
 \
long __gu_err; \
__typeof(*(ptr)) __gu_val; \
long __gu_addr; \
__asm__("":"=r" (__gu_val)); \
__gu_addr = (long) (ptr); \
__asm__("":"=r" (__gu_err)); \
switch (size) {
 \
case 1: __get_user_asm("b"); break; \
case 2: __get_user_asm("w"); break; \
case 4: __get_user_asm("l"); break; \
default: __get_user_unknown(); break; \

} x = (__typeof__(*(ptr))) __gu_val; __gu_err; 
})

#define __get_user_check(x,ptr,size) ({
 \
long __gu_err; \
__typeof__(*(ptr)) __gu_val; \
long __gu_addr; \
__asm__("":"=r" (__gu_val)); \
__gu_addr = (long) (ptr); \
__asm__("":"=r" (__gu_err)); \
if (__access_ok(__gu_addr,size)) {
 \
switch (size) {
 \
case 1: __get_user_asm("b"); break; \
case 2: __get_user_asm("w"); break; \
case 4: __get_user_asm("l"); break; \
default: __get_user_unknown(); break; \

} 
} x = (__typeof__(*(ptr))) __gu_val; __gu_err; 
})

#define __get_user_asm(insn) \
({
 \
__asm__ __volatile__( \
	"1:\n\t" \
	"mov." insn "	%2, %1\n\t" \
	"mov	#0, %0\n" \
	"2:\n" \
	".section	.fixup,\"ax\"\n" \
	"3:\n\t" \
	"mov	#0, %1\n\t" \
	"mov.l	4f, %0\n\t" \
	"jmp	@%0\n\t" \
	" mov	%3, %0\n" \
	"4:	.long	2b\n\t" \
	".previous\n" \
	".section	__ex_table,\"a\"\n\t" \
	".long	1b, 3b\n\t" \
	".previous" \
	:"=&r" (__gu_err), "=&r" (__gu_val) \
	:"m" (__m(__gu_addr)), "i" (-EFAULT)); 
})

extern void __get_user_unknown(void);

#define __put_user_nocheck(x,ptr,size) ({
 \
long __pu_err; \
__typeof__(*(ptr)) __pu_val; \
long __pu_addr; \
__pu_val = (x); \
__pu_addr = (long) (ptr); \
__asm__("":"=r" (__pu_err)); \
switch (size) {
 \
case 1: __put_user_asm("b"); break; \
case 2: __put_user_asm("w"); break; \
case 4: __put_user_asm("l"); break; \
case 8: __put_user_u64(__pu_val,__pu_addr,__pu_err); break; \
default: __put_user_unknown(); break; \

} __pu_err; 
})

#define __put_user_check(x,ptr,size) ({
 \
long __pu_err; \
__typeof__(*(ptr)) __pu_val; \
long __pu_addr; \
__pu_val = (x); \
__pu_addr = (long) (ptr); \
__asm__("":"=r" (__pu_err)); \
if (__access_ok(__pu_addr,size)) {
 \
switch (size) {
 \
case 1: __put_user_asm("b"); break; \
case 2: __put_user_asm("w"); break; \
case 4: __put_user_asm("l"); break; \
case 8: __put_user_u64(__pu_val,__pu_addr,__pu_err); break; \
default: __put_user_unknown(); break; \

} 
} __pu_err; 
})

#define __put_user_asm(insn) \
({
 \
__asm__ __volatile__( \
	"1:\n\t" \
	"mov." insn "	%1, %2\n\t" \
	"mov	#0, %0\n" \
	"2:\n" \
	".section	.fixup,\"ax\"\n" \
	"3:\n\t" \
	"nop\n\t" \
	"mov.l	4f, %0\n\t" \
	"jmp	@%0\n\t" \
	"mov	%3, %0\n" \
	"4:	.long	2b\n\t" \
	".previous\n" \
	".section	__ex_table,\"a\"\n\t" \
	".long	1b, 3b\n\t" \
	".previous" \
	:"=&r" (__pu_err) \
	:"r" (__pu_val), "m" (__m(__pu_addr)), "i" (-EFAULT) \
        :"memory"); 
})

#if defined(__LITTLE_ENDIAN__)
#define __put_user_u64(val,addr,retval) \
({
 \
__asm__ __volatile__( \
	"1:\n\t" \
	"mov.l	%R1,%2\n\t" \
	"mov.l	%S1,%T2\n\t" \
	"mov	#0,%0\n" \
	"2:\n" \
	".section	.fixup,\"ax\"\n" \
	"3:\n\t" \
	"nop\n\t" \
	"mov.l	4f,%0\n\t" \
	"jmp	@%0\n\t" \
	" mov	%3,%0\n" \
	"4:	.long	2b\n\t" \
	".previous\n" \
	".section	__ex_table,\"a\"\n\t" \
	".long	1b, 3b\n\t" \
	".previous" \
	: "=r" (retval) \
	: "r" (val), "m" (__m(addr)), "i" (-EFAULT) \
        : "memory"); 
})
#else
({
 \
__asm__ __volatile__( \
	"1:\n\t" \
	"mov.l	%S1,%2\n\t" \
	"mov.l	%R1,%T2\n\t" \
	"mov	#0,%0\n" \
	"2:\n" \
	".section	.fixup,\"ax\"\n" \
	"3:\n\t" \
	"nop\n\t" \
	"mov.l	4f,%0\n\t" \
	"jmp	@%0\n\t" \
	" mov	%3,%0\n" \
	"4:	.long	2b\n\t" \
	".previous\n" \
	".section	__ex_table,\"a\"\n\t" \
	".long	1b, 3b\n\t" \
	".previous" \
	: "=r" (retval) \
	: "r" (val), "m" (__m(addr)), "i" (-EFAULT) \
        : "memory"); 
})
#endif

extern void __put_user_unknown(void);

/* Generic arbitrary sized copy.  */
/* Return the number of bytes NOT copied */
/* XXX: should be such that: 4byte and the rest. */
static __inline__ __kernel_size_t
__copy_user(void *__to, const void *__from, __kernel_size_t __n)
{

	unsigned long __dummy, _f, _t;
	__kernel_size_t res;

	if ((res = __n))
	__asm__ __volatile__(
		"9:\n\t"
		"mov.b	@%2+, %1\n\t"
		"dt	%0\n"
		"1:\n\t"
		"mov.b	%1, @%3\n\t"
		"bf/s	9b\n\t"
		" add	#1, %3\n"
		"2:\n"
		".section .fixup,\"ax\"\n"
		"3:\n\t"
		"mov.l	5f, %1\n\t"
		"jmp	@%1\n\t"
		" add	#1, %0\n\t"
		".balign 4\n"
		"5:	.long 2b\n"
		".previous\n"
		".section __ex_table,\"a\"\n"
		"	.balign 4\n"
		"	.long 9b,2b\n"
		"	.long 1b,3b\n"
		".previous"
		: "=r" (res), "=&z" (__dummy), "=r" (_f), "=r" (_t)
		: "2" (__from), "3" (__to), "0" (res)
		: "memory", "t");

	return res;

}

#define copy_to_user(to,from,n) ({
 \
void *__copy_to = (void *) (to); \
__kernel_size_t __copy_size = (__kernel_size_t) (n); \
__kernel_size_t __copy_res; \
if(__copy_size && __access_ok((unsigned long)__copy_to, __copy_size)) {
 \
__copy_res = __copy_user(__copy_to, (void *) (from), __copy_size); \

} else __copy_res = __copy_size; \
__copy_res; 
})

#define __copy_to_user(to,from,n)		\
	__copy_user((void *)(to),		\
		    (void *)(from), n)

#define copy_from_user(to,from,n) ({
 \
void *__copy_to = (void *) (to); \
void *__copy_from = (void *) (from); \
__kernel_size_t __copy_size = (__kernel_size_t) (n); \
__kernel_size_t __copy_res; \
if(__copy_size && __access_ok((unsigned long)__copy_from, __copy_size)) {
 \
__copy_res = __copy_user(__copy_to, __copy_from, __copy_size); \

} else __copy_res = __copy_size; \
__copy_res; 
})

#define __copy_from_user(to,from,n)		\
	__copy_user((void *)(to),		\
		    (void *)(from), n)

/* XXX: Not sure it works well..
   should be such that: 4byte clear and the rest. */
static __inline__ __kernel_size_t
__clear_user(void *addr, __kernel_size_t size)
{

	unsigned long __a;

	__asm__ __volatile__(
		"9:\n\t"
		"dt	%0\n"
		"1:\n\t"
		"mov.b	%4, @%1\n\t"
		"bf/s	9b\n\t"
		" add	#1, %1\n"
		"2:\n"
		".section .fixup,\"ax\"\n"
		"3:\n\t"
		"mov.l	4f, %1\n\t"
		"jmp	@%1\n\t"
		" nop\n"
		".balign 4\n"
		"4:	.long 2b\n"
		".previous\n"
		".section __ex_table,\"a\"\n"
		"	.balign 4\n"
		"	.long 1b,3b\n"
		".previous"
		: "=r" (size), "=r" (__a)
		: "0" (size), "1" (addr), "r" (0)
		: "memory", "t");

	return size;

}

#define clear_user(addr,n) ({
 \
void * __cl_addr = (addr); \
unsigned long __cl_size = (n); \
if (__cl_size && __access_ok(((unsigned long)(__cl_addr)), __cl_size)) \
__cl_size = __clear_user(__cl_addr, __cl_size); \
__cl_size; 
})

static __inline__ int
__strncpy_from_user(unsigned long __dest, unsigned long __src, int __count)
{

	__kernel_size_t res;
	unsigned long __dummy, _d, _s;

	__asm__ __volatile__(
		"9:\n"
		"mov.b	@%2+, %1\n\t"
		"cmp/eq	#0, %1\n\t"
		"bt/s	2f\n"
		"1:\n"
		"mov.b	%1, @%3\n\t"
		"dt	%7\n\t"
		"bf/s	9b\n\t"
		" add	#1, %3\n\t"
		"2:\n\t"
		"sub	%7, %0\n"
		"3:\n"
		".section .fixup,\"ax\"\n"
		"4:\n\t"
		"mov.l	5f, %1\n\t"
		"jmp	@%1\n\t"
		" mov	%8, %0\n\t"
		".balign 4\n"
		"5:	.long 3b\n"
		".previous\n"
		".section __ex_table,\"a\"\n"
		"	.balign 4\n"
		"	.long 9b,4b\n"
		".previous"
		: "=r" (res), "=&z" (__dummy), "=r" (_s), "=r" (_d)
		: "0" (__count), "2" (__src), "3" (__dest), "r" (__count),
		  "i" (-EFAULT)
		: "memory", "t");

	return res;

}

#define strncpy_from_user(dest,src,count) ({
 \
unsigned long __sfu_src = (unsigned long) (src); \
int __sfu_count = (int) (count); \
long __sfu_res = -EFAULT; \
if(__access_ok(__sfu_src, __sfu_count)) {
 \
__sfu_res = __strncpy_from_user((unsigned long) (dest), __sfu_src, __sfu_count); \

} __sfu_res; 
})

#define strlen_user(str) strnlen_user(str, ~
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 2

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
.Makefile.swp12.00 kB14-09-06 10:46
bufferpool.a33.26 kB25-10-06 10:27
config.h86.00 B14-09-06 10:46
file.h2.34 kB14-09-06 10:46
file.h.bak3.00 kB14-09-06 10:46
fnc_ipc_name.c2.11 kB14-09-06 10:46
fnc_ipc_name.o1.10 kB25-10-06 10:27
fs.h52.57 kB14-09-06 10:46
init.h5.22 kB14-09-06 10:46
Makefile1.60 kB14-09-06 11:02
Makefile-bak1.60 kB14-09-06 10:46
mman.h144.00 B14-09-06 10:46
OMSbuff_addpage.c3.15 kB14-09-06 10:46
OMSbuff_addpage.o1.46 kB25-10-06 10:26
OMSbuff_dump.c3.65 kB14-09-06 10:46
OMSbuff_dump.o556.00 B25-10-06 10:26
OMSbuff_free.c1.79 kB14-09-06 11:06
OMSbuff_free.o1.08 kB25-10-06 10:26
OMSbuff_getreader.c2.22 kB14-09-06 10:46
OMSbuff_getreader.o1.35 kB25-10-06 10:26
OMSbuff_getslot.c3.04 kB14-09-06 21:10
OMSbuff_getslot.o1.74 kB25-10-06 10:26
OMSbuff_gotreader.c2.74 kB14-09-06 10:46
OMSbuff_gotreader.o1.40 kB25-10-06 10:27
OMSbuff_isempty.c2.39 kB14-09-06 10:46
OMSbuff_isempty.o1.30 kB25-10-06 10:27
OMSbuff_new.c2.78 kB14-09-06 10:46
OMSbuff_new.o1.34 kB25-10-06 10:27
OMSbuff_nextts.c2.06 kB14-09-06 10:46
OMSbuff_nextts.o1.29 kB25-10-06 10:27
OMSbuff_read.c3.59 kB14-09-06 10:46
OMSbuff_read.o1.54 kB25-10-06 10:27
OMSbuff_ref.c2.38 kB14-09-06 10:46
OMSbuff_ref.o1.33 kB25-10-06 10:27
OMSbuff_shm_addpage.c4.13 kB14-09-06 10:46
OMSbuff_shm_addpage.o2.02 kB25-10-06 10:27
OMSbuff_shm_create.c7.19 kB14-09-06 11:05
OMSbuff_shm_create.o3.19 kB25-10-06 10:27
OMSbuff_shm_destroy.c3.08 kB14-09-06 10:46
OMSbuff_shm_destroy.o1.50 kB25-10-06 10:27
OMSbuff_shm_map.c4.99 kB14-09-06 11:07
OMSbuff_shm_map.o2.27 kB25-10-06 10:27
OMSbuff_shm_remap.c3.28 kB14-09-06 11:08
OMSbuff_shm_remap.o1.69 kB25-10-06 10:27
OMSbuff_shm_unmap.c1.85 kB14-09-06 10:46
OMSbuff_shm_unmap.o1.14 kB25-10-06 10:27
OMSbuff_sync.c2.18 kB14-09-06 10:46
OMSbuff_sync.o1.21 kB25-10-06 10:27
OMSbuff_unref.c1.87 kB14-09-06 10:46
OMSbuff_unref.o1.11 kB25-10-06 10:27
OMSbuff_write.c3.94 kB14-09-06 10:46
OMSbuff_write.o1.68 kB25-10-06 10:27
proc_fs.h6.15 kB14-09-06 10:46
shm.c18.27 kB14-09-06 10:46
shm.h2.65 kB14-09-06 10:46
slab.h2.89 kB14-09-06 10:46
uaccess.h11.24 kB14-09-06 10:46
util.h2.32 kB14-09-06 10:46
_desktop.ini10.00 B25-10-06 08:28
<bufferpool>0.00 B25-10-06 10:27
cmd_env.a2.35 kB25-10-06 10:27
command_environment.c3.21 kB14-09-06 10:46
command_environment.o2.10 kB25-10-06 10:27
Makefile258.00 B14-09-06 10:46
Makefile.bak455.00 B14-09-06 10:46
_desktop.ini10.00 B25-10-06 08:28
<command_environment>0.00 B25-10-06 10:27
config.h8.24 kB15-09-06 14:39
add_client.c2.24 kB14-09-06 10:46
add_client.o1.22 kB25-10-06 10:27
eventloop.a7.59 kB25-10-06 10:27
eventloop.c3.30 kB14-09-06 10:46
eventloop.o1.63 kB25-10-06 10:27
Makefile411.00 B14-09-06 10:46
Makefile.bak608.00 B14-09-06 10:46
rtsp_server.c5.91 kB19-10-06 19:14
rtsp_server.o2.60 kB25-10-06 10:27
schedule_connections.c3.75 kB15-09-06 10:27
schedule_connections.o1.65 kB25-10-06 10:27
_desktop.ini10.00 B25-10-06 08:28
<eventloop>0.00 B25-10-06 10:27
bufferpool.h5.35 kB14-09-06 11:07
command_environment.h241.00 B14-09-06 10:46
debug.h1.52 kB14-09-06 10:46
eventloop.h1.52 kB14-09-06 10:46
fnc_log.h1.53 kB14-09-06 10:46
gsm.h1.38 kB14-09-06 10:46
h26l.h1.50 kB14-09-06 10:46
intnet.h2.22 kB14-09-06 10:46
Makefile.am529.00 B14-09-06 10:46
md5.h2.47 kB14-09-06 10:46
md5global.h1.92 kB14-09-06 10:46
mediainfo.h7.20 kB14-09-06 10:46
mp3.h1.38 kB14-09-06 10:46
mpeg.h3.85 kB14-09-06 10:46
mpeg4es.h4.37 kB14-09-06 10:46
mpeg_system.h2.10 kB14-09-06 10:46
mpeg_ts.h1.39 kB14-09-06 10:46
multicast.h1.38 kB14-09-06 10:46
pcm.h1.38 kB14-09-06 10:46
prefs.h2.19 kB14-09-06 10:46
rtcp.h6.10 kB14-09-06 10:46
rtp.h4.83 kB14-09-06 10:46
rtpptdefs.h6.82 kB14-09-06 10:46
rtp_shm.h1.35 kB14-09-06 10:46
rtsp.h4.46 kB14-09-06 10:46
schedule.h2.34 kB14-09-06 10:46
sdp.h1.48 kB14-09-06 10:46
socket.h2.53 kB14-09-06 10:46
types.h1.24 kB14-09-06 10:46
utils.h5.15 kB25-10-06 10:44
xmllexer.h2.25 kB14-09-06 10:46
xmlparser.h2.30 kB14-09-06 10:46
_desktop.ini10.00 B25-10-06 08:28
<fenice>0.00 B25-10-06 10:44
header.h1.11 kB14-09-06 10:46
_desktop.ini10.00 B25-10-06 08:28
<include>0.00 B25-10-06 10:24
change_check.c1.88 kB14-09-06 10:46
change_check.o1.08 kB25-10-06 10:27
downgrade_GSM.c3.55 kB14-09-06 10:46
downgrade_GSM.o1.68 kB25-10-06 10:27
downgrade_L16.c1.28 kB14-09-06 10:46
downgrade_L16.o696.00 B25-10-06 10:27
downgrade_MP3.c6.46 kB14-09-06 10:46
downgrade_MP3.o2.82 kB25-10-06 10:27
half_GSM.c3.07 kB14-09-06 10:46
half_GSM.o1.46 kB25-10-06 10:27
half_L16.c1.27 kB14-09-06 10:46
half_L16.o688.00 B25-10-06 10:27
half_MP3.c5.86 kB14-09-06 10:46
half_MP3.o2.56 kB25-10-06 10:27
intnet.a20.31 kB25-10-06 10:27
Makefile823.00 B14-09-06 10:46
Makefile.bak1,020.00 B14-09-06 10:46
priority_decrease.c2.10 kB14-09-06 10:46
priority_decrease.o1,004.00 B25-10-06 10:27
priority_increase.c2.21 kB14-09-06 10:46
priority_increase.o1.00 kB25-10-06 10:27
stream_change.c3.35 kB14-09-06 10:46
stream_change.o1.68 kB25-10-06 10:27
upgrade_GSM.c3.63 kB14-09-06 10:46
upgrade_GSM.o1.69 kB25-10-06 10:27
upgrade_MP3.c7.01 kB14-09-06 10:46
upgrade_MP3.o2.93 kB25-10-06 10:27
_desktop.ini10.00 B25-10-06 08:28
<intnet>0.00 B25-10-06 10:27
Makefile2.03 kB25-10-06 10:30
Makefile.bak2.03 kB25-10-06 10:26
global.h785.00 B14-09-06 10:46
Makefile242.00 B14-09-06 10:46
md5.h1.32 kB14-09-06 10:46
md5c.a4.60 kB25-10-06 10:27
md5c.c10.19 kB14-09-06 10:46
md5c.o4.43 kB25-10-06 10:27
_desktop.ini10.00 B25-10-06 08:28
<md5>0.00 B25-10-06 10:27
calculate_skip.c2.10 kB15-09-06 16:32
calculate_skip.o1.31 kB25-10-06 10:27
common_utils.c2.14 kB14-09-06 10:46
common_utils.o1.27 kB25-10-06 10:27
default_selection_criterion.c1.46 kB14-09-06 10:46
default_selection_criterion.o740.00 B25-10-06 10:27
enum_media.c2.70 kB14-09-06 10:46
enum_media.o1.18 kB25-10-06 10:27
free_GSM.c1.23 kB14-09-06 10:46
free_GSM.o604.00 B25-10-06 10:27
free_H26L.c1.32 kB14-09-06 10:46
free_H26L.o720.00 B25-10-06 10:27
free_L16.c1.23 kB14-09-06 10:46
free_L16.o604.00 B25-10-06 10:27
free_MP2T.c1.24 kB14-09-06 10:46
free_MP2T.o606.00 B25-10-06 10:27
free_MP4ES.c1.57 kB14-09-06 10:46
free_MP4ES.o792.00 B25-10-06 10:27
free_MPA.c1.23 kB14-09-06 10:46
free_MPA.o604.00 B25-10-06 10:27
free_MPV.c1.35 kB14-09-06 10:46
free_MPV.o696.00 B25-10-06 10:27
get_frame.c2.82 kB15-09-06 11:13
get_frame.o1.30 kB25-10-06 10:27
get_media_entry.c1.75 kB14-09-06 10:46
get_media_entry.o884.00 B25-10-06 10:27
load_GSM.c2.33 kB14-09-06 10:46
load_GSM.o1.16 kB25-10-06 10:27
load_H26L.c1.62 kB14-09-06 10:46
load_H26L.o936.00 B25-10-06 10:27
load_L16.c1.88 kB14-09-06 10:46
load_L16.o780.00 B25-10-06 10:27
load_MP2T.c1.68 kB14-09-06 10:46
load_MP2T.o936.00 B25-10-06 10:27
load_MP4ES.c4.19 kB14-09-06 10:46
load_MP4ES.o1.29 kB25-10-06 10:27
load_MPA.c6.31 kB15-09-06 19:24
load_MPA.o3.26 kB25-10-06 10:27
load_MPV.c2.19 kB14-09-06 10:46
load_MPV.o1.39 kB25-10-06 10:27
Makefile2.33 kB14-09-06 10:46
Makefile.bak2.52 kB14-09-06 10:46
mediaclose.c1.70 kB14-09-06 10:46
mediaclose.o784.00 B25-10-06 10:27
mediacpy.c2.39 kB14-09-06 10:50
mediacpy.o1.20 kB25-10-06 10:27
mediainfo.a81.57 kB25-10-06 10:28
mediaopen.c2.28 kB14-09-06 10:46
mediaopen.o1.31 kB25-10-06 10:27
media_is_empty.c1.47 kB14-09-06 10:46
media_is_empty.o696.00 B25-10-06 10:27
msec2tick.c1.54 kB14-09-06 10:46
msec2tick.o884.00 B25-10-06 10:27
parse_SD_file.c10.44 kB15-09-06 15:49
parse_SD_file.o5.41 kB25-10-06 10:27
read_dim.c2.25 kB15-09-06 16:33
read_dim.o1.55 kB25-10-06 10:28
read_GSM.c2.95 kB14-09-06 10:46
read_GSM.o1.98 kB25-10-06 10:27
read_H26L.c3.86 kB14-09-06 10:46
read_H26L.o1.50 kB25-10-06 10:27
read_MP3.c3.55 kB13-10-06 20:38
read_MP3.o1.93 kB25-10-06 10:27
read_MPEG4ES_utils.c8.00 kB14-09-06 10:46
read_MPEG4ES_utils.o4.40 kB25-10-06 10:27
read_MPEG4ES_video.c7.19 kB14-09-06 10:46
read_MPEG4ES_video.o3.18 kB25-10-06 10:27
read_MPEGSYSTEM_utils.c11.19 kB14-09-06 10:46
read_MPEGSYSTEM_utils.o4.34 kB25-10-06 10:27
read_MPEG_system.c7.32 kB14-09-06 10:46
read_MPEG_system.o4.09 kB25-10-06 10:27
read_MPEG_ts.c2.12 kB14-09-06 10:46
read_MPEG_ts.o1.07 kB25-10-06 10:27
read_MPEG_utils.c10.46 kB14-09-06 10:46
read_MPEG_utils.o3.55 kB25-10-06 10:27
read_MPEG_video.c11.24 kB23-10-06 09:44
read_MPEG_video.c-011.24 kB19-10-06 19:11
read_MPEG_video.c-115.79 kB19-10-06 19:20
read_MPEG_video.c-213.04 kB23-10-06 09:33
read_MPEG_video.o4.22 kB25-10-06 10:28
read_PCM.c3.22 kB14-09-06 10:46
read_PCM.o1.80 kB25-10-06 10:28
register_media.c4.12 kB13-10-06 20:39
register_media.o2.63 kB25-10-06 10:28
rtp_shm.c1.91 kB14-09-06 10:56
rtp_shm.o1.27 kB25-10-06 10:28
search_media.c4.60 kB15-09-06 15:26
search_media.o1.70 kB25-10-06 10:28
tick2msec.c1.52 kB14-09-06 10:46
tick2msec.o916.00 B25-10-06 10:28
validate_stream.c3.82 kB15-09-06 16:00
validate_stream.o6.44 kB25-10-06 10:28
_desktop.ini10.00 B25-10-06 08:28
<mediainfo>0.00 B25-10-06 10:28
mk.sh90.00 B23-10-06 09:39
is_valid_multicast_address.c1.66 kB13-10-06 16:44
is_valid_multicast_address.o808.00 B25-10-06 10:27
Makefile287.00 B14-09-06 10:46
Makefile.bak484.00 B14-09-06 10:46
multicast.a1.04 kB25-10-06 10:27
_desktop.ini10.00 B25-10-06 08:28
<multicast>0.00 B25-10-06 10:27
Makefile757.00 B14-09-06 10:46
Makefile.bak954.00 B14-09-06 10:46
rtcp.a10.47 kB25-10-06 10:27
RTCP_get_fract_lost.c1.37 kB14-09-06 10:46
RTCP_get_fract_lost.o868.00 B25-10-06 10:27
RTCP_get_jitter.c1.32 kB14-09-06 10:46
RTCP_get_jitter.o618.00 B25-10-06 10:27
RTCP_get_pkt_lost.c1.32 kB14-09-06 10:46
RTCP_get_pkt_lost.o622.00 B25-10-06 10:27
RTCP_get_RR_received.c1.34 kB14-09-06 10:46
RTCP_get_RR_received.o628.00 B25-10-06 10:27
RTCP_get_total_packet.c1.34 kB14-09-06 10:46
RTCP_get_total_packet.o630.00 B25-10-06 10:27
RTCP_get_total_payload_octet.c1.36 kB14-09-06 10:46
RTCP_get_total_payload_octet.o644.00 B25-10-06 10:27
RTCP_handler.c2.68 kB14-09-06 10:46
RTCP_handler.o1.38 kB25-10-06 10:27
RTCP_recv_packet.c6.62 kB14-09-06 10:46
RTCP_recv_packet.o1.83 kB25-10-06 10:27
RTCP_send_packet.c6.15 kB14-09-06 10:46
RTCP_send_packet.o2.30 kB25-10-06 10:27
_desktop.ini10.00 B25-10-06 08:28
<rtcp>0.00 B25-10-06 10:27
Makefile587.00 B14-09-06 10:46
Makefile.bak784.00 B14-09-06 10:46
rtp.a9.03 kB25-10-06 10:27
RTP_get_port_pair.c1.62 kB14-09-06 10:46
RTP_get_port_pair.o872.00 B25-10-06 10:27
RTP_port_pool_init.c1.45 kB14-09-06 10:46
RTP_port_pool_init.o824.00 B25-10-06 10:27
RTP_recv.c2.07 kB14-09-06 10:46
RTP_recv.o848.00 B25-10-06 10:27
RTP_release_port_pair.c1.56 kB14-09-06 10:46
RTP_release_port_pair.o856.00 B25-10-06 10:27
RTP_sendto.c2.59 kB14-09-06 10:46
RTP_sendto.o1,016.00 B25-10-06 10:27
RTP_send_packet.c6.36 kB15-09-06 19:48
RTP_send_packet.o2.66 kB25-10-06 10:27
RTP_session_destroy.c3.50 kB14-09-06 10:46
RTP_session_destroy.o1.24 kB25-10-06 10:27
_desktop.ini10.00 B25-10-06 08:28
<rtp>0.00 B25-10-06 10:27
add_time_stamp.c1.65 kB14-09-06 10:46
add_time_stamp.o1.04 kB25-10-06 10:27
bwrite.c1.86 kB15-09-06 19:28
bwrite.o1,020.00 B25-10-06 10:27
get_stat.c3.07 kB14-09-06 10:46
get_stat.o2.61 kB25-10-06 10:27
Makefile1.68 kB14-09-06 10:46
Makefile.bak1.87 kB14-09-06 10:46
max_connection.c1.36 kB14-09-06 10:46
max_connection.o796.00 B25-10-06 10:27
parse_url.c4.45 kB14-09-06 10:46
parse_url.o1.77 kB25-10-06 10:27
rtsp.a57.07 kB25-10-06 10:27
RTSP_describe.c6.43 kB15-09-06 15:59
RTSP_describe.o2.96 kB25-10-06 10:27
RTSP_discard_msg.c1.42 kB14-09-06 10:46
RTSP_discard_msg.o804.00 B25-10-06 10:27
RTSP_full_msg_rcvd.c6.26 kB14-09-06 15:09
RTSP_full_msg_rcvd.o2.05 kB25-10-06 10:27
RTSP_handler.c5.05 kB13-10-06 15:58
RTSP_handler.o2.13 kB25-10-06 10:27
RTSP_initserver.c1.44 kB14-09-06 10:46
RTSP_initserver.o760.00 B25-10-06 10:27
RTSP_options.c2.60 kB14-09-06 16:38
RTSP_options.o1.56 kB25-10-06 10:27
RTSP_pause.c4.47 kB14-09-06 19:53
RTSP_pause.o2.40 kB25-10-06 10:27
RTSP_play.c12.25 kB13-10-06 20:40
RTSP_play.o4.97 kB25-10-06 10:27
RTSP_remove_msg.c1.53 kB14-09-06 10:46
RTSP_remove_msg.o836.00 B25-10-06 10:27
RTSP_setup.c17.17 kB15-09-06 19:43
RTSP_setup.o6.46 kB25-10-06 10:27
RTSP_state_machine.c7.33 kB13-10-06 16:05
RTSP_state_machine.o3.62 kB25-10-06 10:27
RTSP_teardown.c5.69 kB14-09-06 19:51
RTSP_teardown.o2.64 kB25-10-06 10:27
RTSP_validate_method.c2.90 kB14-09-06 10:46
RTSP_validate_method.o1.60 kB25-10-06 10:27
RTSP_valid_response_msg.c2.31 kB13-10-06 15:58
RTSP_valid_response_msg.o1.20 kB25-10-06 10:27
send_describe_reply.c2.99 kB13-10-06 16:01
send_describe_reply.o1.96 kB25-10-06 10:27
send_options_reply.c1.70 kB14-09-06 20:06
send_options_reply.o1.25 kB25-10-06 10:27
send_pause_reply.c1.91 kB14-09-06 20:06
send_pause_reply.o1.39 kB25-10-06 10:27
send_play_reply.c2.52 kB14-09-06 20:19
send_play_reply.o1.83 kB25-10-06 10:27
send_redirect_3xx.c2.80 kB14-09-06 10:46
send_redirect_3xx.o1.89 kB25-10-06 10:27
send_reply.c2.56 kB14-09-06 19:50
send_reply.o1.74 kB25-10-06 10:27
send_setup_reply.c3.44 kB14-09-06 20:20
send_setup_reply.o1.91 kB25-10-06 10:27
send_teardown_reply.c1.92 kB14-09-06 20:20
send_teardown_reply.o1.40 kB25-10-06 10:27
_desktop.ini10.00 B25-10-06 08:28
<rtsp>0.00 B25-10-06 10:27
Makefile593.00 B14-09-06 10:46
Makefile.bak790.00 B14-09-06 10:46
schedule.a9.15 kB25-10-06 10:28
schedule_add.c2.06 kB15-09-06 10:07
schedule_add.o1.04 kB25-10-06 10:28
schedule_do.c6.32 kB13-10-06 16:29
schedule_do.o2.21 kB25-10-06 10:28
schedule_init.c2.27 kB14-09-06 10:46
schedule_init.o884.00 B25-10-06 10:28
schedule_remove.c1.66 kB14-09-06 10:46
schedule_remove.o728.00 B25-10-06 10:28
schedule_resume.c2.20 kB14-09-06 10:46
schedule_resume.o1.36 kB25-10-06 10:28
schedule_start.c2.95 kB16-09-06 10:34
schedule_start.o1.42 kB25-10-06 10:28
schedule_stop.c1.58 kB14-09-06 10:46
schedule_stop.o840.00 B25-10-06 10:28
_desktop.ini10.00 B25-10-06 08:28
<schedule>0.00 B25-10-06 10:28
get_media_descr.c3.47 kB15-09-06 15:49
get_media_descr.o1.56 kB25-10-06 10:28
get_SDP_descr.c8.88 kB15-09-06 15:27
get_SDP_descr.o4.68 kB25-10-06 10:28
get_SDP_session_id.c1.39 kB14-09-06 10:46
get_SDP_session_id.o968.00 B25-10-06 10:28
get_SDP_user_name.c1.30 kB14-09-06 10:46
get_SDP_user_name.o832.00 B25-10-06 10:28
get_SDP_version.c1.36 kB14-09-06 10:46
get_SDP_version.o964.00 B25-10-06 10:28
Makefile489.00 B14-09-06 10:46
Makefile.bak686.00 B14-09-06 10:46
sdp.a9.54 kB25-10-06 10:28
_desktop.ini10.00 B25-10-06 08:28
<sdp>0.00 B25-10-06 10:28
get_address.c3.91 kB16-09-06 10:42
get_address.o1.71 kB25-10-06 10:27
Makefile700.00 B14-09-06 10:46
socket.a12.80 kB25-10-06 10:27
sock_ntop_host.c2.77 kB14-09-06 10:46
sock_ntop_host.o1.13 kB25-10-06 10:27
tcp_accept.c1.55 kB14-09-06 10:46
tcp_accept.o784.00 B25-10-06 10:27
tcp_close.c1.33 kB14-09-06 10:46
tcp_close.o676.00 B25-10-06 10:27
tcp_connect.c2.34 kB14-09-06 10:46
tcp_connect.o1.41 kB25-10-06 10:27
tcp_listen.c2.44 kB14-09-06 10:46
tcp_listen.o1.35 kB25-10-06 10:27
tcp_read.c1.92 kB14-09-06 20:30
tcp_read.o1.05 kB25-10-06 10:27
tcp_write.c1.42 kB14-09-06 10:46
tcp_write.o676.00 B25-10-06 10:27
udp_close.c1.27 kB14-09-06 10:46
udp_close.o676.00 B25-10-06 10:27
udp_connect.c2.28 kB14-09-06 10:46
udp_connect.o1.23 kB25-10-06 10:27
udp_open.c2.29 kB14-09-06 19:43
udp_open.o1.21 kB25-10-06 10:27
_desktop.ini10.00 B25-10-06 08:28
<socket>0.00 B25-10-06 10:27
alloc_path_name.c2.10 kB16-09-06 19:48
alloc_path_name.o1.20 kB25-10-06 10:28
dump_buffer.c1.30 kB14-09-06 10:46
dump_payload.c2.03 kB14-09-06 10:46
fncheader.c1.77 kB14-09-06 10:46
fncheader.o1.07 kB25-10-06 10:28
fnc_log.c4.35 kB14-09-06 10:46
fnc_log.o2.20 kB25-10-06 10:28
get_UTC_time.c1.85 kB14-09-06 10:46
get_UTC_time.o1.20 kB25-10-06 10:28
is_supported_url.c2.17 kB14-09-06 10:46
is_supported_url.o1.59 kB25-10-06 10:28
log.a2.36 kB25-10-06 10:28
main.c3.08 kB25-10-06 10:58
main.o1.46 kB25-10-06 10:58
Makefile1.27 kB14-09-06 10:46
Makefile.bak1.46 kB14-09-06 10:46
NTP_time.c1.24 kB14-09-06 10:46
NTP_time.o760.00 B25-10-06 10:28
prefs.a8.43 kB25-10-06 10:28
prefs_get_hostname.c1.27 kB14-09-06 10:46
prefs_get_hostname.o724.00 B25-10-06 10:28
prefs_get_log.c1.23 kB14-09-06 10:46
prefs_get_log.o712.00 B25-10-06 10:28
prefs_get_max_session.c1.24 kB14-09-06 10:46
prefs_get_max_session.o732.00 B25-10-06 10:28
prefs_get_port.c1.28 kB14-09-06 10:46
prefs_get_port.o720.00 B25-10-06 10:28
prefs_get_serv_root.c1.28 kB14-09-06 10:46
prefs_get_serv_root.o724.00 B25-10-06 10:28
prefs_init.c5.22 kB14-09-06 10:46
prefs_init.o2.88 kB25-10-06 10:28
prefs_use_default.c2.20 kB14-09-06 10:46
prefs_use_default.o1.23 kB25-10-06 10:28
random32.c2.67 kB15-09-06 09:38
random32.o1.07 kB25-10-06 10:28
utils.a6.34 kB25-10-06 10:28
_desktop.ini10.00 B25-10-06 08:28
<src>0.00 B25-10-06 10:58
_desktop.ini10.00 B25-10-06 08:28
<rtsp_server>0.00 B25-10-06 10:30
...
Sponsored links

uaccess.h (528.37 kB)

Need 2 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D