Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
my_file.c
Package: mysql-4.1.16-win-src.zip [view]
Upload User: romrleung
Upload Date: 2022-05-23
Package Size: 18897k
Code Size: 4k
Category:
MySQL
Development Platform:
Visual C++
- /* Copyright (C) 2000 MySQL AB
- 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.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
- #include "mysys_priv.h"
- #include "my_static.h"
- #include <m_string.h>
- /*
- set how many open files we want to be able to handle
- SYNOPSIS
- set_maximum_open_files()
- max_file_limit Files to open
- NOTES
- The request may not fulfilled becasue of system limitations
- RETURN
- Files available to open.
- May be more or less than max_file_limit!
- */
- #if defined(HAVE_GETRLIMIT) && defined(RLIMIT_NOFILE) && !defined(HAVE_mit_thread)
- #ifndef RLIM_INFINITY
- #define RLIM_INFINITY ((uint) 0xffffffff)
- #endif
- static uint set_max_open_files(uint max_file_limit)
- {
- struct rlimit rlimit;
- uint old_cur;
- DBUG_ENTER("set_max_open_files");
- DBUG_PRINT("enter",("files: %u", max_file_limit));
- if (!getrlimit(RLIMIT_NOFILE,&rlimit))
- {
- old_cur= (uint) rlimit.rlim_cur;
- DBUG_PRINT("info", ("rlim_cur: %u rlim_max: %u",
- (uint) rlimit.rlim_cur,
- (uint) rlimit.rlim_max));
- if (rlimit.rlim_cur == RLIM_INFINITY)
- rlimit.rlim_cur = max_file_limit;
- if (rlimit.rlim_cur >= max_file_limit)
- DBUG_RETURN(rlimit.rlim_cur); /* purecov: inspected */
- rlimit.rlim_cur= rlimit.rlim_max= max_file_limit;
- if (setrlimit(RLIMIT_NOFILE, &rlimit))
- max_file_limit= old_cur; /* Use original value */
- else
- {
- rlimit.rlim_cur= 0; /* Safety if next call fails */
- (void) getrlimit(RLIMIT_NOFILE,&rlimit);
- DBUG_PRINT("info", ("rlim_cur: %u", (uint) rlimit.rlim_cur));
- if (rlimit.rlim_cur) /* If call didn't fail */
- max_file_limit= (uint) rlimit.rlim_cur;
- }
- }
- DBUG_PRINT("exit",("max_file_limit: %u", max_file_limit));
- DBUG_RETURN(max_file_limit);
- }
- #elif defined (OS2)
- static uint set_max_open_files(uint max_file_limit)
- {
- LONG cbReqCount;
- ULONG cbCurMaxFH0;
- APIRET ulrc;
- DBUG_ENTER("set_max_open_files");
- /* get current limit */
- cbReqCount = 0;
- DosSetRelMaxFH( &cbReqCount, &cbCurMaxFH0);
- /* set new limit */
- if ((cbReqCount = max_file_limit - cbCurMaxFH0) > 0)
- ulrc = DosSetRelMaxFH( &cbReqCount, &cbCurMaxFH);
- DBUG_RETURN(cbCurMaxFH0);
- }
- #else
- static int set_max_open_files(uint max_file_limit)
- {
- /* We don't know the limit. Return best guess */
- return min(max_file_limit, OS_FILE_LIMIT);
- }
- #endif
- /*
- Change number of open files
- SYNOPSIS:
- my_set_max_open_files()
- files Number of requested files
- RETURN
- number of files available for open
- */
- uint my_set_max_open_files(uint files)
- {
- struct st_my_file_info *tmp;
- DBUG_ENTER("my_set_max_open_files");
- DBUG_PRINT("enter",("files: %u my_file_limit: %u", files, my_file_limit));
- files= set_max_open_files(min(files, OS_FILE_LIMIT));
- if (files <= MY_NFILE)
- DBUG_RETURN(files);
- if (!(tmp= (struct st_my_file_info*) my_malloc(sizeof(*tmp) * files,
- MYF(MY_WME))))
- DBUG_RETURN(MY_NFILE);
- /* Copy any initialized files */
- memcpy((char*) tmp, (char*) my_file_info, sizeof(*tmp) * my_file_limit);
- my_free_open_file_info(); /* Free if already allocated */
- my_file_info= tmp;
- my_file_limit= files;
- DBUG_PRINT("exit",("files: %u", files));
- DBUG_RETURN(files);
- }
- void my_free_open_file_info()
- {
- DBUG_ENTER("my_free_file_info");
- if (my_file_info != my_file_info_default)
- {
- my_free((char*) my_file_info, MYF(0));
- my_file_info= my_file_info_default;
- }
- DBUG_VOID_RETURN;
- }