⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crt.c

📁 ndis在linux下的无线网卡驱动源码
💻 C
字号:
/* *  Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *  GNU General Public License for more details. * */#include "ntoskernel.h"noregparm INT WIN_FUNC(_win_sprintf,12)	(char *buf, const char *format, ...){	va_list args;	int res;	va_start(args, format);	res = vsprintf(buf, format, args);	va_end(args);	TRACE2("buf: %p: %s", buf, buf);	return res;}noregparm INT WIN_FUNC(swprintf,12)	(wchar_t *buf, const wchar_t *format, ...){	TODO();	EXIT2(return 0);}noregparm INT WIN_FUNC(_win_vsprintf,3)	(char *str, const char *format, va_list ap){	INT i;	i = vsprintf(str, format, ap);	TRACE2("str: %p: %s", str, str);	EXIT2(return i);}noregparm INT WIN_FUNC(_win_snprintf,12)	(char *buf, SIZE_T count, const char *format, ...){	va_list args;	int res;	va_start(args, format);	res = vsnprintf(buf, count, format, args);	va_end(args);	TRACE2("buf: %p: %s", buf, buf);	return res;}noregparm INT WIN_FUNC(_win__snprintf,12)	(char *buf, SIZE_T count, const char *format, ...){	va_list args;	int res;	va_start(args, format);	res = vsnprintf(buf, count, format, args);	va_end(args);	TRACE2("buf: %p: %s", buf, buf);	return res;}noregparm INT WIN_FUNC(_win_vsnprintf,4)	(char *str, SIZE_T size, const char *format, va_list ap){	INT i;	i = vsnprintf(str, size, format, ap);	TRACE2("str: %p: %s", str, str);	EXIT2(return i);}noregparm INT WIN_FUNC(_win__vsnprintf,4)	(char *str, SIZE_T size, const char *format, va_list ap){	INT i;	i = vsnprintf(str, size, format, ap);	TRACE2("str: %p: %s", str, str);	EXIT2(return i);}noregparm char *WIN_FUNC(_win_strncpy,3)	(char *dst, char *src, SIZE_T n){	return strncpy(dst, src, n);}noregparm SIZE_T WIN_FUNC(_win_strlen,1)	(const char *s){	return strlen(s);}noregparm INT WIN_FUNC(_win_strncmp,3)	(const char *s1, const char *s2, SIZE_T n){	return strncmp(s1, s2, n);}noregparm INT WIN_FUNC(_win_strcmp,2)	(const char *s1, const char *s2){	return strcmp(s1, s2);}noregparm INT WIN_FUNC(_win_stricmp,2)	(const char *s1, const char *s2){	return stricmp(s1, s2);}noregparm char *WIN_FUNC(_win_strncat,3)	(char *dest, const char *src, SIZE_T n){	return strncat(dest, src, n);}noregparm INT WIN_FUNC(_win_wcscmp,2)	(const wchar_t *s1, const wchar_t *s2){	while (*s1 && *s1 == *s2) {		s1++;		s2++;	}	return *s1 - *s2;}noregparm INT WIN_FUNC(_win_wcsicmp,2)	(const wchar_t *s1, const wchar_t *s2){	while (*s1 && tolower((char)*s1) == tolower((char)*s2)) {		s1++;		s2++;	}	return tolower((char)*s1) - tolower((char)*s2);}noregparm SIZE_T WIN_FUNC(_win_wcslen,1)	(const wchar_t *s){	const wchar_t *t = s;	while (*t)		t++;	return t - s;}noregparm wchar_t *WIN_FUNC(_win_wcsncpy,3)	(wchar_t *dest, const wchar_t *src, SIZE_T n){	const wchar_t *s;	wchar_t *d;	s = src + n;	d = dest;	while (src < s && (*d++ = *src++))		;	if (s > src)		memset(d, 0, (s - src) * sizeof(wchar_t));	return dest;}noregparm wchar_t *WIN_FUNC(_win_wcscpy,2)	(wchar_t *dest, const wchar_t *src){	wchar_t *d = dest;	while ((*d++ = *src++))	       ;	return dest;}noregparm wchar_t *WIN_FUNC(_win_wcscat,2)	(wchar_t *dest, const wchar_t *src){	wchar_t *d;	d = dest;	while (*d)		d++;	while ((*d++ = *src++))		;	return dest;}noregparm INT WIN_FUNC(_win_towupper,1)	(wchar_t c){	return toupper(c);}noregparm INT WIN_FUNC(_win_towlower,1)	(wchar_t c){	return tolower(c);}noregparm INT WIN_FUNC(_win_tolower,1)	(INT c){	return tolower(c);}noregparm INT WIN_FUNC(_win_toupper,1)	(INT c){	return toupper(c);}noregparm void *WIN_FUNC(_win_strcpy,2)	(void *to, const void *from){	return strcpy(to, from);}noregparm char *WIN_FUNC(_win_strstr,2)	(const char *s1, const char *s2){	return strstr(s1, s2);}noregparm char *WIN_FUNC(_win_strchr,2)	(const char *s, int c){	return strchr(s, c);}noregparm char *WIN_FUNC(_win_strrchr,2)	(const char *s, int c){	return strrchr(s, c);}noregparm void *WIN_FUNC(_win_memmove,3)	(void *to, void *from, SIZE_T count){	return memmove(to, from, count);}noregparm void *WIN_FUNC(_win_memchr,3)	(const void *s, INT c, SIZE_T n){	return memchr(s, c, n);}noregparm void *WIN_FUNC(_win_memcpy,3)	(void *to, const void *from, SIZE_T n){	return memcpy(to, from, n);}noregparm void *WIN_FUNC(_win_memset,3)	(void *s, char c, SIZE_T count){	return memset(s, c, count);}noregparm void WIN_FUNC(_win_srand,1)	(UINT seed){	net_srandom(seed);}noregparm int WIN_FUNC(rand,0)	(void){	char buf[6];	int i, n;	get_random_bytes(buf, sizeof(buf));	for (n = i = 0; i < sizeof(buf) ; i++)		n += buf[i];	return n;}noregparm int WIN_FUNC(_win_atoi,1)	(const char *ptr){	int i = simple_strtol(ptr, NULL, 10);	return i;}noregparm int WIN_FUNC(_win_isprint,1)	(int c){	return isprint(c);}wstdcall s64 WIN_FUNC(_alldiv,2)	(s64 a, s64 b){	return (a / b);}wstdcall u64 WIN_FUNC(_aulldiv,2)	(u64 a, u64 b){	return (a / b);}wstdcall s64 WIN_FUNC(_allmul,2)	(s64 a, s64 b){	return (a * b);}wstdcall u64 WIN_FUNC(_aullmul,2)	(u64 a, u64 b){	return (a * b);}wstdcall s64 WIN_FUNC(_allrem,2)	(s64 a, s64 b){	return (a % b);}wstdcall u64 WIN_FUNC(_aullrem,2)	(u64 a, u64 b){	return (a % b);}__attribute__((regparm(3))) s64 WIN_FUNC(_allshl,2)	(s64 a, u8 b){	return (a << b);}__attribute__((regparm(3))) u64 WIN_FUNC(_aullshl,2)	(u64 a, u8 b){	return (a << b);}__attribute__((regparm(3))) s64 WIN_FUNC(_allshr,2)	(s64 a, u8 b){	return (a >> b);}__attribute__((regparm(3))) u64 WIN_FUNC(_aullshr,2)	(u64 a, u8 b){	return (a >> b);}int stricmp(const char *s1, const char *s2){	while (*s1 && tolower(*s1) == tolower(*s2)) {		s1++;		s2++;	}	return *s1 - *s2;}void dump_bytes(const char *ctx, const u8 *from, int len){	int i, j;	u8 *buf;	buf = kmalloc(len * 3 + 1, gfp_irql());	if (!buf) {		ERROR("couldn't allocate memory");		return;	}	for (i = j = 0; i < len; i++, j += 3) {		sprintf(&buf[j], "%02x ", from[i]);	}	buf[j] = 0;	printk(KERN_DEBUG "%s: %p: %s\n", ctx, from, buf);	kfree(buf);}#include "crt_exports.h"int crt_init(void){	return 0;}/* called when module is being removed */void crt_exit(void){	EXIT4(return);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -